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: Can kernel.statement access the function argument?


On 04/07/2011 11:52 PM, voyager1983 wrote:
> 
> Hi, All
> 
> I am trying to access the argument of kernel function in kernel.statement
> probe point. But I get the error message:
> 
> semantic error: not accessible at this address (0xc01a82e0): identifier
> '$irq' at question.stp:2:38
>         source:         printf("irq number is %d\n", $irq)
>                                                      ^
> Pass 2: analysis failed.  Try again with another '--vp 01' option.
> 
> The question.stp file is as below:
> 
> probe kernel.statement("handle_IRQ_event@kernel/irq/handle.c:376"){
>         printf("irq number is %d\n", $irq)
> }
> 
> I am using SystemTap 1.3 on Ubuntu10.10 to trace the kernel 2.6.35.9.
> 
> Are we allowed to access the function argument in kernel.statement probe
> point? If not, is there any walk around solution?
> 
> Thanks!
> Joey
> 
> 
> 

Hi Joey,

SystemTap's ability to obtain target variables depends on whether the argument is available at that location and whether the compiler has include debuginfo that describe where to get the value. To see what target variables systemtap can find at that location you could do:
 
stap -L 'kernel.statement("handle_IRQ_event@kernel/irq/handle.c:376")'

Is the place you probing the same as like 376 in:

http://lxr.linux.no/#linux+v2.6.35.9/kernel/irq/handle.c#L376

Could you use the following probe point?

kernel.trace("irq_handler_exit") $irq:int $action:struct irqaction* $ret:int

-Will


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