diff options
author | Devin Teske <dteske@FreeBSD.org> | 2018-05-15 00:00:44 +0000 |
---|---|---|
committer | Devin Teske <dteske@FreeBSD.org> | 2018-05-15 00:00:44 +0000 |
commit | 16cdefa52d001a5c36b1500ef7de709d082a558e (patch) | |
tree | b9aec09d785257e5ea37aaa6291e72aaba5cd548 /share/dtrace | |
parent | 94de7f96ec37e1922d7b20f020d4e5b86408503c (diff) | |
download | src-16cdefa52d001a5c36b1500ef7de709d082a558e.tar.gz src-16cdefa52d001a5c36b1500ef7de709d082a558e.zip |
MFC SVN r329188,329334,329353,329914,329995-329996: DTrace Enhancements
r329188: Use tabs in io.d, fix alignment issues, remove extra newlines
r329334: Add errno definitions to /usr/lib/dtrace/errno.d
r329353: Add inline to errno.d for translating int to string
r329914: Updates and enhancements to io.d to aid DTrace scripting
r329995: Updates and enhancements to signal.d to aid DTrace scripting
r329996: Consistent casing for fallback SIGCHLD (s/Unknown/unknown/)
MFC SVN r330559-330560,330672,332865-332867,333513-333519: dwatch(1)
r330559: Introduce dwatch(1) as a tool for making DTrace more useful
r330560: Bump dwatch(1) internal version from 1.0-beta-91 to 1.0
r330672: Fix display of wrong pid from dtrace_sched(4)
r332865: Add `-dev' option to aid debugging of profiles
r332866: Add profile for send(2)/recv(2) syscalls
r332867: Remove the line used to demonstrate `-dev' option
r333513: Bugfix, usage displayed with `-1Q'
r333514: Separate default values so `-[BK] num' don't affect usage
r333515: Simplify info message test
r333516: Export ARGV to profiles loaded via load_profile()
r333517: Allow `-E code' to override profile EVENT_DETAILS
r333518: Expose process for ip/tcp/udp
r333519: Refactor sendrecv profile
Reviewed by: markj, gnn, bdrewery (head; earlier version)
Approved by: re (gjb)
Relnotes: yes
Sponsored by: Smule, Inc.
Differential Revision: https://reviews.freebsd.org/D15418
Notes
Notes:
svn path=/stable/11/; revision=333617
Diffstat (limited to 'share/dtrace')
-rw-r--r-- | share/dtrace/Makefile | 5 | ||||
-rwxr-xr-x | share/dtrace/watch_execve | 227 | ||||
-rwxr-xr-x | share/dtrace/watch_kill | 232 | ||||
-rwxr-xr-x | share/dtrace/watch_vop_remove | 476 |
4 files changed, 1 insertions, 939 deletions
diff --git a/share/dtrace/Makefile b/share/dtrace/Makefile index efd8b08706ba..86e47bc89469 100644 --- a/share/dtrace/Makefile +++ b/share/dtrace/Makefile @@ -17,10 +17,7 @@ SCRIPTS= blocking \ tcpdebug \ tcpstate \ tcptrack \ - udptrack \ - watch_execve \ - watch_kill \ - watch_vop_remove + udptrack SCRIPTSDIR= ${SHAREDIR}/dtrace diff --git a/share/dtrace/watch_execve b/share/dtrace/watch_execve deleted file mode 100755 index 1817d4b841af..000000000000 --- a/share/dtrace/watch_execve +++ /dev/null @@ -1,227 +0,0 @@ -#!/usr/sbin/dtrace -s -/* - - * Copyright (c) 2014 Devin Teske <dteske@FreeBSD.org> - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Title: dtrace(1) script to log process(es) entering syscall::execve $ - * $FreeBSD$ - */ - -#pragma D option quiet -#pragma D option dynvarsize=16m -#pragma D option switchrate=10hz - -/*********************************************************/ - -syscall::execve:entry /* probe ID 1 */ -{ - this->caller_execname = execname; -} - -/*********************************************************/ - -syscall::execve:return /execname != this->caller_execname/ /* probe ID 2 */ -{ - /* - * Examine process, parent process, and grandparent process details - */ - - /******************* CURPROC *******************/ - - this->proc = curthread->td_proc; - this->pid0 = this->proc->p_pid; - this->uid0 = this->proc->p_ucred->cr_uid; - this->gid0 = this->proc->p_ucred->cr_rgid; - this->p_args = this->proc->p_args; - this->ar_length = this->p_args ? this->p_args->ar_length : 0; - this->ar_args = (char *)(this->p_args ? this->p_args->ar_args : 0); - - this->arg0_0 = this->ar_length > 0 ? - this->ar_args : stringof(this->proc->p_comm); - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg0_1 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg0_2 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg0_3 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg0_4 = this->ar_length > 0 ? "..." : ""; - - /******************* PPARENT *******************/ - - this->proc = this->proc->p_pptr; - this->pid1 = this->proc->p_pid; - this->uid1 = this->proc->p_ucred->cr_uid; - this->gid1 = this->proc->p_ucred->cr_rgid; - this->p_args = this->proc ? this->proc->p_args : 0; - this->ar_length = this->p_args ? this->p_args->ar_length : 0; - this->ar_args = (char *)(this->p_args ? this->p_args->ar_args : 0); - - this->arg1_0 = this->ar_length > 0 ? - this->ar_args : stringof(this->proc->p_comm); - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg1_1 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg1_2 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg1_3 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg1_4 = this->ar_length > 0 ? "..." : ""; - - /******************* GPARENT *******************/ - - this->proc = this->proc->p_pptr; - this->pid2 = this->proc->p_pid; - this->uid2 = this->proc->p_ucred->cr_uid; - this->gid2 = this->proc->p_ucred->cr_rgid; - this->p_args = this->proc ? this->proc->p_args : 0; - this->ar_length = this->p_args ? this->p_args->ar_length : 0; - this->ar_args = (char *)(this->p_args ? this->p_args->ar_args : 0); - - this->arg2_0 = this->ar_length > 0 ? - this->ar_args : stringof(this->proc->p_comm); - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg2_1 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg2_2 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg2_3 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg2_4 = this->ar_length > 0 ? "..." : ""; - - /******************* APARENT *******************/ - - this->proc = this->proc->p_pptr; - this->pid3 = this->proc->p_pid; - this->uid3 = this->proc->p_ucred->cr_uid; - this->gid3 = this->proc->p_ucred->cr_rgid; - this->p_args = this->proc ? this->proc->p_args : 0; - this->ar_length = this->p_args ? this->p_args->ar_length : 0; - this->ar_args = (char *)(this->p_args ? this->p_args->ar_args : 0); - - this->arg3_0 = this->ar_length > 0 ? - this->ar_args : stringof(this->proc->p_comm); - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg3_1 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg3_2 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg3_3 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg3_4 = this->ar_length > 0 ? "..." : ""; - - /***********************************************/ - - /* - * Print process, parent, and grandparent details - */ - - printf("%Y %s[%d]: ", timestamp + 1406598400000000000, - this->caller_execname, this->pid1); - printf("%s", this->arg0_0); - printf("%s%s", this->arg0_1 != "" ? " " : "", this->arg0_1); - printf("%s%s", this->arg0_2 != "" ? " " : "", this->arg0_2); - printf("%s%s", this->arg0_3 != "" ? " " : "", this->arg0_3); - printf("%s%s", this->arg0_4 != "" ? " " : "", this->arg0_4); - printf("\n"); - - printf(" -+= %05d %d.%d %s", - this->pid3, this->uid3, this->gid3, this->arg3_0); - printf("%s%s", this->arg3_1 != "" ? " " : "", this->arg3_1); - printf("%s%s", this->arg3_2 != "" ? " " : "", this->arg3_2); - printf("%s%s", this->arg3_3 != "" ? " " : "", this->arg3_3); - printf("%s%s", this->arg3_4 != "" ? " " : "", this->arg3_4); - printf("%s", this->arg3_0 != "" ? "\n" : ""); - - printf(" \-+= %05d %d.%d %s", - this->pid2, this->uid2, this->gid2, this->arg2_0); - printf("%s%s", this->arg2_1 != "" ? " " : "", this->arg2_1); - printf("%s%s", this->arg2_2 != "" ? " " : "", this->arg2_2); - printf("%s%s", this->arg2_3 != "" ? " " : "", this->arg2_3); - printf("%s%s", this->arg2_4 != "" ? " " : "", this->arg2_4); - printf("%s", this->arg2_0 != "" ? "\n" : ""); - - printf(" \-+= %05d %d.%d %s", - this->pid1, this->uid1, this->gid1, this->arg1_0); - printf("%s%s", this->arg1_1 != "" ? " " : "", this->arg1_1); - printf("%s%s", this->arg1_2 != "" ? " " : "", this->arg1_2); - printf("%s%s", this->arg1_3 != "" ? " " : "", this->arg1_3); - printf("%s%s", this->arg1_4 != "" ? " " : "", this->arg1_4); - printf("%s", this->arg1_0 != "" ? "\n" : ""); - - printf(" \-+= %05d %d.%d %s", - this->pid0, this->uid0, this->gid0, this->arg0_0); - printf("%s%s", this->arg0_1 != "" ? " " : "", this->arg0_1); - printf("%s%s", this->arg0_2 != "" ? " " : "", this->arg0_2); - printf("%s%s", this->arg0_3 != "" ? " " : "", this->arg0_3); - printf("%s%s", this->arg0_4 != "" ? " " : "", this->arg0_4); - printf("%s", this->arg0_0 != "" ? "\n" : ""); -} diff --git a/share/dtrace/watch_kill b/share/dtrace/watch_kill deleted file mode 100755 index 46f3cd8733fe..000000000000 --- a/share/dtrace/watch_kill +++ /dev/null @@ -1,232 +0,0 @@ -#!/usr/sbin/dtrace -s -/* - - * Copyright (c) 2014-2016 Devin Teske <dteske@FreeBSD.org> - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Title: dtrace(1) script to log process(es) entering syscall::kill $ - * $FreeBSD$ - */ - -#pragma D option quiet -#pragma D option dynvarsize=16m -#pragma D option switchrate=10hz - -/*********************************************************/ - -syscall::execve:entry /* probe ID 1 */ -{ - this->caller_execname = execname; -} - -/*********************************************************/ - -syscall::kill:entry /* probe ID 2 */ -{ - this->pid_to_kill = (pid_t)arg0; - this->kill_signal = (int)arg1; - - /* - * Examine process, parent process, and grandparent process details - */ - - /******************* CURPROC *******************/ - - this->proc = curthread->td_proc; - this->pid0 = this->proc->p_pid; - this->uid0 = this->proc->p_ucred->cr_uid; - this->gid0 = this->proc->p_ucred->cr_rgid; - this->p_args = this->proc->p_args; - this->ar_length = this->p_args ? this->p_args->ar_length : 0; - this->ar_args = (char *)(this->p_args ? this->p_args->ar_args : 0); - - this->arg0_0 = this->ar_length > 0 ? - this->ar_args : stringof(this->proc->p_comm); - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg0_1 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg0_2 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg0_3 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg0_4 = this->ar_length > 0 ? "..." : ""; - - /******************* PPARENT *******************/ - - this->proc = this->proc->p_pptr; - this->pid1 = this->proc->p_pid; - this->uid1 = this->proc->p_ucred->cr_uid; - this->gid1 = this->proc->p_ucred->cr_rgid; - this->p_args = this->proc ? this->proc->p_args : 0; - this->ar_length = this->p_args ? this->p_args->ar_length : 0; - this->ar_args = (char *)(this->p_args ? this->p_args->ar_args : 0); - - this->arg1_0 = this->ar_length > 0 ? - this->ar_args : stringof(this->proc->p_comm); - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg1_1 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg1_2 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg1_3 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg1_4 = this->ar_length > 0 ? "..." : ""; - - /******************* GPARENT *******************/ - - this->proc = this->proc->p_pptr; - this->pid2 = this->proc->p_pid; - this->uid2 = this->proc->p_ucred->cr_uid; - this->gid2 = this->proc->p_ucred->cr_rgid; - this->p_args = this->proc ? this->proc->p_args : 0; - this->ar_length = this->p_args ? this->p_args->ar_length : 0; - this->ar_args = (char *)(this->p_args ? this->p_args->ar_args : 0); - - this->arg2_0 = this->ar_length > 0 ? - this->ar_args : stringof(this->proc->p_comm); - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg2_1 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg2_2 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg2_3 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg2_4 = this->ar_length > 0 ? "..." : ""; - - /******************* APARENT *******************/ - - this->proc = this->proc->p_pptr; - this->pid3 = this->proc->p_pid; - this->uid3 = this->proc->p_ucred->cr_uid; - this->gid3 = this->proc->p_ucred->cr_rgid; - this->p_args = this->proc ? this->proc->p_args : 0; - this->ar_length = this->p_args ? this->p_args->ar_length : 0; - this->ar_args = (char *)(this->p_args ? this->p_args->ar_args : 0); - - this->arg3_0 = this->ar_length > 0 ? - this->ar_args : stringof(this->proc->p_comm); - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg3_1 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg3_2 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg3_3 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg3_4 = this->ar_length > 0 ? "..." : ""; - - /***********************************************/ - - /* - * Print process, parent, and grandparent details - */ - - printf("%Y %s[%d]: ", timestamp + 1406598400000000000, - this->caller_execname, this->pid1); - printf("%s", this->arg0_0); - printf("%s%s", this->arg0_1 != "" ? " " : "", this->arg0_1); - printf("%s%s", this->arg0_2 != "" ? " " : "", this->arg0_2); - printf("%s%s", this->arg0_3 != "" ? " " : "", this->arg0_3); - printf("%s%s", this->arg0_4 != "" ? " " : "", this->arg0_4); - printf(" (sending signal %u to pid %u)", - this->kill_signal, this->pid_to_kill); - printf("\n"); - - printf(" -+= %05d %d.%d %s", - this->pid3, this->uid3, this->gid3, this->arg3_0); - printf("%s%s", this->arg3_1 != "" ? " " : "", this->arg3_1); - printf("%s%s", this->arg3_2 != "" ? " " : "", this->arg3_2); - printf("%s%s", this->arg3_3 != "" ? " " : "", this->arg3_3); - printf("%s%s", this->arg3_4 != "" ? " " : "", this->arg3_4); - printf("%s", this->arg3_0 != "" ? "\n" : ""); - - printf(" \-+= %05d %d.%d %s", - this->pid2, this->uid2, this->gid2, this->arg2_0); - printf("%s%s", this->arg2_1 != "" ? " " : "", this->arg2_1); - printf("%s%s", this->arg2_2 != "" ? " " : "", this->arg2_2); - printf("%s%s", this->arg2_3 != "" ? " " : "", this->arg2_3); - printf("%s%s", this->arg2_4 != "" ? " " : "", this->arg2_4); - printf("%s", this->arg2_0 != "" ? "\n" : ""); - - printf(" \-+= %05d %d.%d %s", - this->pid1, this->uid1, this->gid1, this->arg1_0); - printf("%s%s", this->arg1_1 != "" ? " " : "", this->arg1_1); - printf("%s%s", this->arg1_2 != "" ? " " : "", this->arg1_2); - printf("%s%s", this->arg1_3 != "" ? " " : "", this->arg1_3); - printf("%s%s", this->arg1_4 != "" ? " " : "", this->arg1_4); - printf("%s", this->arg1_0 != "" ? "\n" : ""); - - printf(" \-+= %05d %d.%d %s", - this->pid0, this->uid0, this->gid0, this->arg0_0); - printf("%s%s", this->arg0_1 != "" ? " " : "", this->arg0_1); - printf("%s%s", this->arg0_2 != "" ? " " : "", this->arg0_2); - printf("%s%s", this->arg0_3 != "" ? " " : "", this->arg0_3); - printf("%s%s", this->arg0_4 != "" ? " " : "", this->arg0_4); - printf("%s", this->arg0_0 != "" ? "\n" : ""); -} diff --git a/share/dtrace/watch_vop_remove b/share/dtrace/watch_vop_remove deleted file mode 100755 index 6a5e7c4bebe8..000000000000 --- a/share/dtrace/watch_vop_remove +++ /dev/null @@ -1,476 +0,0 @@ -#!/usr/sbin/dtrace -s -/* - - * Copyright (c) 2014 Devin Teske <dteske@FreeBSD.org> - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Title: dtrace(1) script to log process(es) entering vfs::vop_remove $ - * $FreeBSD$ - */ - -#pragma D option quiet -#pragma D option dynvarsize=16m -#pragma D option switchrate=10hz - -/*********************************************************/ - -vfs::vop_remove:entry /* probe ID 1 */ -{ - this->vp = (struct vnode *)arg0; - this->ncp = &(this->vp->v_cache_dst) != NULL ? - this->vp->v_cache_dst.tqh_first : 0; - this->fi_name = args[1] ? ( - args[1]->a_cnp != NULL ? - stringof(args[1]->a_cnp->cn_nameptr) : "" - ) : ""; - this->mount = this->vp->v_mount; /* ptr to vfs we are in */ - this->fi_fs = this->mount != 0 ? - stringof(this->mount->mnt_stat.f_fstypename) : ""; - this->fi_mount = this->mount != 0 ? - stringof(this->mount->mnt_stat.f_mntonname) : ""; - this->d_name = args[0]->v_cache_dd != NULL ? - stringof(args[0]->v_cache_dd->nc_name) : ""; -} - -vfs::vop_remove:entry /this->vp == 0 || this->fi_fs == 0 || - this->fi_fs == "devfs" || this->fi_fs == "" || - this->fi_name == ""/ /* probe ID 2 */ -{ - this->ncp = 0; -} - -/*********************************************************/ - -vfs::vop_remove:entry /this->ncp/ /* probe ID 3 (depth 1) */ -{ - this->dvp = this->ncp->nc_dvp != NULL ? ( - &(this->ncp->nc_dvp->v_cache_dst) != NULL ? - this->ncp->nc_dvp->v_cache_dst.tqh_first : 0 - ) : 0; - this->name1 = this->dvp != 0 ? ( - this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" - ) : ""; -} - -vfs::vop_remove:entry /this->name1 == 0 || this->fi_fs == 0 || - this->fi_fs == "devfs" || this->fi_fs == "" || - this->name1 == "/" || this->name1 == ""/ /* probe ID 4 */ -{ - this->dvp = 0; -} - -/*********************************************************/ - -/* - * BEGIN Pathname-depth iterators (copy/paste as many times as-desired) - */ - -vfs::vop_remove:entry /this->dvp/ /* probe ID 5 (depth 2) */ -{ - this->dvp = this->dvp->nc_dvp != NULL ? ( - &(this->dvp->nc_dvp->v_cache_dst) != NULL ? - this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 - ) : 0; - this->name2 = this->dvp != 0 ? ( - this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" - ) : ""; -} - -vfs::vop_remove:entry /this->dvp/ /* probe ID 6 (depth 3) */ -{ - this->dvp = this->dvp->nc_dvp != NULL ? ( - &(this->dvp->nc_dvp->v_cache_dst) != NULL ? - this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 - ) : 0; - this->name3 = this->dvp != 0 ? ( - this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" - ) : ""; -} - -vfs::vop_remove:entry /this->dvp/ /* probe ID 7 (depth 4) */ -{ - this->dvp = this->dvp->nc_dvp != NULL ? ( - &(this->dvp->nc_dvp->v_cache_dst) != NULL ? - this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 - ) : 0; - this->name4 = this->dvp != 0 ? ( - this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" - ) : ""; -} - -vfs::vop_remove:entry /this->dvp/ /* probe ID 8 (depth 5) */ -{ - this->dvp = this->dvp->nc_dvp != NULL ? ( - &(this->dvp->nc_dvp->v_cache_dst) != NULL ? - this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 - ) : 0; - this->name5 = this->dvp != 0 ? ( - this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" - ) : ""; -} - -vfs::vop_remove:entry /this->dvp/ /* probe ID 9 (depth 6) */ -{ - this->dvp = this->dvp->nc_dvp != NULL ? ( - &(this->dvp->nc_dvp->v_cache_dst) != NULL ? - this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 - ) : 0; - this->name6 = this->dvp != 0 ? ( - this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" - ) : ""; -} - -vfs::vop_remove:entry /this->dvp/ /* probe ID 10 (depth 7) */ -{ - this->dvp = this->dvp->nc_dvp != NULL ? ( - &(this->dvp->nc_dvp->v_cache_dst) != NULL ? - this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 - ) : 0; - this->name7 = this->dvp != 0 ? ( - this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" - ) : ""; -} - -vfs::vop_remove:entry /this->dvp/ /* probe ID 11 (depth 8) */ -{ - this->dvp = this->dvp->nc_dvp != NULL ? ( - &(this->dvp->nc_dvp->v_cache_dst) != NULL ? - this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 - ) : 0; - this->name8 = this->dvp != 0 ? ( - this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" - ) : ""; -} - -vfs::vop_remove:entry /this->dvp/ /* probe ID 12 (depth 9) */ -{ - this->dvp = this->dvp->nc_dvp != NULL ? ( - &(this->dvp->nc_dvp->v_cache_dst) != NULL ? - this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 - ) : 0; - this->name9 = this->dvp != 0 ? ( - this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" - ) : ""; -} - -vfs::vop_remove:entry /this->dvp/ /* probe ID 13 (depth 10) */ -{ - this->dvp = this->dvp->nc_dvp != NULL ? ( - &(this->dvp->nc_dvp->v_cache_dst) != NULL ? - this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 - ) : 0; - this->name10 = this->dvp != 0 ? ( - this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" - ) : ""; -} - -vfs::vop_remove:entry /this->dvp/ /* probe ID 14 (depth 11) */ -{ - this->dvp = this->dvp->nc_dvp != NULL ? ( - &(this->dvp->nc_dvp->v_cache_dst) != NULL ? - this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 - ) : 0; - this->name11 = this->dvp != 0 ? ( - this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" - ) : ""; -} - -vfs::vop_remove:entry /this->dvp/ /* probe ID 15 (depth 12) */ -{ - this->dvp = this->dvp->nc_dvp != NULL ? ( - &(this->dvp->nc_dvp->v_cache_dst) != NULL ? - this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 - ) : 0; - this->name12 = this->dvp != 0 ? ( - this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" - ) : ""; -} - -vfs::vop_remove:entry /this->dvp/ /* probe ID 16 (depth 13) */ -{ - this->dvp = this->dvp->nc_dvp != NULL ? ( - &(this->dvp->nc_dvp->v_cache_dst) != NULL ? - this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 - ) : 0; - this->name13 = this->dvp != 0 ? ( - this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" - ) : ""; -} - -vfs::vop_remove:entry /this->dvp/ /* probe ID 17 (depth 14) */ -{ - this->dvp = this->dvp->nc_dvp != NULL ? ( - &(this->dvp->nc_dvp->v_cache_dst) != NULL ? - this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 - ) : 0; - this->name14 = this->dvp != 0 ? ( - this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" - ) : ""; -} - -vfs::vop_remove:entry /this->dvp/ /* probe ID 18 (depth 15) */ -{ - this->dvp = this->dvp->nc_dvp != NULL ? ( - &(this->dvp->nc_dvp->v_cache_dst) != NULL ? - this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 - ) : 0; - this->name15 = this->dvp != 0 ? ( - this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" - ) : ""; -} - -vfs::vop_remove:entry /this->dvp/ /* probe ID 19 (depth 16) */ -{ - this->dvp = this->dvp->nc_dvp != NULL ? ( - &(this->dvp->nc_dvp->v_cache_dst) != NULL ? - this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 - ) : 0; - this->name16 = this->dvp != 0 ? ( - this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" - ) : ""; -} - -vfs::vop_remove:entry /this->dvp/ /* probe ID 20 (depth 17) */ -{ - this->dvp = this->dvp->nc_dvp != NULL ? ( - &(this->dvp->nc_dvp->v_cache_dst) != NULL ? - this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 - ) : 0; - this->name17 = this->dvp != 0 ? ( - this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" - ) : ""; -} - -vfs::vop_remove:entry /this->dvp/ /* probe ID 21 (depth 18) */ -{ - this->dvp = this->dvp->nc_dvp != NULL ? ( - &(this->dvp->nc_dvp->v_cache_dst) != NULL ? - this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 - ) : 0; - this->name18 = this->dvp != 0 ? ( - this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" - ) : ""; -} - -vfs::vop_remove:entry /this->dvp/ /* probe ID 22 (depth 19) */ -{ - this->dvp = this->dvp->nc_dvp != NULL ? ( - &(this->dvp->nc_dvp->v_cache_dst) != NULL ? - this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 - ) : 0; - this->name19 = this->dvp != 0 ? ( - this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" - ) : ""; -} - -vfs::vop_remove:entry /this->dvp/ /* probe ID 23 (depth 20) */ -{ - this->dvp = this->dvp->nc_dvp != NULL ? ( - &(this->dvp->nc_dvp->v_cache_dst) != NULL ? - this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 - ) : 0; - this->name20 = this->dvp != 0 ? ( - this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" - ) : ""; -} - -/* - * END Pathname-depth iterators - */ - -/*********************************************************/ - -vfs::vop_remove:entry /this->fi_mount != 0/ /* probe ID 24 */ -{ - printf("%Y %s[%d]: ", timestamp + 1406598400000000000, execname, pid); - - /* - * Print full path of file to delete - * NB: Up-to but not including the parent directory (printed below) - */ - printf("%s%s", this->fi_mount, this->fi_mount != 0 ? ( - this->fi_mount == "/" ? "" : "/" - ) : "/"); - printf("%s%s", this->name = this->name20, this->name != "" ? "/" : ""); - printf("%s%s", this->name = this->name19, this->name != "" ? "/" : ""); - printf("%s%s", this->name = this->name18, this->name != "" ? "/" : ""); - printf("%s%s", this->name = this->name17, this->name != "" ? "/" : ""); - printf("%s%s", this->name = this->name16, this->name != "" ? "/" : ""); - printf("%s%s", this->name = this->name15, this->name != "" ? "/" : ""); - printf("%s%s", this->name = this->name14, this->name != "" ? "/" : ""); - printf("%s%s", this->name = this->name13, this->name != "" ? "/" : ""); - printf("%s%s", this->name = this->name12, this->name != "" ? "/" : ""); - printf("%s%s", this->name = this->name11, this->name != "" ? "/" : ""); - printf("%s%s", this->name = this->name10, this->name != "" ? "/" : ""); - printf("%s%s", this->name = this->name9, this->name != "" ? "/" : ""); - printf("%s%s", this->name = this->name8, this->name != "" ? "/" : ""); - printf("%s%s", this->name = this->name7, this->name != "" ? "/" : ""); - printf("%s%s", this->name = this->name6, this->name != "" ? "/" : ""); - printf("%s%s", this->name = this->name5, this->name != "" ? "/" : ""); - printf("%s%s", this->name = this->name4, this->name != "" ? "/" : ""); - printf("%s%s", this->name = this->name3, this->name != "" ? "/" : ""); - printf("%s%s", this->name = this->name2, this->name != "" ? "/" : ""); - printf("%s%s", this->name = this->name1, this->name != "" ? "/" : ""); - - /* Print the parent directory name */ - this->name = this->d_name != 0 ? this->d_name : ""; - printf("%s%s", this->name, this->name != "" ? "/" : ""); - - /* Print the entry name */ - this->name = this->fi_name != 0 ? this->fi_name : ""; - printf("%s", this->name); - - printf("\n"); - - /* - * Examine process, parent process, and grandparent process details - */ - - /******************* CURPROC *******************/ - - this->proc = curthread->td_proc; - this->pid0 = this->proc->p_pid; - this->uid0 = this->proc->p_ucred->cr_uid; - this->gid0 = this->proc->p_ucred->cr_rgid; - this->p_args = this->proc->p_args; - this->ar_length = this->p_args ? this->p_args->ar_length : 0; - this->ar_args = (char *)(this->p_args ? this->p_args->ar_args : 0); - - this->arg0_0 = this->ar_length > 0 ? - this->ar_args : stringof(this->proc->p_comm); - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg0_1 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg0_2 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg0_3 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg0_4 = this->ar_length > 0 ? "..." : ""; - - /******************* PPARENT *******************/ - - this->proc = this->proc->p_pptr; - this->pid1 = this->proc->p_pid; - this->uid1 = this->proc->p_ucred->cr_uid; - this->gid1 = this->proc->p_ucred->cr_rgid; - this->p_args = this->proc ? this->proc->p_args : 0; - this->ar_length = this->p_args ? this->p_args->ar_length : 0; - this->ar_args = (char *)(this->p_args ? this->p_args->ar_args : 0); - - this->arg1_0 = this->ar_length > 0 ? - this->ar_args : stringof(this->proc->p_comm); - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg1_1 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg1_2 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg1_3 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg1_4 = this->ar_length > 0 ? "..." : ""; - - /******************* GPARENT *******************/ - - this->proc = this->proc->p_pptr; - this->pid2 = this->proc->p_pid; - this->uid2 = this->proc->p_ucred->cr_uid; - this->gid2 = this->proc->p_ucred->cr_rgid; - this->p_args = this->proc ? this->proc->p_args : 0; - this->ar_length = this->p_args ? this->p_args->ar_length : 0; - this->ar_args = (char *)(this->p_args ? this->p_args->ar_args : 0); - - this->arg2_0 = this->ar_length > 0 ? - this->ar_args : stringof(this->proc->p_comm); - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg2_1 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg2_2 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg2_3 = this->ar_length > 0 ? this->ar_args : ""; - this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; - this->ar_args += this->len; - this->ar_length -= this->len; - - this->arg2_4 = this->ar_length > 0 ? "..." : ""; - - /***********************************************/ - - /* - * Print process, parent, and grandparent details - */ - - printf(" -+= %05d %d.%d %s", - this->pid2, this->uid2, this->gid2, this->arg2_0); - printf("%s%s", this->arg2_1 != "" ? " " : "", this->arg2_1); - printf("%s%s", this->arg2_2 != "" ? " " : "", this->arg2_2); - printf("%s%s", this->arg2_3 != "" ? " " : "", this->arg2_3); - printf("%s%s", this->arg2_4 != "" ? " " : "", this->arg2_4); - printf("%s", this->arg2_0 != "" ? "\n" : ""); - - printf(" \-+= %05d %d.%d %s", - this->pid1, this->uid1, this->gid1, this->arg1_0); - printf("%s%s", this->arg1_1 != "" ? " " : "", this->arg1_1); - printf("%s%s", this->arg1_2 != "" ? " " : "", this->arg1_2); - printf("%s%s", this->arg1_3 != "" ? " " : "", this->arg1_3); - printf("%s%s", this->arg1_4 != "" ? " " : "", this->arg1_4); - printf("%s", this->arg1_0 != "" ? "\n" : ""); - - printf(" \-+= %05d %d.%d %s", - this->pid0, this->uid0, this->gid0, this->arg0_0); - printf("%s%s", this->arg0_1 != "" ? " " : "", this->arg0_1); - printf("%s%s", this->arg0_2 != "" ? " " : "", this->arg0_2); - printf("%s%s", this->arg0_3 != "" ? " " : "", this->arg0_3); - printf("%s%s", this->arg0_4 != "" ? " " : "", this->arg0_4); - printf("%s", this->arg0_0 != "" ? "\n" : ""); -} |