Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Currently historgram field expressions can use addition ('+'), substraction ('-'), division ('/'), and multiplication ('*') operators. It would be helpful to also have a modulus ('%') operator. This is helpful for capturing the alignment of pointers. For example, on arm64 with CONFIG_KPROBE_EVENTS_ON_NOTRACE=y, we can record the size and alignment of copies to user with: | # echo 'p:copy_to_user __arch_copy_to_user to=$arg1 from=$arg2 n=$arg3' >> /sys/kernel/tracing/kprobe_events | # echo 'hist keys=n,to%8:vals=hitcount:sort=n,to%8' > /sys/kernel/tracing/events/kprobes/copy_to_user/trigger | # cat /sys/kernel/tracing/events/kprobes/copy_to_user/hist | # event histogram | # | # trigger info: hist:keys=n,to%8:vals=hitcount:sort=n,to%8:size=2048 [active] | # | | { n: 1, to%8: 1 } hitcount: 5 | { n: 8, to%8: 0 } hitcount: 3 | { n: 16, to%8: 0 } hitcount: 2 | { n: 32, to%8: 0 } hitcount: 1 | { n: 36, to%8: 0 } hitcount: 1 | { n: 128, to%8: 0 } hitcount: 4 | { n: 336, to%8: 0 } hitcount: 1 | { n: 832, to%8: 0 } hitcount: 3 | | Totals: | Hits: 20 | Entries: 8 | Dropped: 0 Add a modulus operator, with the same precedence as multiplication and division, matching C's operator precedence. Signed-off-by: Mark Rutland <mark.rutland@arm.com> Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Steven Rostedt (Google) <rostedt@goodmis.org> Cc: Tom Zanussi <zanussi@kernel.org> Cc: linux-trace-kernel@vger.kernel.org
- Loading branch information