File: cgroup_get_current_cgroup_id.c

package info (click to toggle)
linux 6.16.5-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,724,468 kB
  • sloc: ansic: 26,560,391; asm: 271,356; sh: 143,999; python: 72,469; makefile: 57,129; perl: 36,821; xml: 19,553; cpp: 5,820; yacc: 4,915; lex: 2,955; awk: 1,667; sed: 28; ruby: 25
file content (46 lines) | stat: -rw-r--r-- 1,126 bytes parent folder | download | duplicates (15)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// SPDX-License-Identifier: GPL-2.0

#include <sys/stat.h>
#include <sys/sysmacros.h>
#include "test_progs.h"
#include "cgroup_helpers.h"
#include "get_cgroup_id_kern.skel.h"

#define TEST_CGROUP "/test-bpf-get-cgroup-id/"

void test_cgroup_get_current_cgroup_id(void)
{
	struct get_cgroup_id_kern *skel;
	const struct timespec req = {
		.tv_sec = 0,
		.tv_nsec = 1,
	};
	int cgroup_fd;
	__u64 ucgid;

	cgroup_fd = cgroup_setup_and_join(TEST_CGROUP);
	if (!ASSERT_OK_FD(cgroup_fd, "cgroup switch"))
		return;

	skel = get_cgroup_id_kern__open_and_load();
	if (!ASSERT_OK_PTR(skel, "load program"))
		goto cleanup_cgroup;

	if (!ASSERT_OK(get_cgroup_id_kern__attach(skel), "attach bpf program"))
		goto cleanup_progs;

	skel->bss->expected_pid = getpid();
	/* trigger the syscall on which is attached the tested prog */
	if (!ASSERT_OK(syscall(__NR_nanosleep, &req, NULL), "nanosleep"))
		goto cleanup_progs;

	ucgid = get_cgroup_id(TEST_CGROUP);

	ASSERT_EQ(skel->bss->cg_id, ucgid, "compare cgroup ids");

cleanup_progs:
	get_cgroup_id_kern__destroy(skel);
cleanup_cgroup:
	close(cgroup_fd);
	cleanup_cgroup_environment();
}