Changeset View
Changeset View
Standalone View
Standalone View
sys/ddb/db_ps.c
Show First 20 Lines • Show All 167 Lines • ▼ Show 20 Lines | else { | ||||
* highest precedence. The | * highest precedence. The | ||||
* precendence order from high to low | * precendence order from high to low | ||||
* is R, L, D, S, W. If no thread is | * is R, L, D, S, W. If no thread is | ||||
* in a sane state we use '?' for our | * in a sane state we use '?' for our | ||||
* primary state. | * primary state. | ||||
*/ | */ | ||||
rflag = sflag = dflag = lflag = wflag = 0; | rflag = sflag = dflag = lflag = wflag = 0; | ||||
FOREACH_THREAD_IN_PROC(p, td) { | FOREACH_THREAD_IN_PROC(p, td) { | ||||
if (td->td_state == TDS_RUNNING || | if (TD_GET_STATE(td) == TDS_RUNNING || | ||||
td->td_state == TDS_RUNQ || | TD_GET_STATE(td) == TDS_RUNQ || | ||||
td->td_state == TDS_CAN_RUN) | TD_GET_STATE(td) == TDS_CAN_RUN) | ||||
rflag++; | rflag++; | ||||
if (TD_ON_LOCK(td)) | if (TD_ON_LOCK(td)) | ||||
lflag++; | lflag++; | ||||
if (TD_IS_SLEEPING(td)) { | if (TD_IS_SLEEPING(td)) { | ||||
if (!(td->td_flags & TDF_SINTR)) | if (!(td->td_flags & TDF_SINTR)) | ||||
dflag++; | dflag++; | ||||
else | else | ||||
sflag++; | sflag++; | ||||
▲ Show 20 Lines • Show All 75 Lines • ▼ Show 20 Lines | |||||
dumpthread(volatile struct proc *p, volatile struct thread *td, int all) | dumpthread(volatile struct proc *p, volatile struct thread *td, int all) | ||||
{ | { | ||||
char state[9], wprefix; | char state[9], wprefix; | ||||
const char *wmesg; | const char *wmesg; | ||||
const void *wchan; | const void *wchan; | ||||
if (all) { | if (all) { | ||||
db_printf("%6d ", td->td_tid); | db_printf("%6d ", td->td_tid); | ||||
switch (td->td_state) { | switch (TD_GET_STATE(td)) { | ||||
case TDS_RUNNING: | case TDS_RUNNING: | ||||
snprintf(state, sizeof(state), "Run"); | snprintf(state, sizeof(state), "Run"); | ||||
break; | break; | ||||
case TDS_RUNQ: | case TDS_RUNQ: | ||||
snprintf(state, sizeof(state), "RunQ"); | snprintf(state, sizeof(state), "RunQ"); | ||||
break; | break; | ||||
case TDS_CAN_RUN: | case TDS_CAN_RUN: | ||||
snprintf(state, sizeof(state), "CanRun"); | snprintf(state, sizeof(state), "CanRun"); | ||||
▲ Show 20 Lines • Show All 83 Lines • ▼ Show 20 Lines | DB_SHOW_COMMAND(thread, db_show_thread) | ||||
if (td->td_name[0] != '\0') | if (td->td_name[0] != '\0') | ||||
db_printf(" name: %s\n", td->td_name); | db_printf(" name: %s\n", td->td_name); | ||||
db_printf(" pcb: %p\n", td->td_pcb); | db_printf(" pcb: %p\n", td->td_pcb); | ||||
db_printf(" stack: %p-%p\n", (void *)td->td_kstack, | db_printf(" stack: %p-%p\n", (void *)td->td_kstack, | ||||
(void *)(td->td_kstack + td->td_kstack_pages * PAGE_SIZE - 1)); | (void *)(td->td_kstack + td->td_kstack_pages * PAGE_SIZE - 1)); | ||||
db_printf(" flags: %#x ", td->td_flags); | db_printf(" flags: %#x ", td->td_flags); | ||||
db_printf(" pflags: %#x\n", td->td_pflags); | db_printf(" pflags: %#x\n", td->td_pflags); | ||||
db_printf(" state: "); | db_printf(" state: "); | ||||
switch (td->td_state) { | switch (TD_GET_STATE(td)) { | ||||
case TDS_INACTIVE: | case TDS_INACTIVE: | ||||
db_printf("INACTIVE\n"); | db_printf("INACTIVE\n"); | ||||
break; | break; | ||||
case TDS_CAN_RUN: | case TDS_CAN_RUN: | ||||
db_printf("CAN RUN\n"); | db_printf("CAN RUN\n"); | ||||
break; | break; | ||||
case TDS_RUNQ: | case TDS_RUNQ: | ||||
db_printf("RUNQ\n"); | db_printf("RUNQ\n"); | ||||
Show All 29 Lines | case TDS_INHIBITED: | ||||
if (TD_AWAITING_INTR(td)) { | if (TD_AWAITING_INTR(td)) { | ||||
if (comma) | if (comma) | ||||
db_printf(", "); | db_printf(", "); | ||||
db_printf("IWAIT"); | db_printf("IWAIT"); | ||||
} | } | ||||
db_printf("}\n"); | db_printf("}\n"); | ||||
break; | break; | ||||
default: | default: | ||||
db_printf("??? (%#x)\n", td->td_state); | db_printf("??? (%#x)\n", TD_GET_STATE(td)); | ||||
break; | break; | ||||
} | } | ||||
if (TD_ON_LOCK(td)) | if (TD_ON_LOCK(td)) | ||||
db_printf(" lock: %s turnstile: %p\n", td->td_lockname, | db_printf(" lock: %s turnstile: %p\n", td->td_lockname, | ||||
td->td_blocked); | td->td_blocked); | ||||
if (TD_ON_SLEEPQ(td)) | if (TD_ON_SLEEPQ(td)) | ||||
db_printf( | db_printf( | ||||
" wmesg: %s wchan: %p sleeptimo %lx. %jx (curr %lx. %jx)\n", | " wmesg: %s wchan: %p sleeptimo %lx. %jx (curr %lx. %jx)\n", | ||||
▲ Show 20 Lines • Show All 109 Lines • Show Last 20 Lines |