diff --git a/sys/ddb/db_command.c b/sys/ddb/db_command.c --- a/sys/ddb/db_command.c +++ b/sys/ddb/db_command.c @@ -847,32 +847,31 @@ static void _db_stack_trace_all(bool active_only) { - struct proc *p; struct thread *td; jmp_buf jb; void *prev_jb; - FOREACH_PROC_IN_SYSTEM(p) { + for (td = kdb_thr_first(); td != NULL; td = kdb_thr_next(td)) { prev_jb = kdb_jmpbuf(jb); if (setjmp(jb) == 0) { - FOREACH_THREAD_IN_PROC(p, td) { - if (td->td_state == TDS_RUNNING) - db_printf("\nTracing command %s pid %d" - " tid %ld td %p (CPU %d)\n", - p->p_comm, p->p_pid, - (long)td->td_tid, td, - td->td_oncpu); - else if (active_only) - continue; - else - db_printf("\nTracing command %s pid %d" - " tid %ld td %p\n", p->p_comm, - p->p_pid, (long)td->td_tid, td); + if (td->td_state == TDS_RUNNING) + db_printf("\nTracing command %s pid %d" + " tid %ld td %p (CPU %d)\n", + td->td_proc->p_comm, td->td_proc->p_pid, + (long)td->td_tid, td, td->td_oncpu); + else if (active_only) + continue; + else + db_printf("\nTracing command %s pid %d" + " tid %ld td %p\n", td->td_proc->p_comm, + td->td_proc->p_pid, (long)td->td_tid, td); + if (td->td_proc->p_flag & P_INMEM) db_trace_thread(td, -1); - if (db_pager_quit) { - kdb_jmpbuf(prev_jb); - return; - } + else + db_printf("--- swapped out\n"); + if (db_pager_quit) { + kdb_jmpbuf(prev_jb); + return; } } kdb_jmpbuf(prev_jb); diff --git a/sys/ddb/db_ps.c b/sys/ddb/db_ps.c --- a/sys/ddb/db_ps.c +++ b/sys/ddb/db_ps.c @@ -512,7 +512,6 @@ db_findstack_cmd(db_expr_t addr, bool have_addr, db_expr_t dummy3 __unused, char *dummy4 __unused) { - struct proc *p; struct thread *td; vm_offset_t saddr; @@ -523,12 +522,10 @@ return; } - FOREACH_PROC_IN_SYSTEM(p) { - FOREACH_THREAD_IN_PROC(p, td) { - if (kstack_contains(td, saddr, 1)) { - db_printf("Thread %p\n", td); - return; - } + for (td = kdb_thr_first(); td != NULL; td = kdb_thr_next(td)) { + if (kstack_contains(td, saddr, 1)) { + db_printf("Thread %p\n", td); + return; } } }