1 // SPDX-License-Identifier: GPL-2.0 2 3 #include <sys/stat.h> 4 #include <sys/sysmacros.h> 5 #include "test_progs.h" 6 #include "cgroup_helpers.h" 7 #include "get_cgroup_id_kern.skel.h" 8 9 #define TEST_CGROUP "/test-bpf-get-cgroup-id/" 10 11 void test_cgroup_get_current_cgroup_id(void) 12 { 13 struct get_cgroup_id_kern *skel; 14 const struct timespec req = { 15 .tv_sec = 0, 16 .tv_nsec = 1, 17 }; 18 int cgroup_fd; 19 __u64 ucgid; 20 21 cgroup_fd = cgroup_setup_and_join(TEST_CGROUP); 22 if (!ASSERT_OK_FD(cgroup_fd, "cgroup switch")) 23 return; 24 25 skel = get_cgroup_id_kern__open_and_load(); 26 if (!ASSERT_OK_PTR(skel, "load program")) 27 goto cleanup_cgroup; 28 29 if (!ASSERT_OK(get_cgroup_id_kern__attach(skel), "attach bpf program")) 30 goto cleanup_progs; 31 32 skel->bss->expected_pid = getpid(); 33 /* trigger the syscall on which is attached the tested prog */ 34 if (!ASSERT_OK(syscall(__NR_nanosleep, &req, NULL), "nanosleep")) 35 goto cleanup_progs; 36 37 ucgid = get_cgroup_id(TEST_CGROUP); 38 39 ASSERT_EQ(skel->bss->cg_id, ucgid, "compare cgroup ids"); 40 41 cleanup_progs: 42 get_cgroup_id_kern__destroy(skel); 43 cleanup_cgroup: 44 close(cgroup_fd); 45 cleanup_cgroup_environment(); 46 } 47
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.