bpf.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: grantseltzer <grantseltzer@gmail.com>
To: andrii@kernel.org
Cc: bpf@vger.kernel.org, grantseltzer@gmail.com
Subject: [PATCH btf-next v3] libbpf: Add sphinx code documentation comments
Date: Tue, 14 Sep 2021 22:19:52 -0400	[thread overview]
Message-ID: <20210915021951.117186-1-grantseltzer@gmail.com> (raw)

From: Grant Seltzer <grantseltzer@gmail.com>

This adds comments above five functions in btf.h which document
their uses. These comments are of a format that doxygen and sphinx
can pick up and render. These are rendered by libbpf.readthedocs.org

Signed-off-by: Grant Seltzer <grantseltzer@gmail.com>
---
 tools/lib/bpf/btf.h | 67 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 67 insertions(+)

diff --git a/tools/lib/bpf/btf.h b/tools/lib/bpf/btf.h
index 4a711f990904..bfbc5e780e0f 100644
--- a/tools/lib/bpf/btf.h
+++ b/tools/lib/bpf/btf.h
@@ -1,5 +1,6 @@
 /* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */
 /* Copyright (c) 2018 Facebook */
+/*! \file */
 
 #ifndef __LIBBPF_BTF_H
 #define __LIBBPF_BTF_H
@@ -30,11 +31,77 @@ enum btf_endianness {
 	BTF_BIG_ENDIAN = 1,
 };
 
+/**
+ * @brief **btf__free()** frees all data of a BTF object
+ * @param btf BTF object to free
+ */
 LIBBPF_API void btf__free(struct btf *btf);
 
+/**
+ * @brief **btf__new()** creates a new instance of a BTF object
+ * from the raw bytes of an ELF's BTF section
+ * @param data raw bytes
+ * @param size number of bytes passed in `data`
+ * @return new instance of BTF object which has to be eventually freed
+ * with **btf__free()**
+ *
+ * On error, error-code-encoded-as-pointer is returned, not a NULL. To
+ * extract error code from such a pointer `libbpf_get_error()` should be
+ * used. If `libbpf_set_strict_mode(LIBBPF_STRICT_CLEAN_PTRS)` is
+ * enabled, NULL is returned on error instead. In both cases thread-local
+ * `errno` variable is always set to error code as well.
+ */
 LIBBPF_API struct btf *btf__new(const void *data, __u32 size);
+
+/**
+ * @brief **btf__new_split()** create a new instance of a BTF object from 
+ * the provided raw data bytes. It takes another BTF instance, **base_btf**, 
+ * which serves as a base BTF, which is extended by types in a newly created
+ * BTF instance
+ * @param data raw bytes
+ * @param size length of raw bytes
+ * @param base_btf the base btf object
+ * @return new instance of BTF object which has to be eventually freed
+ * with **btf__free()**
+ *
+ * On error, error-code-encoded-as-pointer is returned, not a NULL. To
+ * extract error code from such a pointer `libbpf_get_error()` should be
+ * used. If `libbpf_set_strict_mode(LIBBPF_STRICT_CLEAN_PTRS)` is
+ * enabled, NULL is returned on error instead. In both cases thread-local
+ * `errno` variable is always set to error code as well.
+ */
 LIBBPF_API struct btf *btf__new_split(const void *data, __u32 size, struct btf *base_btf);
+
+/**
+ * @brief **btf__new_empty()** creates an unpopulated BTF object
+ * Use `btf__add_*()` to populate such BTF object.
+ * @return new instance of BTF object which has to be eventually freed
+ * with **btf__free()**
+ *
+ * On error, error-code-encoded-as-pointer is returned, not a NULL. To
+ * extract error code from such a pointer `libbpf_get_error()` should be
+ * used. If `libbpf_set_strict_mode(LIBBPF_STRICT_CLEAN_PTRS)` is
+ * enabled, NULL is returned on error instead. In both cases thread-local
+ * `errno` variable is always set to error code as well.
+ */
 LIBBPF_API struct btf *btf__new_empty(void);
+
+/**
+ * @brief **btf__new_empty_split()** creates an unpopulated
+ * BTF object from an ELF BTF section except with a base BTF
+ * on top of which split BTF should be based
+ * @return new instance of BTF object which has to be eventually freed 
+ * with **btf__free()**
+ *
+ * If *base_btf* is NULL, `btf__new_empty_split()` is equivalent to
+ * `btf__new_empty()` and creates non-split BTF.
+ *
+ * On error, error-code-encoded-as-pointer is returned, not a NULL. To
+ * extract error code from such a pointer `libbpf_get_error()` should be
+ * used. If `libbpf_set_strict_mode(LIBBPF_STRICT_CLEAN_PTRS)` is
+ * enabled, NULL is returned on error instead. In both cases thread-local
+ * `errno` variable is always set to error code as well.
+ */
 LIBBPF_API struct btf *btf__new_empty_split(struct btf *base_btf);
 
 LIBBPF_API struct btf *btf__parse(const char *path, struct btf_ext **btf_ext);
-- 
2.31.1


             reply	other threads:[~2021-09-15  2:21 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-15  2:19 grantseltzer [this message]
2021-09-15 20:18 ` [PATCH btf-next v3] libbpf: Add sphinx code documentation comments Andrii Nakryiko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210915021951.117186-1-grantseltzer@gmail.com \
    --to=grantseltzer@gmail.com \
    --cc=andrii@kernel.org \
    --cc=bpf@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).