Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests/bpf: Add tests for ring_buffer__ring

Add tests for the new API ring_buffer__ring.

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-5-martin.kelly@crowdstrike.com

authored by

Martin Kelly and committed by
Andrii Nakryiko
c1ad2e47 1c97f6af

+15
+15
tools/testing/selftests/bpf/prog_tests/ringbuf_multi.c
··· 42 42 { 43 43 struct test_ringbuf_multi *skel; 44 44 struct ring_buffer *ringbuf = NULL; 45 + struct ring *ring_old; 46 + struct ring *ring; 45 47 int err; 46 48 int page_size = getpagesize(); 47 49 int proto_fd = -1; ··· 86 84 if (CHECK(!ringbuf, "ringbuf_create", "failed to create ringbuf\n")) 87 85 goto cleanup; 88 86 87 + /* verify ring_buffer__ring returns expected results */ 88 + ring = ring_buffer__ring(ringbuf, 0); 89 + if (!ASSERT_OK_PTR(ring, "ring_buffer__ring_idx_0")) 90 + goto cleanup; 91 + ring_old = ring; 92 + ring = ring_buffer__ring(ringbuf, 1); 93 + ASSERT_ERR_PTR(ring, "ring_buffer__ring_idx_1"); 94 + 89 95 err = ring_buffer__add(ringbuf, bpf_map__fd(skel->maps.ringbuf2), 90 96 process_sample, (void *)(long)2); 91 97 if (CHECK(err, "ringbuf_add", "failed to add another ring\n")) 98 + goto cleanup; 99 + 100 + /* verify adding a new ring didn't invalidate our older pointer */ 101 + ring = ring_buffer__ring(ringbuf, 0); 102 + if (!ASSERT_EQ(ring, ring_old, "ring_buffer__ring_again")) 92 103 goto cleanup; 93 104 94 105 err = test_ringbuf_multi__attach(skel);