Skip to content

Commit b18db87

Browse files
Martin Kellyanakryiko
authored andcommitted
selftests/bpf: Add tests for ring__*_pos
Add tests for the new APIs ring__producer_pos and ring__consumer_pos. Signed-off-by: Martin Kelly <martin.kelly@crowdstrike.com> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/bpf/20230925215045.2375758-7-martin.kelly@crowdstrike.com
1 parent 059a8c0 commit b18db87

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

  • tools/testing/selftests/bpf/prog_tests

tools/testing/selftests/bpf/prog_tests/ringbuf.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ static void ringbuf_subtest(void)
9191
int err, cnt, rb_fd;
9292
int page_size = getpagesize();
9393
void *mmap_ptr, *tmp_ptr;
94+
struct ring *ring;
95+
unsigned long cons_pos, prod_pos;
9496

9597
skel = test_ringbuf_lskel__open();
9698
if (CHECK(!skel, "skel_open", "skeleton open failed\n"))
@@ -162,6 +164,10 @@ static void ringbuf_subtest(void)
162164

163165
trigger_samples();
164166

167+
ring = ring_buffer__ring(ringbuf, 0);
168+
if (!ASSERT_OK_PTR(ring, "ring_buffer__ring_idx_0"))
169+
goto cleanup;
170+
165171
/* 2 submitted + 1 discarded records */
166172
CHECK(skel->bss->avail_data != 3 * rec_sz,
167173
"err_avail_size", "exp %ld, got %ld\n",
@@ -176,6 +182,14 @@ static void ringbuf_subtest(void)
176182
"err_prod_pos", "exp %ld, got %ld\n",
177183
3L * rec_sz, skel->bss->prod_pos);
178184

185+
/* verify getting this data directly via the ring object yields the same
186+
* results
187+
*/
188+
cons_pos = ring__consumer_pos(ring);
189+
ASSERT_EQ(cons_pos, 0, "ring_cons_pos");
190+
prod_pos = ring__producer_pos(ring);
191+
ASSERT_EQ(prod_pos, 3 * rec_sz, "ring_prod_pos");
192+
179193
/* poll for samples */
180194
err = ring_buffer__poll(ringbuf, -1);
181195

0 commit comments

Comments
 (0)