-@lldb_type_summary(['struct kqrequest *'])
-@header('{:<20s} {:<20s} {:<5s} {:<5s} {:<5s} {:<5s} {:s}'.format('kqrequest', 'thread', 'qos', 'ovr_qos', 'w_qos', 'sa_qos', 'state'))
-def GetKqrequestSummary(kqr):
- """ Summarize kqrequest information
-
- params:
- kqr - the kqrequest object
- returns: str - summary of kqrequest
- """
- fmt = '{kqrp: <#020x} {kqr.kqr_bound.kqrb_thread: <#020x} {qos: <5s} {ovr_qos: <5s} {w_qos: <5s} {sa_qos: <5s} {state_str:<s}'
- return fmt.format(kqrp=int(kqr),
- kqr=kqr,
- qos=xnudefines.thread_qos_short_strings[int(kqr.kqr_qos_index)],
- ovr_qos=xnudefines.thread_qos_short_strings[int(kqr.kqr_override_index)],
- w_qos=xnudefines.thread_qos_short_strings[int(kqr.kqr_dsync_waiters_qos)],
- sa_qos=xnudefines.thread_qos_short_strings[int(kqr.kqr_stayactive_qos)],
- state_str=xnudefines.GetStateString(xnudefines.kqrequest_state_strings, kqr.kqr_state))
-
-@lldb_command('showkqrequest')
-def ShowKqrequest(cmd_args=None):
- """ Display information about a kqrequest object.
-
- usage: showkqrequest <struct kqrequest *>
- """
- if len(cmd_args) < 1:
- raise ArgumentError('missing struct kqrequest * argument')
- kqr = kern.GetValueFromAddress(cmd_args[0], 'struct kqrequest *')
- print GetKqrequestSummary.header
- print GetKqrequestSummary(kqr)
- print GetKnoteSummary.header
- for kn in IterateTAILQ_HEAD(kqr.kqr_suppressed, 'kn_tqe'):
- print GetKnoteSummary(kn)