On Wed, Aug 13, 2014 at 12:57 AM, Alexei Starovoitov <ast@xxxxxxxxxxxx> wrote: [...] > +/* For tracing filters save first six arguments of tracepoint events. > + * On 64-bit architectures argN fields will match one to one to arguments passed > + * to tracepoint events. > + * On 32-bit architectures u64 arguments to events will be seen into two > + * consecutive argN, argN+1 fields. Pointers, u32, u16, u8, bool types will > + * match one to one > + */ > +struct bpf_context { > + unsigned long arg1; > + unsigned long arg2; > + unsigned long arg3; > + unsigned long arg4; > + unsigned long arg5; > + unsigned long arg6; > + unsigned long ret; > +}; While this works, the argN+1 shift for 32-bit is a gotcha to learn. Lets say arg1 was 64-bit, and my program only examined arg2. I'd need two programs, one for 64-bit (using arg2) and 32-bit (arg3). If there was a way not to shift arguments, I could have one program for both. Eg, additional arg1hi, arg2hi, ... for the higher order u32s. Brendan -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html