[DTrace-devel] [PATCH 3/8] bpf: introduce dt_bpf_prog_attach()

Eugene Loh eugene.loh at oracle.com
Thu Apr 4 20:04:29 UTC 2024


Never mind, I guess it's in bpf/bpf.h.

Reviewed-by: Eugene Loh <eugene.loh at oracle.com>

On 4/4/24 15:53, Eugene Loh wrote:
> Here is what I see on a couple of VMs I run on:
>
>     grep attach_btf_id /usr/include/linux/bpf.h
>
>     x86 OL7 UEK6 5.4.17-2136.328.3.el7uek.x86_64    (nil)
>     arm OL7 UEK6 5.4.17-2136.328.3.el7uek.aarch64   (nil)
>     x86 OL8 UEK6 5.4.17-2136.328.3.el8uek.x86_64    __u32 attach_btf_id;
>     arm OL8 UEK6 5.4.17-2136.328.3.el8uek.aarch64   __u32 attach_btf_id;
>     x86 OL8 UEK7 5.15.0-102.110.4.el8uek.x86_64     __u32 attach_btf_id;
>     arm OL8 UEK7 5.15.0-102.110.4.el8uek.aarch64    __u32 attach_btf_id;
>     x86 OL9 UEK7 5.15.0-203.146.5.1.el9uek.x86_64   __u32 attach_btf_id;
>     arm OL9 UEK7 5.15.0-203.146.5.1.el9uek.aarch64  __u32 attach_btf_id;
>
> That is, the OL7 VMs do not seem to know about attach_bpf_id.
>
> Also...
>
> On 4/3/24 11:26, Kris Van Hees via DTrace-devel wrote:
>> diff --git a/libdtrace/dt_bpf.c b/libdtrace/dt_bpf.c
>> index 56b342e8..14ef12fc 100644
>> --- a/libdtrace/dt_bpf.c
>> +++ b/libdtrace/dt_bpf.c
>> @@ -73,18 +73,22 @@ dt_bpf_lockmem_error(dtrace_hdl_t *dtp, const 
>> char *msg)
>>   }
>>     /*
>> - * Load a BPF program into the kernel.
>> + * Load a BPF program into the kernel (and attach it to an object by 
>> BTF id if
>> + * specified).
>>    */
>
> Omit the parentheses and the "if specified."  For this function, the 
> btf_id is specified.  How about,
> "Load a BPF program into the kernel, attaching it to an object by BTF 
> id."
>
>>   int
>> -dt_bpf_prog_load(enum bpf_prog_type prog_type, const dtrace_difo_t *dp,
>> -             uint32_t log_level, char *log_buf, size_t log_buf_sz)
>> +dt_bpf_prog_attach(enum bpf_prog_type ptype, enum bpf_attach_type 
>> atype,
>> +           uint32_t btf_id, const dtrace_difo_t *dp, uint32_t 
>> log_level,
>> +           char *log_buf, size_t log_buf_sz)
>>   {
>>       union bpf_attr    attr;
>>       int        fd;
>>       int        i = 0;
>>         memset(&attr, 0, sizeof(attr));
>> -    attr.prog_type = prog_type;
>> +    attr.prog_type = ptype;
>> +    attr.expected_attach_type = atype;
>> +    attr.attach_btf_id = btf_id;
>>       attr.insn_cnt = dp->dtdo_len;
>>       attr.insns = (uint64_t)dp->dtdo_buf;
>>       attr.license = (uint64_t)BPF_CG_LICENSE;
>> @@ -103,6 +107,17 @@ dt_bpf_prog_load(enum bpf_prog_type prog_type, 
>> const dtrace_difo_t *dp,
>>       return fd;
>>   }
>>   +/*
>> + * Load a BPF program into the kernel (and attach it to an object by 
>> BTF id if
>> + * specified).
>> + */
>
> Omit the parenthetical remark.  This function does not allow btf id.
>
>> +int
>> +dt_bpf_prog_load(enum bpf_prog_type ptype, const dtrace_difo_t *dp,
>> +         uint32_t log_lvl, char *log_buf, size_t log_bufsz)
>> +{
>> +    return dt_bpf_prog_attach(ptype, 0, 0, dp, log_lvl, log_buf, 
>> log_bufsz);
>> +}



More information about the DTrace-devel mailing list