| 845 | } |
| 846 | |
| 847 | static void |
| 848 | _db_stack_trace_all(bool active_only) |
| 849 | { |
| 850 | struct thread *td; |
| 851 | jmp_buf jb; |
| 852 | void *prev_jb; |
| 853 | |
| 854 | for (td = kdb_thr_first(); td != NULL; td = kdb_thr_next(td)) { |
| 855 | prev_jb = kdb_jmpbuf(jb); |
| 856 | if (setjmp(jb) == 0) { |
| 857 | if (td->td_state == TDS_RUNNING) |
| 858 | db_printf("\nTracing command %s pid %d" |
| 859 | " tid %ld td %p (CPU %d)\n", |
| 860 | td->td_proc->p_comm, td->td_proc->p_pid, |
| 861 | (long)td->td_tid, td, td->td_oncpu); |
| 862 | else if (active_only) |
| 863 | continue; |
| 864 | else |
| 865 | db_printf("\nTracing command %s pid %d" |
| 866 | " tid %ld td %p\n", td->td_proc->p_comm, |
| 867 | td->td_proc->p_pid, (long)td->td_tid, td); |
| 868 | if (td->td_proc->p_flag & P_INMEM) |
| 869 | db_trace_thread(td, -1); |
| 870 | else |
| 871 | db_printf("--- swapped out\n"); |
| 872 | if (db_pager_quit) { |
| 873 | kdb_jmpbuf(prev_jb); |
| 874 | return; |
| 875 | } |
| 876 | } |
| 877 | kdb_jmpbuf(prev_jb); |
| 878 | } |
| 879 | } |
| 880 | |
| 881 | static void |
| 882 | db_stack_trace_active(db_expr_t dummy, bool dummy2, db_expr_t dummy3, |
no test coverage detected