1#!/usr/bin/env drgn 2# 3# Copyright (C) 2024 Tejun Heo <tj@kernel.org> 4# Copyright (C) 2024 Meta Platforms, Inc. and affiliates. 5 6desc = """ 7This is a drgn script to show the current sched_ext state. 8For more info on drgn, visit https://github.com/osandov/drgn. 9""" 10 11import drgn 12import sys 13 14def err(s): 15 print(s, file=sys.stderr, flush=True) 16 sys.exit(1) 17 18def read_int(name): 19 return int(prog[name].value_()) 20 21def read_atomic(name): 22 return prog[name].counter.value_() 23 24def read_static_key(name): 25 return prog[name].key.enabled.counter.value_() 26 27def state_str(state): 28 return prog['scx_enable_state_str'][state].string_().decode() 29 30def read_root_ops_name(): 31 if root: 32 return root.ops.name.string_().decode() 33 return '' 34 35def read_root_field(name, default): 36 if root: 37 return getattr(root, name).value_() 38 return default 39 40root = prog['scx_root'] 41enable_state = read_atomic("scx_enable_state_var") 42 43print(f'ops : {read_root_ops_name()}') 44print(f'enabled : {read_static_key("__scx_enabled")}') 45print(f'switching_all : {read_int("scx_switching_all")}') 46print(f'switched_all : {read_static_key("__scx_switched_all")}') 47print(f'enable_state : {state_str(enable_state)} ({enable_state})') 48print(f'aborting : {read_root_field("aborting", False)}') 49print(f'bypass_depth : {read_root_field("bypass_depth", 0)}') 50print(f'nr_rejected : {read_atomic("scx_nr_rejected")}') 51print(f'enable_seq : {read_atomic("scx_enable_seq")}') 52