from __future__ import absolute_import from __future__ import print_function from xnu import * @lldb_type_summary(['workload_config_entry_t *']) @header("{0: <20s} {1: <40s} {2: <18s} {3: <18s}".format("workload", "id", "default phase", "phases")) def GetWorkloadConfigSummary(workload): """ Summarizes workload_config_entry structure params: workload: value - value object representing workload_config_entry returns: str - summary of the workload object """ format_string = '{0: <#020x} {1: <40s} {2: <#018x} {2: <#018x}' return format_string.format(workload, str(workload.wce_id), workload.wce_default, workload.wce_phases) @lldb_type_summary(['workload_phase_entry_t *']) @header("{0: <20s} {1: <25s} {2: <10s} {3: <10s} {4: <10s} {5: <20s}".format("phase", "id", "flags", "cflags", "tflags", "criticality offset")) def GetWorkloadPhaseSummary(phase): """ Summarizes workload_phase_entry structure params: phase: value - value object representing workload_phase_entry returns: str - summary of the workload phase object """ format_string = '{0: <#020x} {1: <25s} {2: <#010x} {3: <#010x} {4: <#010x} {4: <20d} ' return format_string.format(phase, str(phase.wpe_phase), phase.wpe_config.wc_flags, phase.wpe_config.wc_create_flags, phase.wpe_config.wc_thread_group_flags, phase.wpe_config.wc_criticality_offset) # Macro: showallworkloadconfig @lldb_command('showallworkloadconfig') def ShowAllWorkloadConfig(cmd_args=None, cmd_options={}): """ Routine to print the all workload configurations. Usage: showallworkloadconfig """ print(GetWorkloadConfigSummary.header) table = kern.globals.workload_config_boot.wlcc_hashtbl mask = kern.globals.workload_config_boot.wlcc_hash_mask if table != 0: for i in range(mask + 1): for entry in IterateListEntry(table[i], 'wce_link'): print(GetWorkloadConfigSummary(entry)) # EndMacro: showallworkloadconfig # Macro: showworkloadconfig @lldb_command('showworkloadconfig', 'F:') def ShowWorkloadConfig(cmd_args=None, cmd_options={}): """ Routine to print a summary listing of given workload config Usage: showworkloadconfig
or : showworkloadconfig -F