Page MenuHomeFreeBSD

D27827.diff
No OneTemporary

D27827.diff

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
@@ -838,7 +838,10 @@
else
pid = -1;
db_printf("Tracing pid %d tid %ld td %p\n", pid, (long)td->td_tid, td);
- db_trace_thread(td, count);
+ if (td->td_proc != NULL && (td->td_proc->p_flag & P_INMEM) == 0)
+ db_printf("--- swapped out\n");
+ else
+ db_trace_thread(td, count);
}
static void
diff --git a/sys/ddb/db_thread.c b/sys/ddb/db_thread.c
--- a/sys/ddb/db_thread.c
+++ b/sys/ddb/db_thread.c
@@ -90,8 +90,11 @@
(void *)thr->td_kstack);
prev_jb = kdb_jmpbuf(jb);
if (setjmp(jb) == 0) {
- if (db_trace_thread(thr, 1) != 0)
- db_printf("***\n");
+ if (thr->td_proc->p_flag & P_INMEM) {
+ if (db_trace_thread(thr, 1) != 0)
+ db_printf("***\n");
+ } else
+ db_printf("*** swapped out\n");
}
kdb_jmpbuf(prev_jb);
thr = kdb_thr_next(thr);
diff --git a/sys/kern/subr_kdb.c b/sys/kern/subr_kdb.c
--- a/sys/kern/subr_kdb.c
+++ b/sys/kern/subr_kdb.c
@@ -590,11 +590,9 @@
for (i = 0; i <= pidhash; i++) {
LIST_FOREACH(p, &pidhashtbl[i], p_hash) {
- if (p->p_flag & P_INMEM) {
- thr = FIRST_THREAD_IN_PROC(p);
- if (thr != NULL)
- return (thr);
- }
+ thr = FIRST_THREAD_IN_PROC(p);
+ if (thr != NULL)
+ return (thr);
}
}
return (NULL);
@@ -606,7 +604,7 @@
struct proc *p;
LIST_FOREACH(p, PIDHASH(pid), p_hash) {
- if (p->p_flag & P_INMEM && p->p_pid == pid)
+ if (p->p_pid == pid)
return (FIRST_THREAD_IN_PROC(p));
}
return (NULL);
@@ -641,8 +639,9 @@
return (NULL);
p = LIST_FIRST(&pidhashtbl[hash]);
}
- if (p->p_flag & P_INMEM)
- return (FIRST_THREAD_IN_PROC(p));
+ thr = FIRST_THREAD_IN_PROC(p);
+ if (thr != NULL)
+ return (thr);
}
}

File Metadata

Mime Type
text/plain
Expires
Wed, Jul 1, 1:14 PM (16 h, 41 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34561975
Default Alt Text
D27827.diff (1 KB)

Event Timeline