PERFORCE change 134154 for review
John Birrell
jb at FreeBSD.org
Sat Jan 26 14:27:35 PST 2008
http://perforce.freebsd.org/chv.cgi?CH=134154
Change 134154 by jb at jb_freebsd1 on 2008/01/26 22:26:53
Add some fasttrap hooks for fork/exec/exit in pursuit of the
pid provider.
Affected files ...
.. //depot/projects/dtrace/src/sys/kern/kern_exec.c#24 edit
.. //depot/projects/dtrace/src/sys/kern/kern_exit.c#17 edit
.. //depot/projects/dtrace/src/sys/kern/kern_fork.c#27 edit
.. //depot/projects/dtrace/src/sys/sys/dtrace_bsd.h#12 edit
Differences ...
==== //depot/projects/dtrace/src/sys/kern/kern_exec.c#24 (text+ko) ====
@@ -85,6 +85,11 @@
#include <security/audit/audit.h>
#include <security/mac/mac_framework.h>
+#ifdef KDTRACE_HOOKS
+#include <sys/dtrace_bsd.h>
+dtrace_execexit_func_t dtrace_fasttrap_exec;
+#endif
+
SDT_PROVIDER_DECLARE(proc);
SDT_PROBE_DEFINE(proc, kernel, , exec);
SDT_PROBE_ARGTYPE(proc, kernel, , exec, 0, "char *");
@@ -668,6 +673,13 @@
p->p_textvp = ndp->ni_vp;
/*
+ * Tell the DTrace fasttrap provider about the exec if it
+ * has declared an interest.
+ */
+ if (dtrace_fasttrap_exec)
+ dtrace_fasttrap_exec(p);
+
+ /*
* Notify others that we exec'd, and clear the P_INEXEC flag
* as we're now a bona fide freshly-execed process.
*/
@@ -729,6 +741,7 @@
vfs_mark_atime(imgp->vp, td);
done1:
+
/*
* Free any resources malloc'd earlier that we didn't use.
*/
==== //depot/projects/dtrace/src/sys/kern/kern_exit.c#17 (text+ko) ====
@@ -84,6 +84,11 @@
#include <vm/vm_page.h>
#include <vm/uma.h>
+#ifdef KDTRACE_HOOKS
+#include <sys/dtrace_bsd.h>
+dtrace_execexit_func_t dtrace_fasttrap_exit;
+#endif
+
SDT_PROVIDER_DECLARE(proc);
SDT_PROBE_DEFINE(proc, kernel, , exit);
SDT_PROBE_ARGTYPE(proc, kernel, , exit, 0, "int");
@@ -454,6 +459,14 @@
PROC_LOCK(p);
p->p_xstat = rv;
p->p_xthread = td;
+
+ /*
+ * Tell the DTrace fasttrap provider about the exit if it
+ * has declared an interest.
+ */
+ if (dtrace_fasttrap_exit)
+ dtrace_fasttrap_exit(p);
+
/*
* Notify interested parties of our demise.
*/
==== //depot/projects/dtrace/src/sys/kern/kern_fork.c#27 (text+ko) ====
@@ -77,6 +77,11 @@
#include <vm/vm_extern.h>
#include <vm/uma.h>
+#ifdef KDTRACE_HOOKS
+#include <sys/dtrace_bsd.h>
+dtrace_fork_func_t dtrace_fasttrap_fork;
+#endif
+
SDT_PROVIDER_DECLARE(proc);
SDT_PROBE_DEFINE(proc, kernel, , create);
SDT_PROBE_ARGTYPE(proc, kernel, , create, 0, "struct proc *");
@@ -635,6 +640,13 @@
}
/*
+ * Tell the DTrace fasttrap provider about the new process
+ * if it has registered an interest.
+ */
+ if (dtrace_fasttrap_fork)
+ dtrace_fasttrap_fork(p1, p2);
+
+ /*
* This begins the section where we must prevent the parent
* from being swapped.
*/
==== //depot/projects/dtrace/src/sys/sys/dtrace_bsd.h#12 (text+ko) ====
@@ -72,6 +72,19 @@
extern int dtrace_vtime_active;
extern dtrace_vtime_switch_func_t dtrace_vtime_switch_func;
+/* The fasttrap module hooks into the fork, exit and exit. */
+typedef void (*dtrace_fork_func_t)(struct proc *, struct proc *);
+typedef void (*dtrace_execexit_func_t)(struct proc *);
+
+/* Global variable in kern_fork.c */
+extern dtrace_fork_func_t dtrace_fasttrap_fork;
+
+/* Global variable in kern_exec.c */
+extern dtrace_execexit_func_t dtrace_fasttrap_exec;
+
+/* Global variable in kern_exit.c */
+extern dtrace_execexit_func_t dtrace_fasttrap_exit;
+
/*
* Functions which allow the dtrace module to check that the kernel
* hooks have been compiled with sufficient space for it's private
More information about the p4-projects
mailing list