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 NULL;
|
||||||
return cgrp;
|
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 */
|
#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_release, KF_RELEASE)
|
||||||
BTF_ID_FLAGS(func, bpf_cgroup_ancestor, KF_ACQUIRE | KF_RCU | KF_RET_NULL)
|
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_cgroup_from_id, KF_ACQUIRE | KF_RET_NULL)
|
||||||
|
BTF_ID_FLAGS(func, bpf_task_under_cgroup, KF_RCU)
|
||||||
#endif
|
#endif
|
||||||
BTF_ID_FLAGS(func, bpf_task_from_pid, KF_ACQUIRE | KF_RET_NULL)
|
BTF_ID_FLAGS(func, bpf_task_from_pid, KF_ACQUIRE | KF_RET_NULL)
|
||||||
BTF_SET8_END(generic_btf_ids)
|
BTF_SET8_END(generic_btf_ids)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user