diff options
author | David E. O'Brien <obrien@FreeBSD.org> | 2012-06-04 22:59:06 +0000 |
---|---|---|
committer | David E. O'Brien <obrien@FreeBSD.org> | 2012-06-04 22:59:06 +0000 |
commit | 27db57a90dd3104240600debeb4c2a800d0895df (patch) | |
tree | 6592e5af010948af5a44369782baaa15a9960591 /share/man/man4/filemon.4 | |
parent | eb9aea5ac092d5461c0750747d24505f44bc6baf (diff) | |
download | src-27db57a90dd3104240600debeb4c2a800d0895df.tar.gz src-27db57a90dd3104240600debeb4c2a800d0895df.zip |
Add a man page for filemon(4) [r236592].
Notes
Notes:
svn path=/head/; revision=236593
Diffstat (limited to 'share/man/man4/filemon.4')
-rw-r--r-- | share/man/man4/filemon.4 | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/share/man/man4/filemon.4 b/share/man/man4/filemon.4 new file mode 100644 index 000000000000..e8b24bfd99e7 --- /dev/null +++ b/share/man/man4/filemon.4 @@ -0,0 +1,166 @@ +.\" Copyright (c) 2012 +.\" David E. O'Brien <obrien@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. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by David E. O'Brien and +.\" contributors. +.\" 4. Neither the name of the author nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" 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. +.\" +.\" $FreeBSD$ +.\" +.Dd May 30, 2012 +.Dt FILEMON 4 +.Os +.Sh NAME +.Nm filemon +.Nd the filemon device +.Sh SYNOPSIS +.In dev/filemon/filemon.h +.Sh DESCRIPTION +The +.Nm +device allows a process to collect file operations data of its children. +The device +.Pa /dev/filemon +responds to two +.Xr ioctl 2 +calls. +.Pp +System calls are denoted using the following single letters: +.Bl -tag -width indent -compact +.It Dq Li C +.Xr chdir 2 +.It Dq Li D +.Xr unlink 2 +.It Dq Li E +.Xr exec 2 +.It Dq Li F +.Xr fork 2 , +.Xr vfork 2 +.It Dq Li L +.Xr link 2 , +.Xr linkat 2 , +.Xr symlink 2 , +.Xr symlinkat 2 +.It Dq Li M +.Xr rename 2 +.It Dq Li R +.Xr open 2 +for read +.It Dq Li S +.Xr stat 2 +.It Dq Li W +.Xr open 2 +for write +.It Dq Li X +.Xr _exit 2 +.El +.Pp +Note that +.Dq R +following +.Dq W +records can represent a single +.Xr open 2 +for R/W, +or two seperate +.Xr open 2 +calls, one for +R +and one for +W. +.Sh IOCTLS +User mode programs communicate with the filemon driver through a +number of ioctls which are described below. +Each takes a single argument. +.Bl -tag -width FILEMON_SET_PID +.It Dv FILEMON_SET_FD +Write the internal tracing buffer to the supplied open file descriptor. +.It Dv FILEMON_SET_PID . +Child process ID to trace. +.El +.Pp +.Sh RETURN VALUES +The ioctl returns zero on success and non-zero on failure. +.Sh EXAMPLES +.Bd -literal -offset indent +#include <sys/types.h> +#include <sys/stat.h> +#include <sys/wait.h> +#include <sys/ioctl.h> +#include <dev/filemon/filemon.h> +#include <fcntl.h> +#include <err.h> + +static void +open_filemon(void) +{ + pid_t child; + int fm_fd, fm_log; + + if ((fm_fd = open("/dev/filemon", O_RDWR)) == -1) + err(1, "open(\"/dev/filemon\", O_RDWR)"); + if ((fm_log = open("filemon.out", + O_CREAT | O_WRONLY | O_TRUNC, DEFFILEMODE)) == -1) + err(1, "open(filemon.out)"); + + if (ioctl(fm_fd, FILEMON_SET_FD, &fm_log) < 0) + err(1, "Cannot set filemon log file descriptor"); + /* Set up these two fd's to close on exec. */ + (void)fcntl(fm_fd, F_SETFD, FD_CLOEXEC); + (void)fcntl(fm_log, F_SETFD, FD_CLOEXEC); + + if ((child = fork()) == 0) { + /* Do something here. */ + return 0; + } else { + if (ioctl(fm_fd, FILEMON_SET_PID, &child) < 0) + err(1, "Cannot set filemon PID"); + wait(&child); + close(fm_fd); + } + return 0; +} +.Ed +.Pp +Creates a file named +.Pa filemon.out +and configures the +.Nm +device to write the filemon buffer contents to it. +.Sh FILES +.Bl -tag -width /dev/zero +.It Pa /dev/filemon +.El +.Sh SEE ALSO +.Xr dtrace 1 , +.Xr ktrace 1 , +.Xr truss 1 +.Sh HISTORY +A +.Nm +device appeared in +.Fx 9.1 . |