mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
bpf: Add bpf_task_under_cgroup() kfunc
Add a kfunc that's similar to the bpf_current_task_under_cgroup. The difference is that it is a designated task. When hook sched related functions, sometimes it is necessary to specify a task instead of the current task. Signed-off-by: Feng Zhou <zhoufeng.zf@bytedance.com> Acked-by: Yonghong Song <yhs@fb.com> Link: https://lore.kernel.org/r/20230506031545.35991-2-zhoufeng.zf@bytedance.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
f4dea9689c
commit
b5ad4cdc46
@ -2149,6 +2149,22 @@ __bpf_kfunc struct cgroup *bpf_cgroup_from_id(u64 cgid)
|
||||
return NULL;
|
||||
return cgrp;
|
||||
}
|
||||
|
||||
/**
|
||||
* bpf_task_under_cgroup - wrap task_under_cgroup_hierarchy() as a kfunc, test
|
||||
* task's membership of cgroup ancestry.
|
||||
* @task: the task to be tested
|
||||
* @ancestor: possible ancestor of @task's cgroup
|
||||
*
|
||||
* Tests whether @task's default cgroup hierarchy is a descendant of @ancestor.
|
||||
* It follows all the same rules as cgroup_is_descendant, and only applies
|
||||
* to the default hierarchy.
|
||||
*/
|
||||
__bpf_kfunc long bpf_task_under_cgroup(struct task_struct *task,
|
||||
struct cgroup *ancestor)
|
||||
{
|
||||
return task_under_cgroup_hierarchy(task, ancestor);
|
||||
}
|
||||
#endif /* CONFIG_CGROUPS */
|
||||
|
||||
/**
|
||||
@ -2400,6 +2416,7 @@ BTF_ID_FLAGS(func, bpf_cgroup_acquire, KF_ACQUIRE | KF_RCU | KF_RET_NULL)
|
||||
BTF_ID_FLAGS(func, bpf_cgroup_release, KF_RELEASE)
|
||||
BTF_ID_FLAGS(func, bpf_cgroup_ancestor, KF_ACQUIRE | KF_RCU | KF_RET_NULL)
|
||||
BTF_ID_FLAGS(func, bpf_cgroup_from_id, KF_ACQUIRE | KF_RET_NULL)
|
||||
BTF_ID_FLAGS(func, bpf_task_under_cgroup, KF_RCU)
|
||||
#endif
|
||||
BTF_ID_FLAGS(func, bpf_task_from_pid, KF_ACQUIRE | KF_RET_NULL)
|
||||
BTF_SET8_END(generic_btf_ids)
|
||||
|
Loading…
Reference in New Issue
Block a user