This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH tracing/kprobes v2 1/5] tracing/kprobes: Rename special variables syntax


Masami Hiramatsu wrote:
Frederic Weisbecker wrote:
On Fri, Oct 02, 2009 at 05:48:42PM -0400, Masami Hiramatsu wrote:
   FETCHARGS	: Arguments. Each probe can have up to 128 args.
    %REG	: Fetch register REG
-  sN	: Fetch Nth entry of stack (N>= 0)
-  sa	: Fetch stack address.
    @ADDR	: Fetch memory at ADDR (ADDR should be in kernel)
    @SYM[+|-offs]	: Fetch memory at SYM +|- offs (SYM should be a data symbol)
-  aN	: Fetch function argument. (N>= 0)(*)
-  rv	: Fetch return value.(**)
-  ra	: Fetch return address.(**)
+  $sN	: Fetch Nth entry of stack (N>= 0)
+  $sa	: Fetch stack address.
+  $aN	: Fetch function argument. (N>= 0)(*)
+  $rv	: Fetch return value.(**)
+  $ra	: Fetch return address.(**)



I feel uncomfortable with that, because of bash scripts that may use it and always need to escape it with antislashes or use single quotes for it to not be replaced by a random variable value. If one uses double quotes without antislashes to protect the command line, the result is unpredictable, depending of the current set of variables...

May be we can use # instead of $ ? That's a kind of pity because
$ suggested a variable whereas # suggests a constant, we are then
losing this self-explainable characteristic for kprobes
"specific variable fetchs". But that will work without ambiguity.

Hmm, # is widely used for comment, including some kernel pseudo file interfaces, kprobe_events too. Comments are useful if a probe list is restored from a file.

For accessing local variables, kprobe-tracer needs to support *at least*
below variables:
- Registers
- Stack address (if a register points stack address, this isn't needed)

Below special vars are complementary aliases.
- Function arguments
- Return value
- Return address

and I'd like perf-probe to have a transparent syntax with kprobe-tracer.

This means, if we can remove special vars except registers, or rename it
non-conflictable name with registers, we just need to separate name spaces
of
- Regsiters
- Local variables

Here, local variables will support fields of data structs, and it will
use '->' expression. Since'>' means redirection in bash, local variables
need to be *escaped* in this case. Thus, I think we can use '$' prefix
for it. (I'm OK, because this is similar syntax to systemtap:-).

So, if you don't like %regs, $svars and locals, we can use regs and $locals :-)

As far as I can see in arch/*/include/asm/ptrace.h, all registers start with alphabets :-). So, I'd like to suggest renaming sp-vars to '_sp-vars'.

Then, we will have;
- $local-vars
- @global-symbol
- regs
- _sp-vars
- +|-Offs(ARG)

Thank you,

--
Masami Hiramatsu

Software Engineer
Hitachi Computer Products (America), Inc.
Software Solutions Division

e-mail: mhiramat@redhat.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]