Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F153972775
D56538.id175945.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D56538.id175945.diff
View Options
diff --git a/lib/libkvm/kvm_proc.c b/lib/libkvm/kvm_proc.c
--- a/lib/libkvm/kvm_proc.c
+++ b/lib/libkvm/kvm_proc.c
@@ -365,6 +365,16 @@
kp->ki_xstat = KW_EXITCODE(proc.p_xexit, proc.p_xsig);
kp->ki_acflag = proc.p_acflag;
kp->ki_lock = proc.p_lock;
+ if (proc.p_reaper != NULL) {
+ struct proc rproc;
+ if (KREAD(kd, (u_long)proc.p_reaper, &rproc)) {
+ _kvm_err(kd, kd->program,
+ "can't read reaper at %p", proc.p_reaper);
+ return (-1);
+ }
+ kp->ki_reaper = rproc.p_pid;
+ }
+ kp->ki_reapsubtree = proc.p_reapsubtree;
kp->ki_tdev_freebsd11 = kp->ki_tdev; /* truncate */
/* Per-thread items; iterate as appropriate. */
diff --git a/sys/compat/freebsd32/freebsd32.h b/sys/compat/freebsd32/freebsd32.h
--- a/sys/compat/freebsd32/freebsd32.h
+++ b/sys/compat/freebsd32/freebsd32.h
@@ -393,6 +393,8 @@
char ki_loginclass[LOGINCLASSLEN+1];
char ki_moretdname[MAXCOMLEN-TDNAMLEN+1];
char ki_sparestrings[46];
+ pid_t ki_reaper;
+ pid_t ki_reapsubtree;
int ki_spareints[KI_NSPARE_INT];
freebsd32_uint64_t ki_tdev;
int ki_oncpu;
diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c
--- a/sys/kern/kern_proc.c
+++ b/sys/kern/kern_proc.c
@@ -1235,6 +1235,11 @@
kp->ki_tdev = NODEV;
kp->ki_tdev_freebsd11 = kp->ki_tdev; /* truncate */
}
+ if (p->p_reaper != NULL)
+ kp->ki_reaper = p->p_reaper->p_pid;
+ else
+ kp->ki_reaper = NO_PID;
+ kp->ki_reapsubtree = p->p_reapsubtree;
}
/*
@@ -1494,6 +1499,8 @@
CP(*ki, *ki32, ki_fibnum);
CP(*ki, *ki32, ki_cr_flags);
CP(*ki, *ki32, ki_jid);
+ CP(*ki, *ki32, ki_reaper);
+ CP(*ki, *ki32, ki_reapsubtree);
CP(*ki, *ki32, ki_numthreads);
CP(*ki, *ki32, ki_tid);
CP(*ki, *ki32, ki_pri);
@@ -3632,3 +3639,4 @@
sysctl_debug_stop_all_proc, "I",
"");
#endif
+
diff --git a/sys/sys/user.h b/sys/sys/user.h
--- a/sys/sys/user.h
+++ b/sys/sys/user.h
@@ -84,7 +84,7 @@
* it in two places: function fill_kinfo_proc in sys/kern/kern_proc.c and
* function kvm_proclist in lib/libkvm/kvm_proc.c .
*/
-#define KI_NSPARE_INT 2
+#define KI_NSPARE_INT 0
#define KI_NSPARE_LONG 12
#define KI_NSPARE_PTR 4
@@ -187,6 +187,8 @@
* That way the spare room from both arrays will remain contiguous.
*/
char ki_sparestrings[46]; /* spare string space */
+ pid_t ki_reaper; /* pid of reaper process */
+ pid_t ki_reapsubtree; /* reaper subtree id */
int ki_spareints[KI_NSPARE_INT]; /* spare room for growth */
uint64_t ki_tdev; /* controlling tty dev */
int ki_oncpu; /* Which cpu we are on */
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Apr 26, 4:58 AM (4 h, 10 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
32163357
Default Alt Text
D56538.id175945.diff (2 KB)
Attached To
Mode
D56538: kern/proc: expose reaper PID and subtree root in struct kinfo_proc
Attached
Detach File
Event Timeline
Log In to Comment