FILE
create_dsq.bpf.c
File preview with syntax highlighting.
linux-6.19.14/tools/testing/selftests/sched_ext/create_dsq.bpf.c
1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * Create and destroy DSQs in a loop. 4 * 5 * Copyright (c) 2024 Meta Platforms, Inc. and affiliates. 6 * Copyright (c) 2024 David Vernet <dvernet@meta.com> 7 */ 8 9#include <scx/common.bpf.h> 10 11char _license[] SEC("license") = "GPL"; 12 13void BPF_STRUCT_OPS(create_dsq_exit_task, struct task_struct *p, 14 struct scx_exit_task_args *args) 15{ 16 scx_bpf_destroy_dsq(p->pid); 17} 18 19s32 BPF_STRUCT_OPS_SLEEPABLE(create_dsq_init_task, struct task_struct *p, 20 struct scx_init_task_args *args) 21{ 22 s32 err; 23 24 err = scx_bpf_create_dsq(p->pid, -1); 25 if (err) 26 scx_bpf_error("Failed to create DSQ for %s[%d]", 27 p->comm, p->pid); 28 29 return err; 30} 31 32s32 BPF_STRUCT_OPS_SLEEPABLE(create_dsq_init) 33{ 34 u32 i; 35 s32 err; 36 37 bpf_for(i, 0, 1024) { 38 err = scx_bpf_create_dsq(i, -1); 39 if (err) { 40 scx_bpf_error("Failed to create DSQ %d", i); 41 return 0; 42 } 43 } 44 45 bpf_for(i, 0, 1024) { 46 scx_bpf_destroy_dsq(i); 47 } 48 49 return 0; 50} 51 52SEC(".struct_ops.link") 53struct sched_ext_ops create_dsq_ops = { 54 .init_task = (void *) create_dsq_init_task, 55 .exit_task = (void *) create_dsq_exit_task, 56 .init = (void *) create_dsq_init, 57 .name = "create_dsq", 58};
~/
Read-only file preview.