mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 23:22:31 +02:00
selftests/bpf: Add a new cgroup helper get_classid_cgroup_id()
Introduce a new helper function to retrieve the cgroup ID from a net_cls cgroup directory. Signed-off-by: Yafang Shao <laoar.shao@gmail.com> Link: https://lore.kernel.org/r/20231111090034.4248-5-laoar.shao@gmail.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
f744d35ecf
commit
c1dcc050aa
|
|
@ -422,26 +422,23 @@ int create_and_get_cgroup(const char *relative_path)
|
|||
}
|
||||
|
||||
/**
|
||||
* get_cgroup_id() - Get cgroup id for a particular cgroup path
|
||||
* @relative_path: The cgroup path, relative to the workdir, to join
|
||||
* get_cgroup_id_from_path - Get cgroup id for a particular cgroup path
|
||||
* @cgroup_workdir: The absolute cgroup path
|
||||
*
|
||||
* On success, it returns the cgroup id. On failure it returns 0,
|
||||
* which is an invalid cgroup id.
|
||||
* If there is a failure, it prints the error to stderr.
|
||||
*/
|
||||
unsigned long long get_cgroup_id(const char *relative_path)
|
||||
unsigned long long get_cgroup_id_from_path(const char *cgroup_workdir)
|
||||
{
|
||||
int dirfd, err, flags, mount_id, fhsize;
|
||||
union {
|
||||
unsigned long long cgid;
|
||||
unsigned char raw_bytes[8];
|
||||
} id;
|
||||
char cgroup_workdir[PATH_MAX + 1];
|
||||
struct file_handle *fhp, *fhp2;
|
||||
unsigned long long ret = 0;
|
||||
|
||||
format_cgroup_path(cgroup_workdir, relative_path);
|
||||
|
||||
dirfd = AT_FDCWD;
|
||||
flags = 0;
|
||||
fhsize = sizeof(*fhp);
|
||||
|
|
@ -477,6 +474,14 @@ unsigned long long get_cgroup_id(const char *relative_path)
|
|||
return ret;
|
||||
}
|
||||
|
||||
unsigned long long get_cgroup_id(const char *relative_path)
|
||||
{
|
||||
char cgroup_workdir[PATH_MAX + 1];
|
||||
|
||||
format_cgroup_path(cgroup_workdir, relative_path);
|
||||
return get_cgroup_id_from_path(cgroup_workdir);
|
||||
}
|
||||
|
||||
int cgroup_setup_and_join(const char *path) {
|
||||
int cg_fd;
|
||||
|
||||
|
|
@ -621,3 +626,14 @@ void cleanup_classid_environment(void)
|
|||
join_cgroup_from_top(NETCLS_MOUNT_PATH);
|
||||
nftw(cgroup_workdir, nftwfunc, WALK_FD_LIMIT, FTW_DEPTH | FTW_MOUNT);
|
||||
}
|
||||
|
||||
/**
|
||||
* get_classid_cgroup_id - Get the cgroup id of a net_cls cgroup
|
||||
*/
|
||||
unsigned long long get_classid_cgroup_id(void)
|
||||
{
|
||||
char cgroup_workdir[PATH_MAX + 1];
|
||||
|
||||
format_classid_path(cgroup_workdir);
|
||||
return get_cgroup_id_from_path(cgroup_workdir);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ void cleanup_cgroup_environment(void);
|
|||
/* cgroupv1 related */
|
||||
int set_classid(void);
|
||||
int join_classid(void);
|
||||
unsigned long long get_classid_cgroup_id(void);
|
||||
|
||||
int setup_classid_environment(void);
|
||||
void cleanup_classid_environment(void);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user