mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-18 02:46:06 +00:00
sched/ext: Add BPF function to fetch rq
rq contains many useful fields to implement a custom scheduler. For example, various clock signals like clock_task and clock_pelt can be used to track load. It also contains stats in other sched_classes, which are useful to drive scheduling decisions in ext. tj: Put the new helper below scx_bpf_task_*() helpers. Signed-off-by: Hongyan Xia <hongyan.xia2@arm.com> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
parent
7b9f6c864a
commit
6203ef73fa
@ -6113,6 +6113,18 @@ __bpf_kfunc s32 scx_bpf_task_cpu(const struct task_struct *p)
|
|||||||
return task_cpu(p);
|
return task_cpu(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* scx_bpf_cpu_rq - Fetch the rq of a CPU
|
||||||
|
* @cpu: CPU of the rq
|
||||||
|
*/
|
||||||
|
__bpf_kfunc struct rq *scx_bpf_cpu_rq(s32 cpu)
|
||||||
|
{
|
||||||
|
if (!ops_cpu_valid(cpu, NULL))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return cpu_rq(cpu);
|
||||||
|
}
|
||||||
|
|
||||||
__bpf_kfunc_end_defs();
|
__bpf_kfunc_end_defs();
|
||||||
|
|
||||||
BTF_KFUNCS_START(scx_kfunc_ids_any)
|
BTF_KFUNCS_START(scx_kfunc_ids_any)
|
||||||
@ -6137,6 +6149,7 @@ BTF_ID_FLAGS(func, scx_bpf_pick_idle_cpu, KF_RCU)
|
|||||||
BTF_ID_FLAGS(func, scx_bpf_pick_any_cpu, KF_RCU)
|
BTF_ID_FLAGS(func, scx_bpf_pick_any_cpu, KF_RCU)
|
||||||
BTF_ID_FLAGS(func, scx_bpf_task_running, KF_RCU)
|
BTF_ID_FLAGS(func, scx_bpf_task_running, KF_RCU)
|
||||||
BTF_ID_FLAGS(func, scx_bpf_task_cpu, KF_RCU)
|
BTF_ID_FLAGS(func, scx_bpf_task_cpu, KF_RCU)
|
||||||
|
BTF_ID_FLAGS(func, scx_bpf_cpu_rq)
|
||||||
BTF_KFUNCS_END(scx_kfunc_ids_any)
|
BTF_KFUNCS_END(scx_kfunc_ids_any)
|
||||||
|
|
||||||
static const struct btf_kfunc_id_set scx_kfunc_set_any = {
|
static const struct btf_kfunc_id_set scx_kfunc_set_any = {
|
||||||
|
@ -57,6 +57,7 @@ s32 scx_bpf_pick_idle_cpu(const cpumask_t *cpus_allowed, u64 flags) __ksym;
|
|||||||
s32 scx_bpf_pick_any_cpu(const cpumask_t *cpus_allowed, u64 flags) __ksym;
|
s32 scx_bpf_pick_any_cpu(const cpumask_t *cpus_allowed, u64 flags) __ksym;
|
||||||
bool scx_bpf_task_running(const struct task_struct *p) __ksym;
|
bool scx_bpf_task_running(const struct task_struct *p) __ksym;
|
||||||
s32 scx_bpf_task_cpu(const struct task_struct *p) __ksym;
|
s32 scx_bpf_task_cpu(const struct task_struct *p) __ksym;
|
||||||
|
struct rq *scx_bpf_cpu_rq(s32 cpu) __ksym;
|
||||||
|
|
||||||
static inline __attribute__((format(printf, 1, 2)))
|
static inline __attribute__((format(printf, 1, 2)))
|
||||||
void ___scx_bpf_bstr_format_checker(const char *fmt, ...) {}
|
void ___scx_bpf_bstr_format_checker(const char *fmt, ...) {}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user