On Tue, 17 Apr 2018 10:02:43 +0530
Ravi Bangoria wrote:
> From: Ravi Bangoria
>
> Reference counter gate the invocation of probe. If present,
> by default reference count is 0. Kernel needs to increment
> it before tracing the probe and decrement it when done. This
> is identical to semaphore in Userspace Statically Defined
> Tracepoints (USDT).
>
> Document usage of reference counter.
>
> Signed-off-by: Ravi Bangoria
Looks good to me.
Acked-by: Masami Hiramatsu
Thanks!
> ---
> Documentation/trace/uprobetracer.txt | 16 +---
> kernel/trace/trace.c | 2 +-
> 2 files changed, 14 insertions(+), 4 deletions(-)
>
> diff --git a/Documentation/trace/uprobetracer.txt
> b/Documentation/trace/uprobetracer.txt
> index bf526a7c..cb6751d 100644
> --- a/Documentation/trace/uprobetracer.txt
> +++ b/Documentation/trace/uprobetracer.txt
> @@ -19,15 +19,25 @@ user to calculate the offset of the probepoint in the
> object.
>
> Synopsis of uprobe_tracer
> -
> - p[:[GRP/]EVENT] PATH:OFFSET [FETCHARGS] : Set a uprobe
> - r[:[GRP/]EVENT] PATH:OFFSET [FETCHARGS] : Set a return uprobe (uretprobe)
> - -:[GRP/]EVENT : Clear uprobe or uretprobe event
> + p[:[GRP/]EVENT] PATH:OFFSET[(REF_CTR_OFFSET)] [FETCHARGS]
> + r[:[GRP/]EVENT] PATH:OFFSET[(REF_CTR_OFFSET)] [FETCHARGS]
> + -:[GRP/]EVENT
> +
> + p : Set a uprobe
> + r : Set a return uprobe (uretprobe)
> + - : Clear uprobe or uretprobe event
>
>GRP : Group name. If omitted, "uprobes" is the default value.
>EVENT : Event name. If omitted, the event name is generated based
>on PATH+OFFSET.
>PATH : Path to an executable or a library.
>OFFSET: Offset where the probe is inserted.
> + REF_CTR_OFFSET: Reference counter offset. Optional field. Reference count
> + gate the invocation of probe. If present, by default
> + reference count is 0. Kernel needs to increment it before
> + tracing the probe and decrement it when done. This is
> + identical to semaphore in Userspace Statically Defined
> + Tracepoints (USDT).
>
>FETCHARGS : Arguments. Each probe can have up to 128 args.
> %REG : Fetch register REG
> diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
> index 300f4ea..d211937 100644
> --- a/kernel/trace/trace.c
> +++ b/kernel/trace/trace.c
> @@ -4604,7 +4604,7 @@ static int tracing_trace_options_open(struct inode
> *inode, struct file *file)
>"place (kretprobe): [:][+]|\n"
> #endif
> #ifdef CONFIG_UPROBE_EVENTS
> - "\tplace: :\n"
> + " place (uprobe): :[(ref_ctr_offset)]\n"
> #endif
> "\t args: =fetcharg[:type]\n"
> "\t fetcharg: %, @, @[+|-],\n"
> --
> 1.8.3.1
>
--
Masami Hiramatsu