Re: [patch v2] bpf-helpers.7: Add new man page for eBPF helper functions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Quentin,

On 07/05/2018 03:30 PM, Quentin Monnet wrote:
> 2018-05-30 12:25 UTC+0100 ~ Quentin Monnet <quentin.monnet@xxxxxxxxxxxxx>
>> eBPF sub-system on Linux can use "helper functions", functions
>> implemented in the kernel that can be called from within a eBPF program
>> injected by a user on Linux. The kernel already supports a long list of
>> such helpers (seventy-eight at this time, new ones are under review).
>> Therefore, it is proposed to create a new manual page, separate from
>> bpf(2), to document those helpers for people willing to develop new eBPF
>> programs.
>>
>> Additionally, in an effort to keep this documentation in synchronisation
>> with what is implemented in the kernel, it is further proposed to keep
>> the documentation itself in the kernel sources, as comments in file
>> "include/uapi/linux/bpf.h", and to generate the man page from there.
>> In this way, there is a single location for documentation on helpers,
>> and it accommodates both developers preferring reading the kernel UAPI
>> headers and those relying on man pages. Furthermore, it should help
>> enforce proper and reviewed documentation for eBPF helpers since the
>> functions need to be enlisted in the __BPF_FUNC_MAPPER() in the BPF UAPI
>> header.
>>
>> This patch adds the new man page, generated from kernel sources, to the
>> man-pages repository. For each eBPF helper function, a description of
>> the helper, of its arguments and of the return value is provided. The
>> idea is that all future changes for this page should be redirected to
>> the kernel file "include/uapi/linux/bpf.h" (usually updated through the
>> bpf-next tree), and the modified page generated from there.
>>
>> Generating the page itself is a two-step process. First, the
>> documentation is extracted from include/uapi/linux/bpf.h, and converted
>> to a RST (reStructuredText-formatted) page, with the relevant script
>> from Linux sources:
>>
>>       $ ./scripts/bpf_helpers_doc.py > /tmp/bpf-helpers.rst
>>
>> The second step consists in turning the RST document into the final man
>> page, with rst2man (from package python-docutils for Debian and
>> derivatives):
>>
>>       $ rst2man /tmp/bpf-helpers.rst > bpf-helpers.7
>>
>> Known issues related to the inclusion of this automatically-generated
>> page are:
>>
>> - All edits for this page submitted to the man-pages project will have
>>   to be redirected towards the bpf.h header from kernel sources, as
>>   explained above.
>> - The use of rst2man introduces some inconsistencies with regard to
>>   other pages, some of them with negative effects, such as the use of
>>   ".sp" as a paragraph separator (known to render poorly for PS or PDF
>>   conversion of the pages). A post-processing tool could be used in the
>>   future.
>>
>> For those reasons the generated page is proposed to be merged as an
>> "experiment", which could be revisited in the future, depending on how
>> things go.
>>
>> The bpf.h file was taken at kernel commit 13a370b9d275 (that should be
>> in Linux 4.18).
>>
>> v2:
>> - Update contents from bpf.h (v1 used Linux commit 081023a31129).
>> - Update commit log.
>>
>> Cc: Alexei Starovoitov <ast@xxxxxxxxxx>
>> Cc: Daniel Borkmann <daniel@xxxxxxxxxxxxx>
>> Signed-off-by: Quentin Monnet <quentin.monnet@xxxxxxxxxxxxx>
>> Acked-by: Daniel Borkmann <daniel@xxxxxxxxxxxxx>
> 
> Hi Michael,
> 
> I got no answer for v2 of this patch about eBPF helpers documentation.
>>From our discussion on v1, I remember you agreed to take the page, is
> this still valid?
> 
> If you changed your mind, I'll try to make the page available in another
> way (maybe generate it along with the documentation for bpftool, shipped
> with the kernel, and install it from there), although it would be nice
> to have it rendered on man7.org one way or another. Please let me know!

Sorry for the vary late reply...

I've applied the scripts to kernel 4.19, to generate a version
of the page that will be included in the next man-pages release.

Changes are pushed to man-pages Git. Please let me know if anything 
is amiss.

Thanks,

Michael


-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/



[Index of Archives]     [Kernel Documentation]     [Netdev]     [Linux Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux