Messages in this thread | | | Date | Fri, 1 Apr 2016 20:11:31 +0530 | From | "Naveen N. Rao" <> | Subject | Re: [PATCH 4/4] samples/bpf: Enable powerpc support |
| |
On 2016/03/31 10:52AM, Alexei Starovoitov wrote: > On 3/31/16 4:25 AM, Naveen N. Rao wrote: > ... > >+ > >+#ifdef __powerpc__ > >+#define BPF_KPROBE_READ_RET_IP(ip, ctx) { (ip) = (ctx)->link; } > >+#define BPF_KRETPROBE_READ_RET_IP(ip, ctx) BPF_KPROBE_READ_RET_IP(ip, ctx) > >+#else > >+#define BPF_KPROBE_READ_RET_IP(ip, ctx) \ > >+ bpf_probe_read(&(ip), sizeof(ip), (void *)PT_REGS_RET(ctx)) > >+#define BPF_KRETPROBE_READ_RET_IP(ip, ctx) \ > >+ bpf_probe_read(&(ip), sizeof(ip), \ > >+ (void *)(PT_REGS_FP(ctx) + sizeof(ip))) > > makes sense, but please use ({ }) gcc extension instead of {} and > open call to make sure that macro body is scoped.
To be sure I understand this right, do you mean something like this?
+ +#ifdef __powerpc__ +#define BPF_KPROBE_READ_RET_IP(ip, ctx) ({ (ip) = (ctx)->link; }) +#define BPF_KRETPROBE_READ_RET_IP BPF_KPROBE_READ_RET_IP +#else +#define BPF_KPROBE_READ_RET_IP(ip, ctx) ({ \ + bpf_probe_read(&(ip), sizeof(ip), (void *)PT_REGS_RET(ctx)); }) +#define BPF_KRETPROBE_READ_RET_IP(ip, ctx) ({ \ + bpf_probe_read(&(ip), sizeof(ip), \ + (void *)(PT_REGS_FP(ctx) + sizeof(ip))); }) +#endif +
Thanks, Naveen
| |