Module Name: src
Committed By: alnsn
Date: Wed Jun 1 21:28:33 UTC 2011
Modified Files:
src/usr.bin/kdump: kdump.c
src/usr.bin/ktrace: ktrace.1 subr.c
Log Message:
kern/42030 - tracking of file descriptors by ktrace/kdump
To generate a diff of this commit:
cvs rdiff -u -r1.111 -r1.112 src/usr.bin/kdump/kdump.c
cvs rdiff -u -r1.40 -r1.41 src/usr.bin/ktrace/ktrace.1
cvs rdiff -u -r1.17 -r1.18 src/usr.bin/ktrace/subr.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.bin/kdump/kdump.c
diff -u src/usr.bin/kdump/kdump.c:1.111 src/usr.bin/kdump/kdump.c:1.112
--- src/usr.bin/kdump/kdump.c:1.111 Wed Apr 27 00:00:47 2011
+++ src/usr.bin/kdump/kdump.c Wed Jun 1 21:28:32 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: kdump.c,v 1.111 2011/04/27 00:00:47 joerg Exp $ */
+/* $NetBSD: kdump.c,v 1.112 2011/06/01 21:28:32 alnsn Exp $ */
/*-
* Copyright (c) 1988, 1993
@@ -39,12 +39,14 @@
#if 0
static char sccsid[] = "@(#)kdump.c 8.4 (Berkeley) 4/28/95";
#else
-__RCSID("$NetBSD: kdump.c,v 1.111 2011/04/27 00:00:47 joerg Exp $");
+__RCSID("$NetBSD: kdump.c,v 1.112 2011/06/01 21:28:32 alnsn Exp $");
#endif
#endif /* not lint */
#include <sys/param.h>
+#include <sys/proc.h> /* XXX #include <sys/file.h> fails without this header */
#define _KERNEL
+#include <sys/file.h>
#include <sys/errno.h>
#undef _KERNEL
#include <sys/time.h>
@@ -115,6 +117,7 @@
static void ktrcsw(struct ktr_csw *);
static void ktruser(struct ktr_user *, int);
static void ktrmib(int *, int);
+static void ktrexecfd(struct ktr_execfd *);
static void usage(void) __dead;
static void eprint(int);
static void rprint(register_t);
@@ -294,6 +297,9 @@
case KTR_EXEC_ENV:
visdump_buf(m, ktrlen, col);
break;
+ case KTR_EXEC_FD:
+ ktrexecfd(m);
+ break;
case KTR_MIB:
ktrmib(m, ktrlen);
break;
@@ -363,6 +369,9 @@
case KTR_EXEC_ARG:
type = "ARG";
break;
+ case KTR_EXEC_FD:
+ type = "FD";
+ break;
case KTR_SAUPCALL:
type = "SAU";
break;
@@ -632,6 +641,16 @@
}
static void
+ktrexecfd(struct ktr_execfd *ktr)
+{
+ static const char *dnames[] = { DTYPE_NAMES };
+ if (ktr->ktr_dtype < __arraycount(dnames))
+ printf("%s %d\n", dnames[ktr->ktr_dtype], ktr->ktr_fd);
+ else
+ printf("UNKNOWN(%u) %d\n", ktr->ktr_dtype, ktr->ktr_fd);
+}
+
+static void
rprint(register_t ret)
{
Index: src/usr.bin/ktrace/ktrace.1
diff -u src/usr.bin/ktrace/ktrace.1:1.40 src/usr.bin/ktrace/ktrace.1:1.41
--- src/usr.bin/ktrace/ktrace.1:1.40 Wed Apr 27 00:00:47 2011
+++ src/usr.bin/ktrace/ktrace.1 Wed Jun 1 21:28:33 2011
@@ -1,4 +1,4 @@
-.\" $NetBSD: ktrace.1,v 1.40 2011/04/27 00:00:47 joerg Exp $
+.\" $NetBSD: ktrace.1,v 1.41 2011/06/01 21:28:33 alnsn Exp $
.\"
.\" Copyright (c) 1990, 1993
.\" The Regents of the University of California. All rights reserved.
@@ -181,6 +181,8 @@
trace system calls
.It Cm e
trace emulation changes
+.It Cm f
+trace open file descriptors after exec
.It Cm i
trace
.Tn I/O
Index: src/usr.bin/ktrace/subr.c
diff -u src/usr.bin/ktrace/subr.c:1.17 src/usr.bin/ktrace/subr.c:1.18
--- src/usr.bin/ktrace/subr.c:1.17 Wed Apr 27 00:00:47 2011
+++ src/usr.bin/ktrace/subr.c Wed Jun 1 21:28:33 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: subr.c,v 1.17 2011/04/27 00:00:47 joerg Exp $ */
+/* $NetBSD: subr.c,v 1.18 2011/06/01 21:28:33 alnsn Exp $ */
/*-
* Copyright (c) 1988, 1993
@@ -34,7 +34,7 @@
#if 0
static char sccsid[] = "@(#)subr.c 8.2 (Berkeley) 4/28/95";
#else
-__RCSID("$NetBSD: subr.c,v 1.17 2011/04/27 00:00:47 joerg Exp $");
+__RCSID("$NetBSD: subr.c,v 1.18 2011/06/01 21:28:33 alnsn Exp $");
#endif
#endif /* not lint */
@@ -73,6 +73,9 @@
case 'e':
fac = KTRFAC_EMUL;
break;
+ case 'f':
+ fac = KTRFAC_EXEC_FD;
+ break;
case 'i':
fac = KTRFAC_GENIO;
break;