Selaa lähdekoodia

unix: add perf event ioctl constants on Linux

Add the PERF_EVENT_IOC_* constants on Linux which are used to
enable/disable/configure perf events. Also add the PERF_IOC_FLAG_GROUP
constant which might be using as part of the ioct argument. See section
"perf_event ioctl calls" in
http://man7.org/linux/man-pages/man2/perf_event_open.2.html

Change-Id: I92fb8f6ef5cc53711f00db566d8e277cdf1cd607
Reviewed-on: https://go-review.googlesource.com/47770
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Tobias Klauser 8 vuotta sitten
vanhempi
commit
739734461d

+ 3 - 0
unix/linux/types.go

@@ -47,6 +47,7 @@ package unix
 #include <linux/filter.h>
 #include <linux/keyctl.h>
 #include <linux/netlink.h>
+#include <linux/perf_event.h>
 #include <linux/rtnetlink.h>
 #include <linux/icmpv6.h>
 #include <asm/termbits.h>
@@ -533,6 +534,8 @@ type Sigset_t C.sigset_t
 
 const RNDGETENTCNT = C.RNDGETENTCNT
 
+const PERF_IOC_FLAG_GROUP = C.PERF_IOC_FLAG_GROUP
+
 // sysconf information
 
 const _SC_PAGESIZE = C._SC_PAGESIZE

+ 2 - 0
unix/mkerrors.sh

