On Thu, May 8, 2025 at 5:36 PM Song Liu song@kernel.org wrote:
On Thu, May 8, 2025 at 11:20 AM T.J. Mercier tjmercier@google.com wrote: [...]
diff --git a/tools/testing/selftests/bpf/prog_tests/dmabuf_iter.c b/tools/testing/selftests/bpf/prog_tests/dmabuf_iter.c new file mode 100644 index 000000000000..35745f4ce0f8 --- /dev/null +++ b/tools/testing/selftests/bpf/prog_tests/dmabuf_iter.c @@ -0,0 +1,224 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Copyright (c) 2025 Google */
+#include <test_progs.h> +#include <bpf/libbpf.h> +#include <bpf/btf.h> +#include "dmabuf_iter.skel.h"
+#include <fcntl.h> +#include <stdbool.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/ioctl.h> +#include <sys/mman.h> +#include <unistd.h>
+#include <linux/dma-buf.h> +#include <linux/dma-heap.h> +#include <linux/udmabuf.h>
+static int memfd, udmabuf;
Global fds are weird. AFAICT, we don't really need them to be global? If we really need them to be global, please initialize them to -1, just in case we close(0) by accident.
Hmm, no we don't really need them to be global but I didn't really want to pass all these variables around to all the setup and test functions. The fd lifetimes are nearly the whole program lifetime anyways, and just need to exist without actually being used for anything. I'll add the -1 initialization as you suggest. If udmabuf creation failed, we would have done a close(0) in destroy_test_buffers() on the sysheap_dmabuf fd.
+static const char udmabuf_test_buffer_name[DMA_BUF_NAME_LEN] = "udmabuf_test_buffer_for_iter"; +static size_t udmabuf_test_buffer_size; +static int sysheap_dmabuf; +static const char sysheap_test_buffer_name[DMA_BUF_NAME_LEN] = "sysheap_test_buffer_for_iter"; +static size_t sysheap_test_buffer_size;