stucture element variable access problem

Li Guanglei guanglei@cn.ibm.com
Fri May 19 03:21:00 GMT 2006


bibo,mao 写道:
> Hi,
> I encountered such problem when access structure element variable, if
> the structure variable is pointer type, its element can be access, but
> if the variable is structure type, there will be tapset translation
> error when accessing its element. This is the test case:
> 
> It will be ok with this test case:
>     probe kernel.function("__elv_add_request")
>     {
>        if ($q->queue_tags){
>                tag_map = $q->queue_tags->tag_map
>                printf(" %d \n", tag_map);
>        }
>     }
> But this test case will fail:
>      probe kernel.function("__elv_add_request")
>     {
>        elevator_name = $q->elevator.elevator_name
>     }
> And there will be such error information:
> 
I checked into SystemTap CVS the tapsets used by LKET. Now you can use:
probe ioscheduler.elv_add_request
{
         printf("elv_name: %s\n", elevator_name)
}

I can't duplicate your errors on my box since my box used kernel 2.6.16.
For kernel >= 2.6.10, you should use: 
$q->elevator->elevator_type->elevator_name to get the name.

another comments is that you should use kernel_string to get the name.



More information about the Systemtap mailing list