blob: f5e50ebca75cf405de031df53b563a7a24735d2a [file] [log] [blame]
/*
* dlsof.h - Darwin header file for /dev/kmem-based lsof
*/
/*
* Copyright 1994 Purdue Research Foundation, West Lafayette, Indiana
* 47907. All rights reserved.
*
* Written by Victor A. Abell
*
* This software is not subject to any license of the American Telephone
* and Telegraph Company or the Regents of the University of California.
*
* Permission is granted to anyone to use this software for any purpose on
* any computer system, and to alter it and redistribute it freely, subject
* to the following restrictions:
*
* 1. Neither the authors nor Purdue University are responsible for any
* consequences of the use of this software.
*
* 2. The origin of this software must not be misrepresented, either by
* explicit claim or by omission. Credit to the authors and Purdue
* University must appear in documentation and sources.
*
* 3. Altered versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
*
* 4. This notice may not be removed or altered.
*/
/*
* $Id: dlsof.h,v 1.11 2005/11/01 20:24:51 abe Exp $
*/
#if !defined(DARWIN_LSOF_H)
#define DARWIN_LSOF_H 1
#include <stdlib.h>
#include <dirent.h>
#include <nlist.h>
#include <setjmp.h>
#include <string.h>
#include <unistd.h>
#include <sys/conf.h>
#include <sys/filedesc.h>
#include <sys/ucred.h>
#if DARWINV<800
#include <sys/mount.h>
#define m_stat mnt_stat
#else /* DARWINV>=800 */
#include <sys/mount_internal.h>
#define m_stat mnt_vfsstat
#endif /* DARWINV>=800 */
#if DARWINV<800
#include <sys/uio.h>
#include <sys/vnode.h>
#else /* DARWINV>=800 */
#include <sys/vnode.h>
#define _SYS_SYSTM_H_
struct nameidata { int dummy; }; /* to satisfy function prototypes */
#include <sys/vnode_internal.h>
#endif /* DARWINV>=800 */
#include <rpc/types.h>
#define KERNEL_PRIVATE
#include <sys/socketvar.h>
#undef KERNEL_PRIVATE
#include <sys/protosw.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <sys/unpcb.h>
# if defined(AF_NDRV)
#include <net/if_var.h>
#define KERNEL
#include <sys/kern_event.h>
#undef KERNEL
#include <net/ndrv.h>
# if DARWINV>=530
#define KERNEL 1
#include <net/ndrv_var.h>
#undef KERNEL
# endif /* DARWINV>=530 */
# endif /* defined(AF_NDRV) */
# if defined(AF_SYSTEM)
#include <sys/queue.h>
#define KERNEL
#include <sys/kern_event.h>
#undef KERNEL
# endif /* defined(AF_SYSTEM) */
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <net/route.h>
#include <netinet6/ipsec.h>
#include <netinet/in_pcb.h>
#include <netinet/ip_var.h>
#include <netinet/tcp.h>
#include <netinet/tcpip.h>
#include <netinet/tcp_fsm.h>
#include <netinet/tcp_timer.h>
#include <netinet/tcp_var.h>
#include <arpa/inet.h>
#include <net/raw_cb.h>
#include <sys/domain.h>
#define pmap RPC_pmap
#include <rpc/rpc.h>
#include <rpc/pmap_prot.h>
#undef pmap
#include <sys/quota.h>
#include <sys/event.h>
# if DARWINV<800
#include <paths.h>
#undef MAXNAMLEN
#include <ufs/ufs/quota.h>
#include <paths.h>
#include <ufs/ufs/quota.h>
#include <ufs/ufs/inode.h>
#include <nfs/rpcv2.h>
#include <nfs/nfs.h>
#include <nfs/nfsproto.h>
#include <nfs/nfsnode.h>
# if DARWINV<600
#include <hfs/hfs.h>
#undef offsetof
# else /* DARWINV>=600 */
#define KERNEL
#include <hfs/hfs_cnode.h>
#undef KERNEL
# endif /* DARWINV<600 */
# endif /* DARWINV<800 */
# if DARWINV<800
#define time t1 /* hack to make dn_times() happy */
#include <miscfs/devfs/devfsdefs.h>
#undef time
# endif /* DARWINV<800 */
# if DARWINV<800
#define KERNEL
#include <miscfs/fdesc/fdesc.h>
#undef KERNEL
# endif /* DARWINV<800 */
# if DARWINV<800
#include <sys/proc.h>
# else /* DARWINV>=800 */
#define PROC_DEF_ENABLED
#define sleep kernel_sleep
#include <sys/proc_internal.h>
#undef sleep
# endif /* DARWINV<800 */
#include <kvm.h>
#undef TRUE
#undef FALSE
# if DARWINV<800
#include <sys/sysctl.h>
# else /* DARWINV>=800 */
#include "/usr/include/sys/sysctl.h"
# endif /* DARWINV<800 */
# if DARWINV<800
#define KERNEL
#include <sys/fcntl.h>
#include <sys/file.h>
#undef KERNEL
# else /* DARWINV>=800 */
#include <sys/fcntl.h>
#include <sys/file_internal.h>
# endif /* DARWINV<800 */
# if defined(HASKQUEUE)
#include <sys/eventvar.h>
# endif /* defined(HASKQUEUE) */
# if defined(DTYPE_PSXSEM)
#define HASPSXSEM /* has the POSIX semaphore file
* type */
# endif /* defined(DTYPE_PSXSEM) */
# if defined(DTYPE_PSXSHM)
#define HASPSXSHM /* has the POSIX shared memory
* file type */
# endif /* defined(DTYPE_PSXSHM) */
struct vop_advlock_args { int dummy; }; /* to satisfy lf_advlock() prototype */
#include <sys/lockf.h>
#include <sys/lock.h>
/*
* Compensate for removal of MAP_ENTRY_IS_A_MAP from <vm/vm_map.h>,
* This work-around was supplied by John Polstra <jdp@polstra.com>.
*/
# if defined(MAP_ENTRY_IS_SUB_MAP) && !defined(MAP_ENTRY_IS_A_MAP)
#define MAP_ENTRY_IS_A_MAP 0
# endif /* defined(MAP_ENTRY_IS_SUB_MAP) && !defined(MAP_ENTRY_IS_A_MAP) */
#undef B_NEEDCOMMIT
#include <sys/buf.h>
#include <sys/signal.h>
#define user_sigaltstack sigaltstack
#include <sys/user.h>
#define COMP_P const void
#define DEVINCR 1024 /* device table malloc() increment */
#define DIRTYPE dirent /* directory entry type */
typedef u_long KA_T;
#define KMEM "/dev/kmem"
#define LOGINML MAXLOGNAME
#define MALLOC_P void
#define FREE_P MALLOC_P
#define MALLOC_S size_t
#define N_UNIX "/mach_kernel"
#define QSORT_P void
#define READLEN_T int
#define STRNCPY_L size_t
#define SWAP "/dev/drum"
# if DARWINV>=800
#define SZOFFTYPE unsigned long long
/* size and offset internal storage
* type */
#define SZOFFPSPEC "ll" /* SZOFFTYPE printf specification
* modifier */
# endif /* DARWINV>=800 */
/*
* Global storage definitions (including their structure definitions)
*/
struct file * Cfp;
extern int Kd; /* KMEM descriptor */
extern KA_T Kpa;
struct l_vfs {
KA_T addr; /* kernel address */
fsid_t fsid; /* file system ID */
# if defined(MOUNT_NONE)
short type; /* type of file system */
# else /* !defined(MOUNT_NONE) */
char *typnm; /* file system type name */
# endif /* defined(MOUNT_NONE) */
char *dir; /* mounted directory */
char *fsname; /* file system name */
struct l_vfs *next; /* forward link */
};
extern struct l_vfs *Lvfs;
struct mounts {
char *dir; /* directory (mounted on) */
char *fsname; /* file system
* (symbolic links unresolved) */
char *fsnmres; /* file system
* (symbolic links resolved) */
dev_t dev; /* directory st_dev */
dev_t rdev; /* directory st_rdev */
INODETYPE inode; /* directory st_ino */
mode_t mode; /* directory st_mode */
mode_t fs_mode; /* file system st_mode */
struct mounts *next; /* forward link */
};
#define X_NCACHE "ncache"
#define X_NCSIZE "ncsize"
#define NL_NAME n_name
struct sfile {
char *aname; /* argument file name */
char *name; /* file name (after readlink()) */
char *devnm; /* device name (optional) */
dev_t dev; /* device */
dev_t rdev; /* raw device */
u_short mode; /* S_IFMT mode bits from stat() */
int type; /* file type: 0 = file system
* 1 = regular file */
INODETYPE i; /* inode number */
int f; /* file found flag */
struct sfile *next; /* forward link */
};
#define XDR_VOID (const xdrproc_t)xdr_void
#define XDR_PMAPLIST (const xdrproc_t)xdr_pmaplist
/*
* Definitions for rnmh.c
*/
# if defined(HASNCACHE)
#include <sys/uio.h>
#include <sys/namei.h>
# if !defined(offsetof)
#define offsetof(type, member) ((size_t)(&((type *)0)->member))
# endif /* !defined(offsetof) */
#define NCACHE namecache /* kernel's structure name */
#define NCACHE_NM nc_name /* name in NCACHE */
# if DARWINV<700
#define NCACHE_NMLEN nc_nlen /* name length in NCACHE */
# endif /* DARWINV<700 */
#define NCACHE_NXT nc_hash.le_next /* link in NCACHE */
#define NCACHE_NODEADDR nc_vp /* node address in NCACHE */
#define NCACHE_PARADDR nc_dvp /* parent node address in NCACHE */
# if defined(HASNCVPID)
#define NCACHE_NODEID nc_vpid /* node ID in NCACHE */
#define NCACHE_PARID nc_dvpid /* parent node ID in NCACHE */
# endif /* defined(HASNCVPID) */
# endif /* defined(HASNCACHE) */
#endif /* DARWIN_LSOF_H */