From 447e172205c2866523129ecd0048c9ed2fd1a580 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Wed, 16 Nov 2016 10:04:27 +0100 Subject: [PATCH] sys: improve perf_event_open description --- sys/perf.txt | 25 ++++++++++++++++++------- sys/perf_amd64.const | 40 ++++++++++++++++++++++++++++++++++++++++ sys/perf_arm64.const | 40 ++++++++++++++++++++++++++++++++++++++++ sys/perf_ppc64le.const | 40 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 138 insertions(+), 7 deletions(-) diff --git a/sys/perf.txt b/sys/perf.txt index e35ad22b..1f94d746 100644 --- a/sys/perf.txt +++ b/sys/perf.txt @@ -21,15 +21,24 @@ ioctl$PERF_EVENT_IOC_SET_BPF(fd fd_perf, cmd const[PERF_EVENT_IOC_SET_BPF], prog perf_flags = PERF_FLAG_FD_NO_GROUP, PERF_FLAG_FD_OUTPUT, PERF_FLAG_PID_CGROUP, PERF_FLAG_FD_CLOEXEC perf_event_type = PERF_TYPE_HARDWARE, PERF_TYPE_SOFTWARE, PERF_TYPE_TRACEPOINT, PERF_TYPE_HW_CACHE, PERF_TYPE_RAW, PERF_TYPE_BREAKPOINT perf_bp_type = HW_BREAKPOINT_EMPTY, HW_BREAKPOINT_R, HW_BREAKPOINT_W, HW_BREAKPOINT_X -perf_attr_flags = 1, 2, 4 +perf_sample_type = PERF_SAMPLE_IP, PERF_SAMPLE_TID, PERF_SAMPLE_TIME, PERF_SAMPLE_ADDR, PERF_SAMPLE_READ, PERF_SAMPLE_CALLCHAIN, PERF_SAMPLE_ID, PERF_SAMPLE_CPU, PERF_SAMPLE_PERIOD, PERF_SAMPLE_STREAM_ID, PERF_SAMPLE_RAW, PERF_SAMPLE_BRANCH_STACK, PERF_SAMPLE_REGS_USER, PERF_SAMPLE_STACK_USER, PERF_SAMPLE_WEIGHT, PERF_SAMPLE_DATA_SRC, PERF_SAMPLE_IDENTIFIER, PERF_SAMPLE_TRANSACTION, PERF_SAMPLE_REGS_INTR +perf_read_format = PERF_FORMAT_TOTAL_TIME_ENABLED, PERF_FORMAT_TOTAL_TIME_RUNNING, PERF_FORMAT_ID, PERF_FORMAT_GROUP +perf_branch_sample_type = PERF_SAMPLE_BRANCH_USER, PERF_SAMPLE_BRANCH_KERNEL, PERF_SAMPLE_BRANCH_HV, PERF_SAMPLE_BRANCH_ANY, PERF_SAMPLE_BRANCH_ANY_CALL, PERF_SAMPLE_BRANCH_ANY_RETURN, PERF_SAMPLE_BRANCH_IND_CALL, PERF_SAMPLE_BRANCH_ABORT_TX, PERF_SAMPLE_BRANCH_IN_TX, PERF_SAMPLE_BRANCH_NO_TX, PERF_SAMPLE_BRANCH_COND, PERF_SAMPLE_BRANCH_CALL_STACK, PERF_SAMPLE_BRANCH_IND_JUMP, PERF_SAMPLE_BRANCH_CALL, PERF_SAMPLE_BRANCH_NO_FLAGS, PERF_SAMPLE_BRANCH_NO_CYCLES, PERF_SAMPLE_BRANCH_MAX +perf_attr_flags = 1, 2, 4, 8 perf_event_attr { type flags[perf_event_type, int32] size len[parent, int32] - config int64 +#TODO: config can contain lots of various flags depending on type. +# this is a hacky way to generate something reasonable. + config0 int8 + config1 int8 + config2 int8 + config3 int8 + config4 const[0, int32] freq int64 - sample int64 - format int64 + sample flags[perf_sample_type, int64] + format flags[perf_read_format, int64] # Lots of various bit flags. # Split into int8's because for int64 large values generated less frequently than small ones. # Kernel checks that unused bits are zero. @@ -40,12 +49,14 @@ perf_event_attr { freserv const[0, int32] wakeup int32 bptype flags[perf_bp_type, int32] - config1 int64 - config2 int64 - bsample int64 + config5 int64 + config6 int64 + bsample flags[perf_branch_sample_type, int64] regs int64 stack int64 clockid flags[clock_type, int32] regs2 int64 auxwm int32 + maxstk int16 + reserv const[0, int16] } diff --git a/sys/perf_amd64.const b/sys/perf_amd64.const index 7f12e729..f9e35f6d 100644 --- a/sys/perf_amd64.const +++ b/sys/perf_amd64.const @@ -16,6 +16,46 @@ PERF_FLAG_FD_CLOEXEC = 8 PERF_FLAG_FD_NO_GROUP = 1 PERF_FLAG_FD_OUTPUT = 2 PERF_FLAG_PID_CGROUP = 4 +PERF_FORMAT_GROUP = 8 +PERF_FORMAT_ID = 4 +PERF_FORMAT_TOTAL_TIME_ENABLED = 1 +PERF_FORMAT_TOTAL_TIME_RUNNING = 2 +PERF_SAMPLE_ADDR = 8 +PERF_SAMPLE_BRANCH_ABORT_TX = 128 +PERF_SAMPLE_BRANCH_ANY = 8 +PERF_SAMPLE_BRANCH_ANY_CALL = 16 +PERF_SAMPLE_BRANCH_ANY_RETURN = 32 +PERF_SAMPLE_BRANCH_CALL = 8192 +PERF_SAMPLE_BRANCH_CALL_STACK = 2048 +PERF_SAMPLE_BRANCH_COND = 1024 +PERF_SAMPLE_BRANCH_HV = 4 +PERF_SAMPLE_BRANCH_IND_CALL = 64 +PERF_SAMPLE_BRANCH_IND_JUMP = 4096 +PERF_SAMPLE_BRANCH_IN_TX = 256 +PERF_SAMPLE_BRANCH_KERNEL = 2 +PERF_SAMPLE_BRANCH_MAX = 65536 +PERF_SAMPLE_BRANCH_NO_CYCLES = 32768 +PERF_SAMPLE_BRANCH_NO_FLAGS = 16384 +PERF_SAMPLE_BRANCH_NO_TX = 512 +PERF_SAMPLE_BRANCH_STACK = 2048 +PERF_SAMPLE_BRANCH_USER = 1 +PERF_SAMPLE_CALLCHAIN = 32 +PERF_SAMPLE_CPU = 128 +PERF_SAMPLE_DATA_SRC = 32768 +PERF_SAMPLE_ID = 64 +PERF_SAMPLE_IDENTIFIER = 65536 +PERF_SAMPLE_IP = 1 +PERF_SAMPLE_PERIOD = 256 +PERF_SAMPLE_RAW = 1024 +PERF_SAMPLE_READ = 16 +PERF_SAMPLE_REGS_INTR = 262144 +PERF_SAMPLE_REGS_USER = 4096 +PERF_SAMPLE_STACK_USER = 8192 +PERF_SAMPLE_STREAM_ID = 512 +PERF_SAMPLE_TID = 2 +PERF_SAMPLE_TIME = 4 +PERF_SAMPLE_TRANSACTION = 131072 +PERF_SAMPLE_WEIGHT = 16384 PERF_TYPE_BREAKPOINT = 5 PERF_TYPE_HARDWARE = 0 PERF_TYPE_HW_CACHE = 3 diff --git a/sys/perf_arm64.const b/sys/perf_arm64.const index b84e84ec..96c6ca29 100644 --- a/sys/perf_arm64.const +++ b/sys/perf_arm64.const @@ -16,6 +16,46 @@ PERF_FLAG_FD_CLOEXEC = 8 PERF_FLAG_FD_NO_GROUP = 1 PERF_FLAG_FD_OUTPUT = 2 PERF_FLAG_PID_CGROUP = 4 +PERF_FORMAT_GROUP = 8 +PERF_FORMAT_ID = 4 +PERF_FORMAT_TOTAL_TIME_ENABLED = 1 +PERF_FORMAT_TOTAL_TIME_RUNNING = 2 +PERF_SAMPLE_ADDR = 8 +PERF_SAMPLE_BRANCH_ABORT_TX = 128 +PERF_SAMPLE_BRANCH_ANY = 8 +PERF_SAMPLE_BRANCH_ANY_CALL = 16 +PERF_SAMPLE_BRANCH_ANY_RETURN = 32 +PERF_SAMPLE_BRANCH_CALL = 8192 +PERF_SAMPLE_BRANCH_CALL_STACK = 2048 +PERF_SAMPLE_BRANCH_COND = 1024 +PERF_SAMPLE_BRANCH_HV = 4 +PERF_SAMPLE_BRANCH_IND_CALL = 64 +PERF_SAMPLE_BRANCH_IND_JUMP = 4096 +PERF_SAMPLE_BRANCH_IN_TX = 256 +PERF_SAMPLE_BRANCH_KERNEL = 2 +PERF_SAMPLE_BRANCH_MAX = 65536 +PERF_SAMPLE_BRANCH_NO_CYCLES = 32768 +PERF_SAMPLE_BRANCH_NO_FLAGS = 16384 +PERF_SAMPLE_BRANCH_NO_TX = 512 +PERF_SAMPLE_BRANCH_STACK = 2048 +PERF_SAMPLE_BRANCH_USER = 1 +PERF_SAMPLE_CALLCHAIN = 32 +PERF_SAMPLE_CPU = 128 +PERF_SAMPLE_DATA_SRC = 32768 +PERF_SAMPLE_ID = 64 +PERF_SAMPLE_IDENTIFIER = 65536 +PERF_SAMPLE_IP = 1 +PERF_SAMPLE_PERIOD = 256 +PERF_SAMPLE_RAW = 1024 +PERF_SAMPLE_READ = 16 +PERF_SAMPLE_REGS_INTR = 262144 +PERF_SAMPLE_REGS_USER = 4096 +PERF_SAMPLE_STACK_USER = 8192 +PERF_SAMPLE_STREAM_ID = 512 +PERF_SAMPLE_TID = 2 +PERF_SAMPLE_TIME = 4 +PERF_SAMPLE_TRANSACTION = 131072 +PERF_SAMPLE_WEIGHT = 16384 PERF_TYPE_BREAKPOINT = 5 PERF_TYPE_HARDWARE = 0 PERF_TYPE_HW_CACHE = 3 diff --git a/sys/perf_ppc64le.const b/sys/perf_ppc64le.const index b21cfad7..0614d297 100644 --- a/sys/perf_ppc64le.const +++ b/sys/perf_ppc64le.const @@ -16,6 +16,46 @@ PERF_FLAG_FD_CLOEXEC = 8 PERF_FLAG_FD_NO_GROUP = 1 PERF_FLAG_FD_OUTPUT = 2 PERF_FLAG_PID_CGROUP = 4 +PERF_FORMAT_GROUP = 8 +PERF_FORMAT_ID = 4 +PERF_FORMAT_TOTAL_TIME_ENABLED = 1 +PERF_FORMAT_TOTAL_TIME_RUNNING = 2 +PERF_SAMPLE_ADDR = 8 +PERF_SAMPLE_BRANCH_ABORT_TX = 128 +PERF_SAMPLE_BRANCH_ANY = 8 +PERF_SAMPLE_BRANCH_ANY_CALL = 16 +PERF_SAMPLE_BRANCH_ANY_RETURN = 32 +PERF_SAMPLE_BRANCH_CALL = 8192 +PERF_SAMPLE_BRANCH_CALL_STACK = 2048 +PERF_SAMPLE_BRANCH_COND = 1024 +PERF_SAMPLE_BRANCH_HV = 4 +PERF_SAMPLE_BRANCH_IND_CALL = 64 +PERF_SAMPLE_BRANCH_IND_JUMP = 4096 +PERF_SAMPLE_BRANCH_IN_TX = 256 +PERF_SAMPLE_BRANCH_KERNEL = 2 +PERF_SAMPLE_BRANCH_MAX = 65536 +PERF_SAMPLE_BRANCH_NO_CYCLES = 32768 +PERF_SAMPLE_BRANCH_NO_FLAGS = 16384 +PERF_SAMPLE_BRANCH_NO_TX = 512 +PERF_SAMPLE_BRANCH_STACK = 2048 +PERF_SAMPLE_BRANCH_USER = 1 +PERF_SAMPLE_CALLCHAIN = 32 +PERF_SAMPLE_CPU = 128 +PERF_SAMPLE_DATA_SRC = 32768 +PERF_SAMPLE_ID = 64 +PERF_SAMPLE_IDENTIFIER = 65536 +PERF_SAMPLE_IP = 1 +PERF_SAMPLE_PERIOD = 256 +PERF_SAMPLE_RAW = 1024 +PERF_SAMPLE_READ = 16 +PERF_SAMPLE_REGS_INTR = 262144 +PERF_SAMPLE_REGS_USER = 4096 +PERF_SAMPLE_STACK_USER = 8192 +PERF_SAMPLE_STREAM_ID = 512 +PERF_SAMPLE_TID = 2 +PERF_SAMPLE_TIME = 4 +PERF_SAMPLE_TRANSACTION = 131072 +PERF_SAMPLE_WEIGHT = 16384 PERF_TYPE_BREAKPOINT = 5 PERF_TYPE_HARDWARE = 0 PERF_TYPE_HW_CACHE = 3