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?


Hi, William

What I am about to probe is actually the statement   

ret = action->handler(irq, action->dev_id);

located in 

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

I want to selective do the probe according to the value of argument irq
(such as only probe interrupt issued by the keyboard).
 
kernel.trace("irq_handler_exit") works for me. But how can I do in some
other functions if the tracing line doesn't surrounded by the function like 
trace_irq_handler_entry and trace_irq_handler_exit. 

BTW, when I execute the command

stap -L 'kernel.statement("handle_IRQ_event@kernel/irq/handle.c:376")'

It returns nothing.

Best regards,
Joey




William Cohen wrote:
> 
> 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
> 
> 

-- 
View this message in context: http://old.nabble.com/Can-kernel.statement-access-the-function-argument--tp31348406p31356706.html
Sent from the Sourceware - systemtap mailing list archive at Nabble.com.


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