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 ops_state_str(state): 28 return prog['scx_ops_enable_state_str'][state].string_().decode() 29 30ops = prog['scx_ops'] 31enable_state = read_atomic("scx_ops_enable_state_var") 32 33print(f'ops : {ops.name.string_().decode()}') 34print(f'enabled : {read_static_key("__scx_ops_enabled")}') 35print(f'switching_all : {read_int("scx_switching_all")}') 36print(f'switched_all : {read_static_key("__scx_switched_all")}') 37print(f'enable_state : {ops_state_str(enable_state)} ({enable_state})') 38print(f'in_softlockup : {prog["scx_in_softlockup"].value_()}') 39print(f'breather_depth: {read_atomic("scx_ops_breather_depth")}') 40print(f'bypass_depth : {prog["scx_ops_bypass_depth"].value_()}') 41print(f'nr_rejected : {read_atomic("scx_nr_rejected")}') 42print(f'enable_seq : {read_atomic("scx_enable_seq")}') 43