1/* $NetBSD: filemon.h,v 1.2 2011/07/04 23:37:30 sjg Exp $ */ 2/* 3 * Copyright (c) 2010, Juniper Networks, Inc. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 14 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 15 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 16 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 17 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 18 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 19 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 20 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 */ 26#ifndef FILEMON_SET_FD 27 28#ifndef _PATH_FILEMON 29#define _PATH_FILEMON "/dev/filemon" 30#endif 31#define FILEMON_SET_FD _IOWR('S', 1, int) 32#define FILEMON_SET_PID _IOWR('S', 2, pid_t) 33 34#define FILEMON_VERSION 4 35 36#ifdef _KERNEL 37struct filemon { 38 pid_t fm_pid; /* The process ID being monitored. */ 39 char fm_fname1[MAXPATHLEN];/* Temporary filename buffer. */ 40 char fm_fname2[MAXPATHLEN];/* Temporary filename buffer. */ 41 char fm_msgbufr[32 + 2 * MAXPATHLEN]; /* Output message buffer. */ 42 int fm_fd; /* Output fd */ 43 struct file *fm_fp; /* Output file pointer. */ 44 krwlock_t fm_mtx; /* Lock mutex for this filemon. */ 45 TAILQ_ENTRY(filemon) fm_link; /* Link into the in-use list. */ 46}; 47 48struct filemon * filemon_lookup(struct proc *); 49void filemon_output(struct filemon *, char *, size_t); 50void filemon_wrapper_install(void); 51void filemon_wrapper_deinstall(void); 52#endif 53 54#endif 55