@@ -166,6 +166,7 @@ struct ltchars {
 #include <linux/fs.h>
 #include <linux/keyctl.h>
 #include <linux/netlink.h>
+#include <linux/perf_event.h>
 #include <linux/random.h>
 #include <linux/reboot.h>
 #include <linux/rtnetlink.h>
@@ -404,6 +405,7 @@ ccflags="$@"
 		$2 ~ /^GRND_/ ||
 		$2 ~ /^KEY_(SPEC|REQKEY_DEFL)_/ ||
 		$2 ~ /^KEYCTL_/ ||
+		$2 ~ /^PERF_EVENT_IOC_/ ||
 		$2 ~ /^SECCOMP_MODE_/ ||
 		$2 ~ /^SPLICE_/ ||
 		$2 ~ /^(VM|VMADDR)_/ ||

+ 10 - 0
unix/zerrors_linux_386.go

@@ -1056,6 +1056,16 @@ const (
 	PARMRK                               = 0x8
 	PARODD                               = 0x200
 	PENDIN                               = 0x4000
+	PERF_EVENT_IOC_DISABLE               = 0x2401
+	PERF_EVENT_IOC_ENABLE                = 0x2400
+	PERF_EVENT_IOC_ID                    = 0x80042407
+	PERF_EVENT_IOC_PAUSE_OUTPUT          = 0x40042409
+	PERF_EVENT_IOC_PERIOD                = 0x40082404
+	PERF_EVENT_IOC_REFRESH               = 0x2402
+	PERF_EVENT_IOC_RESET                 = 0x2403
+	PERF_EVENT_IOC_SET_BPF               = 0x40042408
+	PERF_EVENT_IOC_SET_FILTER            = 0x40042406
+	PERF_EVENT_IOC_SET_OUTPUT            = 0x2405
 	PRIO_PGRP                            = 0x1
 	PRIO_PROCESS                         = 0x0
 	PRIO_USER                            = 0x2

+ 10 - 0
unix/zerrors_linux_amd64.go

@@ -1056,6 +1056,16 @@ const (
 	PARMRK                               = 0x8
 	PARODD                               = 0x200
 	PENDIN                               = 0x4000
+	PERF_EVENT_IOC_DISABLE               = 0x2401
+	PERF_EVENT_IOC_ENABLE                = 0x2400
+	PERF_EVENT_IOC_ID                    = 0x80082407
+	PERF_EVENT_IOC_PAUSE_OUTPUT          = 0x40042409
+	PERF_EVENT_IOC_PERIOD                = 0x40082404
+	PERF_EVENT_IOC_REFRESH               = 0x2402
+	PERF_EVENT_IOC_RESET                 = 0x2403
+	PERF_EVENT_IOC_SET_BPF               = 0x40042408
+	PERF_EVENT_IOC_SET_FILTER            = 0x40082406
+	PERF_EVENT_IOC_SET_OUTPUT            = 0x2405
 	PRIO_PGRP                            = 0x1
 	PRIO_PROCESS                         = 0x0
 	PRIO_USER                            = 0x2

+ 10 - 0
unix/zerrors_linux_arm.go

@@ -1055,6 +1055,16 @@ const (
 	PARMRK                               = 0x8
 	PARODD                               = 0x200
 	PENDIN                               = 0x4000
+	PERF_EVENT_IOC_DISABLE               = 0x2401
+	PERF_EVENT_IOC_ENABLE                = 0x2400
+	PERF_EVENT_IOC_ID                    = 0x80042407
+	PERF_EVENT_IOC_PAUSE_OUTPUT          = 0x40042409
+	PERF_EVENT_IOC_PERIOD                = 0x40082404
+	PERF_EVENT_IOC_REFRESH               = 0x2402
+	PERF_EVENT_IOC_RESET                 = 0x2403
+	PERF_EVENT_IOC_SET_BPF               = 0x40042408
+	PERF_EVENT_IOC_SET_FILTER            = 0x40042406
+	PERF_EVENT_IOC_SET_OUTPUT            = 0x2405
 	PRIO_PGRP                            = 0x1
 	PRIO_PROCESS                         = 0x0
 	PRIO_USER                            = 0x2

+ 10 - 0
unix/zerrors_linux_arm64.go

@@ -1056,6 +1056,16 @@ const (
 	PARMRK                               = 0x8
 	PARODD                               = 0x200
 	PENDIN                               = 0x4000
+	PERF_EVENT_IOC_DISABLE               = 0x2401
+	PERF_EVENT_IOC_ENABLE                = 0x2400
+	PERF_EVENT_IOC_ID                    = 0x80082407
+	PERF_EVENT_IOC_PAUSE_OUTPUT          = 0x40042409
+	PERF_EVENT_IOC_PERIOD                = 0x40082404
+	PERF_EVENT_IOC_REFRESH               = 0x2402
+	PERF_EVENT_IOC_RESET                 = 0x2403
+	PERF_EVENT_IOC_SET_BPF               = 0x40042408
+	PERF_EVENT_IOC_SET_FILTER            = 0x40082406
+	PERF_EVENT_IOC_SET_OUTPUT            = 0x2405
 	PRIO_PGRP                            = 0x1
 	PRIO_PROCESS                         = 0x0
 	PRIO_USER                            = 0x2

+ 10 - 0
unix/zerrors_linux_mips.go

@@ -1056,6 +1056,16 @@ const (
 	PARMRK                               = 0x8
 	PARODD                               = 0x200
 	PENDIN                               = 0x4000
+	PERF_EVENT_IOC_DISABLE               = 0x20002401
+	PERF_EVENT_IOC_ENABLE                = 0x20002400
+	PERF_EVENT_IOC_ID                    = 0x40042407
+	PERF_EVENT_IOC_PAUSE_OUTPUT          = 0x80042409
+	PERF_EVENT_IOC_PERIOD                = 0x80082404
+	PERF_EVENT_IOC_REFRESH               = 0x20002402
+	PERF_EVENT_IOC_RESET                 = 0x20002403
+	PERF_EVENT_IOC_SET_BPF               = 0x80042408
+	PERF_EVENT_IOC_SET_FILTER            = 0x80042406
+	PERF_EVENT_IOC_SET_OUTPUT            = 0x20002405
 	PRIO_PGRP                            = 0x1
 	PRIO_PROCESS                         = 0x0
 	PRIO_USER                            = 0x2

+ 10 - 0
unix/zerrors_linux_mips64.go

@@ -1056,6 +1056,16 @@ const (
 	PARMRK                               = 0x8
 	PARODD                               = 0x200
 	PENDIN                               = 0x4000
+	PERF_EVENT_IOC_DISABLE               = 0x20002401
+	PERF_EVENT_IOC_ENABLE                = 0x20002400
+	PERF_EVENT_IOC_ID                    = 0x40082407
+	PERF_EVENT_IOC_PAUSE_OUTPUT          = 0x80042409
+	PERF_EVENT_IOC_PERIOD                = 0x80082404
+	PERF_EVENT_IOC_REFRESH               = 0x20002402
+	PERF_EVENT_IOC_RESET                 = 0x20002403
+	PERF_EVENT_IOC_SET_BPF               = 0x80042408
+	PERF_EVENT_IOC_SET_FILTER            = 0x80082406
+	PERF_EVENT_IOC_SET_OUTPUT            = 0x20002405
 	PRIO_PGRP                            = 0x1
 	PRIO_PROCESS                         = 0x0
 	PRIO_USER                            = 0x2

+ 10 - 0
unix/zerrors_linux_mips64le.go

@@ -1056,6 +1056,16 @@ const (
 	PARMRK                               = 0x8
 	PARODD                               = 0x200
 	PENDIN                               = 0x4000
+	PERF_EVENT_IOC_DISABLE               = 0x20002401
+	PERF_EVENT_IOC_ENABLE                = 0x20002400
+	PERF_EVENT_IOC_ID                    = 0x40082407
+	PERF_EVENT_IOC_PAUSE_OUTPUT          = 0x80042409
+	PERF_EVENT_IOC_PERIOD                = 0x80082404
+	PERF_EVENT_IOC_REFRESH               = 0x20002402
+	PERF_EVENT_IOC_RESET                 = 0x20002403
+	PERF_EVENT_IOC_SET_BPF               = 0x80042408
+	PERF_EVENT_IOC_SET_FILTER            = 0x80082406
+	PERF_EVENT_IOC_SET_OUTPUT            = 0x20002405
 	PRIO_PGRP                            = 0x1
 	PRIO_PROCESS                         = 0x0
 	PRIO_USER                            = 0x2

+ 10 - 0
unix/zerrors_linux_mipsle.go

@@ -1056,6 +1056,16 @@ const (
 	PARMRK                               = 0x8
 	PARODD                               = 0x200
 	PENDIN                               = 0x4000
+	PERF_EVENT_IOC_DISABLE               = 0x20002401
+	PERF_EVENT_IOC_ENABLE                = 0x20002400
+	PERF_EVENT_IOC_ID                    = 0x40042407
+	PERF_EVENT_IOC_PAUSE_OUTPUT          = 0x80042409
+	PERF_EVENT_IOC_PERIOD                = 0x80082404
+	PERF_EVENT_IOC_REFRESH               = 0x20002402
+	PERF_EVENT_IOC_RESET                 = 0x20002403
+	PERF_EVENT_IOC_SET_BPF               = 0x80042408
+	PERF_EVENT_IOC_SET_FILTER            = 0x80042406
+	PERF_EVENT_IOC_SET_OUTPUT            = 0x20002405
 	PRIO_PGRP                            = 0x1
 	PRIO_PROCESS                         = 0x0
 	PRIO_USER                            = 0x2

+ 10 - 0
unix/zerrors_linux_ppc64.go

@@ -1057,6 +1057,16 @@ const (
 	PARMRK                               = 0x8
 	PARODD                               = 0x2000
 	PENDIN                               = 0x20000000
+	PERF_EVENT_IOC_DISABLE               = 0x20002401
+	PERF_EVENT_IOC_ENABLE                = 0x20002400
+	PERF_EVENT_IOC_ID                    = 0x40082407
+	PERF_EVENT_IOC_PAUSE_OUTPUT          = 0x80042409
+	PERF_EVENT_IOC_PERIOD                = 0x80082404
+	PERF_EVENT_IOC_REFRESH               = 0x20002402
+	PERF_EVENT_IOC_RESET                 = 0x20002403
+	PERF_EVENT_IOC_SET_BPF               = 0x80042408
+	PERF_EVENT_IOC_SET_FILTER            = 0x80082406
+	PERF_EVENT_IOC_SET_OUTPUT            = 0x20002405
 	PRIO_PGRP                            = 0x1
 	PRIO_PROCESS                         = 0x0
 	PRIO_USER                            = 0x2

+ 10 - 0
unix/zerrors_linux_ppc64le.go

@@ -1057,6 +1057,16 @@ const (
 	PARMRK                               = 0x8
 	PARODD                               = 0x2000
 	PENDIN                               = 0x20000000
+	PERF_EVENT_IOC_DISABLE               = 0x20002401
+	PERF_EVENT_IOC_ENABLE                = 0x20002400
+	PERF_EVENT_IOC_ID                    = 0x40082407
+	PERF_EVENT_IOC_PAUSE_OUTPUT          = 0x80042409
+	PERF_EVENT_IOC_PERIOD                = 0x80082404
+	PERF_EVENT_IOC_REFRESH               = 0x20002402
+	PERF_EVENT_IOC_RESET                 = 0x20002403
+	PERF_EVENT_IOC_SET_BPF               = 0x80042408
+	PERF_EVENT_IOC_SET_FILTER            = 0x80082406
+	PERF_EVENT_IOC_SET_OUTPUT            = 0x20002405
 	PRIO_PGRP                            = 0x1
 	PRIO_PROCESS                         = 0x0
 	PRIO_USER                            = 0x2

+ 10 - 0
unix/zerrors_linux_s390x.go

@@ -1055,6 +1055,16 @@ const (
 	PARMRK                               = 0x8
 	PARODD                               = 0x200
 	PENDIN                               = 0x4000
+	PERF_EVENT_IOC_DISABLE               = 0x2401
+	PERF_EVENT_IOC_ENABLE                = 0x2400
+	PERF_EVENT_IOC_ID                    = 0x80082407
+	PERF_EVENT_IOC_PAUSE_OUTPUT          = 0x40042409
+	PERF_EVENT_IOC_PERIOD                = 0x40082404
+	PERF_EVENT_IOC_REFRESH               = 0x2402
+	PERF_EVENT_IOC_RESET                 = 0x2403
+	PERF_EVENT_IOC_SET_BPF               = 0x40042408
+	PERF_EVENT_IOC_SET_FILTER            = 0x40082406
+	PERF_EVENT_IOC_SET_OUTPUT            = 0x2405
 	PRIO_PGRP                            = 0x1
 	PRIO_PROCESS                         = 0x0
 	PRIO_USER                            = 0x2

+ 2 - 0
unix/ztypes_linux_386.go

@@ -662,6 +662,8 @@ type Sigset_t struct {
 
 const RNDGETENTCNT = 0x80045200
 
+const PERF_IOC_FLAG_GROUP = 0x1
+
 const _SC_PAGESIZE = 0x1e
 
 type Termios struct {

+ 2 - 0
unix/ztypes_linux_amd64.go

@@ -680,6 +680,8 @@ type Sigset_t struct {
 
 const RNDGETENTCNT = 0x80045200
 
+const PERF_IOC_FLAG_GROUP = 0x1
+
 const _SC_PAGESIZE = 0x1e
 
 type Termios struct {

+ 2 - 0
unix/ztypes_linux_arm.go

@@ -651,6 +651,8 @@ type Sigset_t struct {
 
 const RNDGETENTCNT = 0x80045200
 
+const PERF_IOC_FLAG_GROUP = 0x1
+
 const _SC_PAGESIZE = 0x1e
 
 type Termios struct {

+ 2 - 0
unix/ztypes_linux_arm64.go

@@ -659,6 +659,8 @@ type Sigset_t struct {
 
 const RNDGETENTCNT = 0x80045200
 
+const PERF_IOC_FLAG_GROUP = 0x1
+
 const _SC_PAGESIZE = 0x1e
 
 type Termios struct {

+ 2 - 0
unix/ztypes_linux_mips.go

@@ -656,6 +656,8 @@ type Sigset_t struct {
 
 const RNDGETENTCNT = 0x40045200
 
+const PERF_IOC_FLAG_GROUP = 0x1
+
 const _SC_PAGESIZE = 0x1e
 
 type Termios struct {

+ 2 - 0
unix/ztypes_linux_mips64.go

@@ -661,6 +661,8 @@ type Sigset_t struct {
 
 const RNDGETENTCNT = 0x40045200
 
+const PERF_IOC_FLAG_GROUP = 0x1
+
 const _SC_PAGESIZE = 0x1e
 
 type Termios struct {

+ 2 - 0
unix/ztypes_linux_mips64le.go

@@ -661,6 +661,8 @@ type Sigset_t struct {
 
 const RNDGETENTCNT = 0x40045200
 
+const PERF_IOC_FLAG_GROUP = 0x1
+
 const _SC_PAGESIZE = 0x1e
 
 type Termios struct {

+ 2 - 0
unix/ztypes_linux_mipsle.go

@@ -656,6 +656,8 @@ type Sigset_t struct {
 
 const RNDGETENTCNT = 0x40045200
 
+const PERF_IOC_FLAG_GROUP = 0x1
+
 const _SC_PAGESIZE = 0x1e
 
 type Termios struct {

+ 2 - 0
unix/ztypes_linux_ppc64.go

@@ -669,6 +669,8 @@ type Sigset_t struct {
 
 const RNDGETENTCNT = 0x40045200
 
+const PERF_IOC_FLAG_GROUP = 0x1
+
 const _SC_PAGESIZE = 0x1e
 
 type Termios struct {

+ 2 - 0
unix/ztypes_linux_ppc64le.go

@@ -669,6 +669,8 @@ type Sigset_t struct {
 
 const RNDGETENTCNT = 0x40045200
 
+const PERF_IOC_FLAG_GROUP = 0x1
+
 const _SC_PAGESIZE = 0x1e
 
 type Termios struct {

+ 2 - 0
unix/ztypes_linux_s390x.go

@@ -686,6 +686,8 @@ type Sigset_t struct {
 
 const RNDGETENTCNT = 0x80045200
 
+const PERF_IOC_FLAG_GROUP = 0x1
+
 const _SC_PAGESIZE = 0x1e
 
 type Termios struct {