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: How to deference a pointer to pointer


Hi,

As answered to 1 of my question earlier, script syntax "->" is not related to C dereferencing "->". Generated code uses in fact dwarf so don't hesitate to try cascading "->"

For example, I print V4L2 buffers address when a video frame is queued with $q->bufs[$b->index]->baddr

And if things do not seem to work, I guess you can revert to "pure" code to directly write plain C code.

Regards
FRed


Frederic Turgis

OMAP Platform Business Unit - OMAP System Engineering - Platform Enablement



Texas Instruments France SA, 821 Avenue Jack Kilby, 06270 Villeneuve Loubet. 036 420 040 R.C.S Antibes. Capital de EUR 753.920

-----Original Message-----

From: systemtap-owner@sourceware.org [mailto:systemtap-owner@sourceware.org] On Behalf Of Zhiwei Ying
Sent: Wednesday, April 20, 2011 3:55 AM
To: Frank Ch. Eigler
Cc: systemtap
Subject: Re: How to deference a pointer to pointer

Thanks.

Zhiwei

On Tue, Apr 19, 2011 at 10:41 PM, Frank Ch. Eigler <fche@redhat.com> wrote:
> Zhiwei Ying <zhiwei.ying@gmail.com> writes:
>
>> [...]
>> I know systematap has limited support on tracing of struct field.
>
> Yes, you can navigate pointers/array.  The syntax for this is similar
> to but not the same as C.
>
>> Can it trace a field in a pointer to pointer?
>> struct A
>> {
>>   int x;
>> };
>> void foo(struct A **a);
>>
>> How can I trace the field x in struct A?
>
> Yes, this is one of those cases where the syntax doesn't help enough.
>
> probe FOO.function("foo") { println($a->x) }
>
> So two levels of dereferencing are hidden in the single ->.
>
> - FChE
>


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