Skip to main content

scx_utils/
enums.rs

1// Rust constants for scx kernel side enums.
2
3use crate::compat::{read_enum, read_enum_any};
4
5#[derive(Debug)]
6#[allow(non_snake_case)]
7pub struct Enums {
8    pub SCX_OPS_NAME_LEN: u64,
9    pub SCX_SLICE_DFL: u64,
10    pub SCX_SLICE_INF: u64,
11    pub SCX_RESCUE_DISABLE: u64,
12    pub SCX_RQ_ONLINE: u64,
13    pub SCX_RQ_CAN_STOP_TICK: u64,
14    pub SCX_RQ_CLK_VALID: u64,
15    pub SCX_RQ_IN_WAKEUP: u64,
16    pub SCX_RQ_IN_DISPATCH: u64,
17    pub SCX_DSQ_FLAG_BUILTIN: u64,
18    pub SCX_DSQ_FLAG_LOCAL_ON: u64,
19    pub SCX_DSQ_INVALID: u64,
20    pub SCX_DSQ_GLOBAL: u64,
21    pub SCX_DSQ_LOCAL: u64,
22    pub SCX_DSQ_LOCAL_ON: u64,
23    pub SCX_DSQ_LOCAL_CPU_MASK: u64,
24    pub SCX_TASK_QUEUED: u64,
25    pub SCX_TASK_RESET_RUNNABLE_AT: u64,
26    pub SCX_TASK_DEQD_FOR_SLEEP: u64,
27    pub SCX_TASK_SUB_INIT: u64,
28    pub SCX_TASK_IMMED: u64,
29    pub SCX_TASK_STATE_SHIFT: u64,
30    pub SCX_TASK_STATE_BITS: u64,
31    pub SCX_TASK_STATE_MASK: u64,
32    pub SCX_TASK_CURSOR: u64,
33    pub SCX_TASK_NONE: u64,
34    pub SCX_TASK_INIT: u64,
35    pub SCX_TASK_READY: u64,
36    pub SCX_TASK_ENABLED: u64,
37    pub SCX_TASK_DSQ_ON_PRIQ: u64,
38    pub SCX_KICK_IDLE: u64,
39    pub SCX_KICK_PREEMPT: u64,
40    pub SCX_KICK_WAIT: u64,
41    pub SCX_KICK_PREEMPT_LAZY: u64,
42    pub SCX_KICK_ALL_FLAGS: u64,
43    pub SCX_ENQ_WAKEUP: u64,
44    pub SCX_ENQ_HEAD: u64,
45    pub SCX_ENQ_CPU_SELECTED: u64,
46    pub SCX_ENQ_PREEMPT: u64,
47    pub SCX_ENQ_PREEMPT_LAZY: u64,
48    pub SCX_ENQ_IMMED: u64,
49    pub SCX_ENQ_RESCUE: u64,
50    pub SCX_ENQ_BLOCKED: u64,
51    pub SCX_ENQ_REENQ: u64,
52    pub SCX_ENQ_LAST: u64,
53    pub SCX_ENQ_CLEAR_OPSS: u64,
54    pub SCX_ENQ_DSQ_PRIQ: u64,
55    pub SCX_DEQ_SCHED_CHANGE: u64,
56}
57
58lazy_static::lazy_static! {
59    pub static ref scx_enums: Enums = Enums {
60        SCX_OPS_NAME_LEN: read_enum("scx_public_consts","SCX_OPS_NAME_LEN").unwrap_or(0),
61        SCX_SLICE_DFL: read_enum("scx_public_consts","SCX_SLICE_DFL").unwrap_or(0),
62        SCX_SLICE_INF: read_enum("scx_public_consts","SCX_SLICE_INF").unwrap_or(0),
63        SCX_RESCUE_DISABLE: read_enum("scx_consts","SCX_RESCUE_DISABLE").unwrap_or(0),
64        SCX_RQ_ONLINE: read_enum("scx_rq_flags","SCX_RQ_ONLINE").unwrap_or(0),
65        SCX_RQ_CAN_STOP_TICK: read_enum("scx_rq_flags","SCX_RQ_CAN_STOP_TICK").unwrap_or(0),
66        SCX_RQ_CLK_VALID: read_enum("scx_rq_flags","SCX_RQ_CLK_VALID").unwrap_or(0),
67        SCX_RQ_IN_WAKEUP: read_enum("scx_rq_flags","SCX_RQ_IN_WAKEUP").unwrap_or(0),
68        SCX_RQ_IN_DISPATCH: read_enum("scx_rq_flags","SCX_RQ_IN_DISPATCH").unwrap_or(0),
69        SCX_DSQ_FLAG_BUILTIN: read_enum("scx_dsq_id_flags","SCX_DSQ_FLAG_BUILTIN").unwrap_or(0),
70        SCX_DSQ_FLAG_LOCAL_ON: read_enum("scx_dsq_id_flags","SCX_DSQ_FLAG_LOCAL_ON").unwrap_or(0),
71        SCX_DSQ_INVALID: read_enum("scx_dsq_id_flags","SCX_DSQ_INVALID").unwrap_or(0),
72        SCX_DSQ_GLOBAL: read_enum("scx_dsq_id_flags","SCX_DSQ_GLOBAL").unwrap_or(0),
73        SCX_DSQ_LOCAL: read_enum("scx_dsq_id_flags","SCX_DSQ_LOCAL").unwrap_or(0),
74        SCX_DSQ_LOCAL_ON: read_enum("scx_dsq_id_flags","SCX_DSQ_LOCAL_ON").unwrap_or(0),
75        SCX_DSQ_LOCAL_CPU_MASK: read_enum("scx_dsq_id_flags","SCX_DSQ_LOCAL_CPU_MASK").unwrap_or(0),
76        SCX_TASK_QUEUED: read_enum("scx_ent_flags","SCX_TASK_QUEUED").unwrap_or(0),
77        SCX_TASK_RESET_RUNNABLE_AT: read_enum("scx_ent_flags","SCX_TASK_RESET_RUNNABLE_AT").unwrap_or(0),
78        SCX_TASK_DEQD_FOR_SLEEP: read_enum("scx_ent_flags","SCX_TASK_DEQD_FOR_SLEEP").unwrap_or(0),
79        SCX_TASK_SUB_INIT: read_enum("scx_ent_flags","SCX_TASK_SUB_INIT").unwrap_or(0),
80        SCX_TASK_IMMED: read_enum("scx_ent_flags","SCX_TASK_IMMED").unwrap_or(0),
81        SCX_TASK_STATE_SHIFT: read_enum("scx_ent_flags","SCX_TASK_STATE_SHIFT").unwrap_or(0),
82        SCX_TASK_STATE_BITS: read_enum("scx_ent_flags","SCX_TASK_STATE_BITS").unwrap_or(0),
83        SCX_TASK_STATE_MASK: read_enum("scx_ent_flags","SCX_TASK_STATE_MASK").unwrap_or(0),
84        SCX_TASK_CURSOR: read_enum("scx_ent_flags","SCX_TASK_CURSOR").unwrap_or(0),
85        SCX_TASK_NONE: read_enum_any(&["scx_ent_flags", "scx_task_state"],"SCX_TASK_NONE").unwrap_or(0),
86        SCX_TASK_INIT: read_enum_any(&["scx_ent_flags", "scx_task_state"],"SCX_TASK_INIT").unwrap_or(0),
87        SCX_TASK_READY: read_enum_any(&["scx_ent_flags", "scx_task_state"],"SCX_TASK_READY").unwrap_or(0),
88        SCX_TASK_ENABLED: read_enum_any(&["scx_ent_flags", "scx_task_state"],"SCX_TASK_ENABLED").unwrap_or(0),
89        SCX_TASK_DSQ_ON_PRIQ: read_enum("scx_ent_dsq_flags","SCX_TASK_DSQ_ON_PRIQ").unwrap_or(0),
90        SCX_KICK_IDLE: read_enum("scx_kick_flags","SCX_KICK_IDLE").unwrap_or(0),
91        SCX_KICK_PREEMPT: read_enum("scx_kick_flags","SCX_KICK_PREEMPT").unwrap_or(0),
92        SCX_KICK_WAIT: read_enum("scx_kick_flags","SCX_KICK_WAIT").unwrap_or(0),
93        SCX_KICK_PREEMPT_LAZY: read_enum("scx_kick_flags","SCX_KICK_PREEMPT_LAZY").unwrap_or(0),
94        SCX_KICK_ALL_FLAGS: read_enum("scx_kick_flags","SCX_KICK_ALL_FLAGS").unwrap_or(0),
95        SCX_ENQ_WAKEUP: read_enum("scx_enq_flags","SCX_ENQ_WAKEUP").unwrap_or(0),
96        SCX_ENQ_HEAD: read_enum("scx_enq_flags","SCX_ENQ_HEAD").unwrap_or(0),
97        SCX_ENQ_CPU_SELECTED: read_enum("scx_enq_flags","SCX_ENQ_CPU_SELECTED").unwrap_or(0),
98        SCX_ENQ_PREEMPT: read_enum("scx_enq_flags","SCX_ENQ_PREEMPT").unwrap_or(0),
99        SCX_ENQ_PREEMPT_LAZY: read_enum("scx_enq_flags","SCX_ENQ_PREEMPT_LAZY").unwrap_or(0),
100        SCX_ENQ_IMMED: read_enum("scx_enq_flags","SCX_ENQ_IMMED").unwrap_or(0),
101        SCX_ENQ_RESCUE: read_enum("scx_enq_flags","SCX_ENQ_RESCUE").unwrap_or(0),
102        SCX_ENQ_BLOCKED: read_enum("scx_enq_flags","SCX_ENQ_BLOCKED").unwrap_or(0),
103        SCX_ENQ_REENQ: read_enum("scx_enq_flags","SCX_ENQ_REENQ").unwrap_or(0),
104        SCX_ENQ_LAST: read_enum("scx_enq_flags","SCX_ENQ_LAST").unwrap_or(0),
105        SCX_ENQ_CLEAR_OPSS: read_enum("scx_enq_flags","SCX_ENQ_CLEAR_OPSS").unwrap_or(0),
106        SCX_ENQ_DSQ_PRIQ: read_enum("scx_enq_flags","SCX_ENQ_DSQ_PRIQ").unwrap_or(0),
107        SCX_DEQ_SCHED_CHANGE: read_enum("scx_deq_flags","SCX_DEQ_SCHED_CHANGE").unwrap_or(0),
108    };
109}
110
111#[rustfmt::skip]
112#[macro_export]
113macro_rules! import_enums {
114    ($skel: ident) => { 'block : {
115        let rodata = $skel.maps.rodata_data.as_mut().unwrap();
116        rodata.__SCX_OPS_NAME_LEN = $crate::scx_enums.SCX_OPS_NAME_LEN;
117        rodata.__SCX_SLICE_DFL = $crate::scx_enums.SCX_SLICE_DFL;
118        rodata.__SCX_SLICE_INF = $crate::scx_enums.SCX_SLICE_INF;
119        rodata.__SCX_RESCUE_DISABLE = $crate::scx_enums.SCX_RESCUE_DISABLE;
120        rodata.__SCX_RQ_ONLINE = $crate::scx_enums.SCX_RQ_ONLINE;
121        rodata.__SCX_RQ_CAN_STOP_TICK = $crate::scx_enums.SCX_RQ_CAN_STOP_TICK;
122        rodata.__SCX_RQ_CLK_VALID = $crate::scx_enums.SCX_RQ_CLK_VALID;
123        rodata.__SCX_RQ_IN_WAKEUP = $crate::scx_enums.SCX_RQ_IN_WAKEUP;
124        rodata.__SCX_RQ_IN_DISPATCH = $crate::scx_enums.SCX_RQ_IN_DISPATCH;
125        rodata.__SCX_DSQ_FLAG_BUILTIN = $crate::scx_enums.SCX_DSQ_FLAG_BUILTIN;
126        rodata.__SCX_DSQ_FLAG_LOCAL_ON = $crate::scx_enums.SCX_DSQ_FLAG_LOCAL_ON;
127        rodata.__SCX_DSQ_INVALID = $crate::scx_enums.SCX_DSQ_INVALID;
128        rodata.__SCX_DSQ_GLOBAL = $crate::scx_enums.SCX_DSQ_GLOBAL;
129        rodata.__SCX_DSQ_LOCAL = $crate::scx_enums.SCX_DSQ_LOCAL;
130        rodata.__SCX_DSQ_LOCAL_ON = $crate::scx_enums.SCX_DSQ_LOCAL_ON;
131        rodata.__SCX_DSQ_LOCAL_CPU_MASK = $crate::scx_enums.SCX_DSQ_LOCAL_CPU_MASK;
132        rodata.__SCX_TASK_QUEUED = $crate::scx_enums.SCX_TASK_QUEUED;
133        rodata.__SCX_TASK_RESET_RUNNABLE_AT = $crate::scx_enums.SCX_TASK_RESET_RUNNABLE_AT;
134        rodata.__SCX_TASK_DEQD_FOR_SLEEP = $crate::scx_enums.SCX_TASK_DEQD_FOR_SLEEP;
135        rodata.__SCX_TASK_SUB_INIT = $crate::scx_enums.SCX_TASK_SUB_INIT;
136        rodata.__SCX_TASK_IMMED = $crate::scx_enums.SCX_TASK_IMMED;
137        rodata.__SCX_TASK_STATE_SHIFT = $crate::scx_enums.SCX_TASK_STATE_SHIFT;
138        rodata.__SCX_TASK_STATE_BITS = $crate::scx_enums.SCX_TASK_STATE_BITS;
139        rodata.__SCX_TASK_STATE_MASK = $crate::scx_enums.SCX_TASK_STATE_MASK;
140        rodata.__SCX_TASK_CURSOR = $crate::scx_enums.SCX_TASK_CURSOR;
141        rodata.__SCX_TASK_NONE = $crate::scx_enums.SCX_TASK_NONE;
142        rodata.__SCX_TASK_INIT = $crate::scx_enums.SCX_TASK_INIT;
143        rodata.__SCX_TASK_READY = $crate::scx_enums.SCX_TASK_READY;
144        rodata.__SCX_TASK_ENABLED = $crate::scx_enums.SCX_TASK_ENABLED;
145        rodata.__SCX_TASK_DSQ_ON_PRIQ = $crate::scx_enums.SCX_TASK_DSQ_ON_PRIQ;
146        rodata.__SCX_KICK_IDLE = $crate::scx_enums.SCX_KICK_IDLE;
147        rodata.__SCX_KICK_PREEMPT = $crate::scx_enums.SCX_KICK_PREEMPT;
148        rodata.__SCX_KICK_WAIT = $crate::scx_enums.SCX_KICK_WAIT;
149        rodata.__SCX_KICK_PREEMPT_LAZY = $crate::scx_enums.SCX_KICK_PREEMPT_LAZY;
150        rodata.__SCX_KICK_ALL_FLAGS = $crate::scx_enums.SCX_KICK_ALL_FLAGS;
151        rodata.__SCX_ENQ_WAKEUP = $crate::scx_enums.SCX_ENQ_WAKEUP;
152        rodata.__SCX_ENQ_HEAD = $crate::scx_enums.SCX_ENQ_HEAD;
153        rodata.__SCX_ENQ_CPU_SELECTED = $crate::scx_enums.SCX_ENQ_CPU_SELECTED;
154        rodata.__SCX_ENQ_PREEMPT = $crate::scx_enums.SCX_ENQ_PREEMPT;
155        rodata.__SCX_ENQ_PREEMPT_LAZY = $crate::scx_enums.SCX_ENQ_PREEMPT_LAZY;
156        rodata.__SCX_ENQ_IMMED = $crate::scx_enums.SCX_ENQ_IMMED;
157        rodata.__SCX_ENQ_RESCUE = $crate::scx_enums.SCX_ENQ_RESCUE;
158        rodata.__SCX_ENQ_BLOCKED = $crate::scx_enums.SCX_ENQ_BLOCKED;
159        rodata.__SCX_ENQ_REENQ = $crate::scx_enums.SCX_ENQ_REENQ;
160        rodata.__SCX_ENQ_LAST = $crate::scx_enums.SCX_ENQ_LAST;
161        rodata.__SCX_ENQ_CLEAR_OPSS = $crate::scx_enums.SCX_ENQ_CLEAR_OPSS;
162        rodata.__SCX_ENQ_DSQ_PRIQ = $crate::scx_enums.SCX_ENQ_DSQ_PRIQ;
163        rodata.__SCX_DEQ_SCHED_CHANGE = $crate::scx_enums.SCX_DEQ_SCHED_CHANGE;
164    }};
165}