svn commit: r213536 - in head: bin/ps sys/kern sys/sys

Ed Maste emaste at FreeBSD.org
Fri Oct 8 00:44:53 UTC 2010


Author: emaste
Date: Fri Oct  8 00:44:53 2010
New Revision: 213536
URL: http://svn.freebsd.org/changeset/base/213536

Log:
  Make a thread's address available via the kern proc sysctl, just like the
  process address.
  
  Add "tdaddr" keyword to ps(1) to display this thread address.
  
  Distilled from Sandvine's patch set by Mark Johnston.

Modified:
  head/bin/ps/keyword.c
  head/bin/ps/ps.1
  head/sys/kern/kern_proc.c
  head/sys/sys/user.h

Modified: head/bin/ps/keyword.c
==============================================================================
--- head/bin/ps/keyword.c	Thu Oct  7 21:56:10 2010	(r213535)
+++ head/bin/ps/keyword.c	Fri Oct  8 00:44:53 2010	(r213536)
@@ -187,6 +187,8 @@ static VAR var[] = {
 		UINT, UIDFMT, 0},
 	{"svuid", "SVUID", NULL, 0, kvar, NULL, UIDLEN, KOFF(ki_svuid),
 		UINT, UIDFMT, 0},
+	{"tdaddr", "TDADDR", NULL, 0, kvar, NULL, sizeof(void *) * 2,
+		KOFF(ki_tdaddr), KPTR, "lx", 0},
 	{"tdev", "TDEV", NULL, 0, tdev, NULL, 5, 0, CHAR, NULL, 0},
 	{"tdnam", "TDNAM", NULL, LJUST, tdnam, NULL, COMMLEN, 0, CHAR, NULL, 0},
 	{"time", "TIME", NULL, USER, cputime, NULL, 9, 0, CHAR, NULL, 0},

Modified: head/bin/ps/ps.1
==============================================================================
--- head/bin/ps/ps.1	Thu Oct  7 21:56:10 2010	(r213535)
+++ head/bin/ps/ps.1	Fri Oct  8 00:44:53 2010	(r213536)
@@ -591,6 +591,8 @@ symbolic process state (alias
 saved gid from a setgid executable
 .It Cm svuid
 saved UID from a setuid executable
+.It Cm tdaddr
+thread address
 .It Cm tdev
 control terminal device number
 .It Cm time

Modified: head/sys/kern/kern_proc.c
==============================================================================
--- head/sys/kern/kern_proc.c	Thu Oct  7 21:56:10 2010	(r213535)
+++ head/sys/kern/kern_proc.c	Fri Oct  8 00:44:53 2010	(r213536)
@@ -842,6 +842,7 @@ fill_kinfo_thread(struct thread *td, str
 	struct proc *p;
 
 	p = td->td_proc;
+	kp->ki_tdaddr = td;
 	PROC_LOCK_ASSERT(p, MA_OWNED);
 
 	thread_lock(td);

Modified: head/sys/sys/user.h
==============================================================================
--- head/sys/sys/user.h	Thu Oct  7 21:56:10 2010	(r213535)
+++ head/sys/sys/user.h	Fri Oct  8 00:44:53 2010	(r213536)
@@ -85,7 +85,7 @@
  */
 #define	KI_NSPARE_INT	9
 #define	KI_NSPARE_LONG	12
-#define	KI_NSPARE_PTR	7
+#define	KI_NSPARE_PTR	6
 
 #ifndef _KERNEL
 #ifndef KINFO_PROC_SIZE
@@ -188,6 +188,7 @@ struct kinfo_proc {
 	struct	pcb *ki_pcb;		/* kernel virtual addr of pcb */
 	void	*ki_kstack;		/* kernel virtual addr of stack */
 	void	*ki_udata;		/* User convenience pointer */
+	struct	thread *ki_tdaddr;	/* address of thread */
 	/*
 	 * When adding new variables, take space for pointers from the
 	 * front of ki_spareptrs, and longs from the end of ki_sparelongs.


More information about the svn-src-head mailing list