| #!/usr/bin/env drgn | |
| # | |
| # Copyright (C) 2024 Tejun Heo <tj@kernel.org> | |
| # Copyright (C) 2024 Meta Platforms, Inc. and affiliates. | |
| desc = """ | |
| This is a drgn script to show the current sched_ext state. | |
| For more info on drgn, visit https://github.com/osandov/drgn. | |
| """ | |
| import drgn | |
| import sys | |
| def err(s): | |
| print(s, file=sys.stderr, flush=True) | |
| sys.exit(1) | |
| def read_int(name): | |
| return int(prog[name].value_()) | |
| def read_atomic(name): | |
| return prog[name].counter.value_() | |
| def read_static_key(name): | |
| return prog[name].key.enabled.counter.value_() | |
| def state_str(state): | |
| return prog['scx_enable_state_str'][state].string_().decode() | |
| def read_root_ops_name(): | |
| if root: | |
| return root.ops.name.string_().decode() | |
| return '' | |
| def read_root_field(name, default): | |
| if root: | |
| return getattr(root, name).value_() | |
| return default | |
| root = prog['scx_root'] | |
| enable_state = read_atomic("scx_enable_state_var") | |
| print(f'ops : {read_root_ops_name()}') | |
| print(f'enabled : {read_static_key("__scx_enabled")}') | |
| print(f'switching_all : {read_int("scx_switching_all")}') | |
| print(f'switched_all : {read_static_key("__scx_switched_all")}') | |
| print(f'enable_state : {state_str(enable_state)} ({enable_state})') | |
| print(f'aborting : {read_root_field("aborting", False)}') | |
| print(f'bypass_depth : {read_root_field("bypass_depth", 0)}') | |
| print(f'nr_rejected : {read_atomic("scx_nr_rejected")}') | |
| print(f'enable_seq : {read_atomic("scx_enable_seq")}') |