From: Yafang Shao <laoar.shao@gmail.com>
To: ast@kernel.org, daniel@iogearbox.net, john.fastabend@gmail.com,
andrii@kernel.org, martin.lau@linux.dev, eddyz87@gmail.com,
song@kernel.org, yonghong.song@linux.dev, kpsingh@kernel.org,
sdf@google.com, haoluo@google.com, jolsa@kernel.org
Cc: bpf@vger.kernel.org, Yafang Shao <laoar.shao@gmail.com>
Subject: [PATCH v2 bpf-next 0/2] bpf: Add a generic bits iterator
Date: Sun, 25 Feb 2024 18:06:35 +0800 [thread overview]
Message-ID: <20240225100637.48394-1-laoar.shao@gmail.com> (raw)
Three new kfuncs, namely bpf_iter_bits_{new,next,destroy}, have been
added for the new bpf_iter_bits functionality. These kfuncs enable the
iteration of the bits from a given address and a given number of bits.
- bpf_iter_bits_new
Initialize a new bits iterator for a given memory area. Due to the
limitation of bpf memalloc, the max number of bits to be iterated
over is (4096 * 8).
- bpf_iter_bits_next
Get the next bit in a bpf_iter_bits
- bpf_iter_bits_destroy
Destroy a bpf_iter_bits
The bits iterator can be used in any context and on any address.
In our specific use case, we leverage the cgroup iterator to traverse
percpu data, subsequently exposing it to userspace through a seq file.
Refer to example in patch #2 for the usage.
Changes:
- v1->v2:
- Simplify the CPU number verification code to avoid the failure on s390x
(Eduard)
- bpf: Add bpf_iter_cpumask
https://lwn.net/Articles/961104/
- bpf: Add new bpf helper bpf_for_each_cpu
https://lwn.net/Articles/939939/
Yafang Shao (2):
bpf: Add bits iterator
selftests/bpf: Add selftest for bits iter
kernel/bpf/helpers.c | 100 +++++++++++++
.../selftests/bpf/prog_tests/bits_iter.c | 132 ++++++++++++++++++
.../bpf/progs/test_bits_iter_failure.c | 54 +++++++
.../bpf/progs/test_bits_iter_success.c | 112 +++++++++++++++
4 files changed, 398 insertions(+)
create mode 100644 tools/testing/selftests/bpf/prog_tests/bits_iter.c
create mode 100644 tools/testing/selftests/bpf/progs/test_bits_iter_failure.c
create mode 100644 tools/testing/selftests/bpf/progs/test_bits_iter_success.c
--
2.39.1
next reply other threads:[~2024-02-25 10:07 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-25 10:06 Yafang Shao [this message]
2024-02-25 10:06 ` [PATCH v2 bpf-next 1/2] bpf: Add bits iterator Yafang Shao
2024-02-28 1:24 ` Andrii Nakryiko
2024-02-28 2:25 ` Yafang Shao
2024-02-28 6:04 ` Andrii Nakryiko
2024-02-29 2:15 ` Yafang Shao
2024-02-29 17:26 ` Andrii Nakryiko
2024-02-29 22:19 ` John Fastabend
2024-03-01 6:40 ` Yafang Shao
2024-03-01 18:01 ` John Fastabend
2024-02-25 10:06 ` [PATCH v2 bpf-next 2/2] selftests/bpf: Add selftest for bits iter Yafang Shao
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=20240225100637.48394-1-laoar.shao@gmail.com \
--to=laoar.shao@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=eddyz87@gmail.com \
--cc=haoluo@google.com \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=kpsingh@kernel.org \
--cc=martin.lau@linux.dev \
--cc=sdf@google.com \
--cc=song@kernel.org \
--cc=yonghong.song@linux.dev \
/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).