diff options
Diffstat (limited to 'dialects/sun/dlsof.h')
-rw-r--r-- | dialects/sun/dlsof.h | 690 |
1 files changed, 690 insertions, 0 deletions
diff --git a/dialects/sun/dlsof.h b/dialects/sun/dlsof.h new file mode 100644 index 0000000..1b74eb6 --- /dev/null +++ b/dialects/sun/dlsof.h @@ -0,0 +1,690 @@ +/* + * dlsof.h - Solaris header file for 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.48 2012/04/10 16:40:23 abe Exp $ + */ + + +#if !defined(SOLARIS_LSOF_H) +#define SOLARIS_LSOF_H 1 + +#include <fcntl.h> +#include <sys/mntent.h> +#include <sys/mnttab.h> + +# if solaris<20600 +#define _KMEMUSER 1 +# else /* solaris>=20600 */ +#include <stddef.h> +# endif /* solaris<20600 */ + +#include <stdlib.h> +#include <dirent.h> + +# if defined(HASZONES) +#define _KERNEL +#include<sys/zone.h> +#undef _KERNEL +# endif /* defined(HASZONES) */ + +#include <kvm.h> +#include <nlist.h> +#include <signal.h> +#include <setjmp.h> +#include <string.h> +#include <unistd.h> +#include <arpa/inet.h> +#include <rpc/types.h> +#include <sys/protosw.h> +#include <sys/socket.h> +#include <sys/un.h> +#include <sys/wait.h> + +# if solaris>=110000 +#define _KERNEL +# endif /* solaris>=110000 */ + +#include <netinet/in.h> + +# if solaris>=110000 +#undef _KERNEL +# endif /* solaris>=110000 */ + + +# if solaris>=70000 +#include <sys/conf.h> +#include <sys/systeminfo.h> +# endif /* solaris>=70000 */ + +#define _KERNEL +#define MI_HRTIMING +#include <inet/led.h> + +# if solaris<20600 +#undef staticf +# endif /* solaris<20600 */ + +#include <inet/common.h> + +# if solaris>=70000 +#include <sys/stropts.h> +# endif /* solaris>=70000 */ + +# if solaris<20600 +#include <inet/mi.h> +# endif /* solaris<20600 */ + +# if solaris>=80000 +#include <netinet/igmp.h> +#include <netinet/ip6.h> +# endif /* solaris>=80000 */ + +# if defined(HAS_IPCLASSIFIER_H) +#define ffs __kernel_ffs +#define inet_ntop __inet_ntop +#define inet_pton __inet_pton +#define longjmp __kernel_longjmp +#define setjmp __kernel_setjmp +# if solaris>=110000 +#define printf __kernel_printf +#define snprintf __kernel_snprintf +#define sprintf __kernel_sprintf +#define strsignal __kernel_strsignal +#define swab __kernel_swab +#define vprintf __kernel_vprintf +#define vsprintf __kernel_vsprintf +#define vsnprintf __kernel_vsnprintf +# endif /* solaris>=110000 */ +#include <inet/ipclassifier.h> +#undef ffs +#undef inet_ntop +#undef inet_pton +#undef longjmp +#undef setjmp +# if solaris>=110000 +#undef printf +#undef snprintf +#undef sprintf +#undef strsignal +#undef swab +#undef vprintf +#undef vsprintf +#undef vsnprintf +# endif /* solaris>=110000 */ +# endif /* defined(HAS_IPCLASSIFIER_H) */ + +#include <inet/ip.h> +#undef _KERNEL +#undef MI_HRTIMING +#define exit kernel_exit +#define rval_t char +#define strsignal kernel_strsignal +#include <sys/strsubr.h> + +# if defined(HAS_SOCKET_PROTO_H) +#define _KERNEL 1 /* DEBUG */ +# endif /* HAS_SOCKET_PROTO_H */ + +#include <sys/socketvar.h> + +# if defined(HAS_SOCKET_PROTO_H) +#undef _KERNEL /* DEBUG */ +# endif /* HAS_SOCKET_PROTO_H */ + +#undef exit +#undef rval_t +#undef strsignal + +# if solaris>=80000 +#define _KERNEL 1 +# endif /* solaris>=80000 */ + +#include <inet/tcp.h> + +# if solaris>=80000 +#undef _KERNEL +# endif /* solaris>=80000 */ + +#include <net/route.h> +#include <netinet/in_pcb.h> +#include <sys/stream.h> + +# if solaris<20600 +#undef MAX +#undef MIN +# endif /* solaris<20600 */ + +#include <sys/sysmacros.h> +#include <sys/vfs.h> +#include <sys/vnode.h> +#include <sys/fs/hsfs_spec.h> +#include <sys/fs/hsfs_node.h> +#include <sys/fs/lofs_node.h> + +# if solaris>=20600 +#define _KERNEL +# endif /* solaris>=20600 */ + +#include <sys/fs/namenode.h> + +# if solaris>=20600 +#undef _KERNEL +# endif /* solaris>=20600 */ + +#include <sys/tihdr.h> + +# if solaris>=20500 +#include <sys/tiuser.h> +#include <rpc/auth.h> +#include <rpc/clnt.h> + +# if solaris>=110000 +#define _KERNEL +#include <rpc/rpc.h> +#undef _KERNEL +# endif /* solaris>=110000 */ + +#include <rpc/clnt_soc.h> +#include <rpc/pmap_prot.h> +#define _KERNEL +#include <sys/fs/autofs.h> + +# if solaris>=100000 +#define printf lsof_printf +#define snprintf lsof_snprintf +#define sprintf lsof_sprintf +#define swab lsof_swab +#define vprintf lsof_vprintf +#define vsnprintf lsof_vsnprintf +#define vsprintf lsof_vsprintf +#include <sys/fs/dv_node.h> +#undef printf +#undef snprintf +#undef sprintf +#undef swab +#undef vprintf +#undef vsnprintf +#undef vsprintf +#include <sys/contract_impl.h> +#include <sys/ctfs_impl.h> +#include <sys/port_impl.h> +# endif /* solaris>=100000 */ + +#include <sys/door.h> +#undef _KERNEL +# endif /* solaris>=20500 */ + +# if !defined(_NETDB_H_) +#include <rpc/rpcent.h> +# endif /* !defined(_NETDB_H_) */ + +#include <sys/t_lock.h> +#include <sys/flock.h> + +# if solaris>=20300 +# if solaris<20400 +/* + * The lock_descriptor structure definition is missing from Solaris 2.3. + */ + +struct lock_descriptor { + struct lock_descriptor *prev; + struct lock_descriptor *next; + struct vnode *vnode; + struct owner { + pid_t pid; + long sysid; + } owner; + int flags; + short type; + off_t start; + off_t end; + struct lock_info { + struct active_lock_info { + struct lock_descriptor *ali_stack; + } li_active; + struct sleep_lock_info { + struct flock sli_flock; + /* Ignore the rest. */ + } li_sleep; + } info; +}; +#define ACTIVE_LOCK 0x008 /* lock is active */ +# else /* solaris>=20400 */ +#include <sys/flock_impl.h> +# endif /* solaris<20400 */ +# endif /* solaris>=20300 */ + +#include <sys/fstyp.h> +#include <sys/dditypes.h> +#include <sys/ddidmareq.h> +#include <sys/ddi_impldefs.h> +#include <sys/mkdev.h> + +# if defined(HASCACHEFS) +#include <sys/fs/cachefs_fs.h> +# endif /* defined(HACACHEFS) */ + +#include <sys/fs/fifonode.h> +#include <sys/fs/pc_fs.h> +#include <sys/fs/pc_dir.h> +#include <sys/fs/pc_label.h> +#include <sys/fs/pc_node.h> + +# if solaris>=20600 +#undef SLOCKED +# endif /* solaris>=20600 */ + +#include <sys/fs/snode.h> +#include <sys/fs/tmpnode.h> + +# if solaris>=110000 +#define _KERNEL +# endif /* solaris>=110000 */ + +#include <nfs/nfs.h> + +# if solaris>=110000 +#undef _KERNEL +# endif /* solaris>=110000 */ + +# if solaris>=100000 +#define _KERNEL +# endif /* solaris >= 100000 */ + +#include <nfs/rnode.h> + +# if solaris>=100000 +#include <nfs/mount.h> +#include <nfs/nfs4.h> +#include <nfs/rnode4.h> +# endif /* solaris>=100000 */ + +# if solaris>=100000 +#undef _KERNEL +# endif /* solaris >= 100000 */ + +#include <sys/proc.h> +#include <sys/user.h> + +# if defined(HASPROCFS) +#include <sys/proc/prdata.h> +# endif /* defined(HASPROCFS) */ + +#include <sys/file.h> +#include <vm/hat.h> +#include <vm/as.h> +#include <vm/seg.h> +#include <vm/seg_dev.h> +#include <vm/seg_map.h> +#include <vm/seg_vn.h> +#include <sys/tiuser.h> +#include <sys/t_kuser.h> + +# if solaris<100000 +#include <sys/sockmod.h> +# endif /* solaris<100000 */ + +/* + * Structure for Atria's MVFS nodes + */ + +struct mvfsnode { + unsigned long d1[6]; + unsigned long m_ino; /* node number */ +}; + +extern int nlist(); + +# if defined(HAS_AFS) && !defined(AFSAPATHDEF) +#define AFSAPATHDEF "/usr/vice/etc/modload/libafs" +# endif /* defined(HAS_AFS) && !defined(AFSAPATHDEF) */ + +#define ALLKMEM "/dev/allkmem" +#define COMP_P const void +#define CWDLEN (MAXPATHLEN+1) +#define DEVINCR 1024 /* device table malloc() increment */ +#define DINAMEL 32 +#define DIRTYPE dirent + +# if solaris>=100000 +#define GET_MAJ_DEV(d) ((major_t)(d >> L_BITSMINOR & L_MAXMAJ)) +#define GET_MIN_DEV(d) ((minor_t)(d & L_MAXMIN)) +# endif /* solaris >= 100000 */ + +# if solaris>=70000 +typedef uintptr_t KA_T; +# else /* solaris<70000 */ +typedef void * KA_T; +# endif /* solaris>=70000 */ + +# if solaris>=70000 +#define KA_T_FMT_X "0x%p" +# endif /* solaris>=70000 */ + +# if solaris>=20501 +#define KMEM "/dev/mem" +# else /* solaris<20501 */ +#define KMEM "/dev/kmem" +# endif /* solaris>=20501 */ + +#define MALLOC_P char +#define FREE_P MALLOC_P +#define MALLOC_S unsigned + +# if !defined(MAXEND) +#define MAXEND 0x7fffffff +# endif /* !defined(MAXEND) */ + +#define MAXSEGS 100 /* maximum text segments */ +#define MAXSYSCMDL MAXCOMLEN /* max system command name length */ +#define NETCLNML 8 +#define N_UNIX "/dev/ksyms" +#define PROCMIN 5 /* processes that make a "good" scan */ + +# if defined(HASPROCFS) +#define PR_ROOTINO 2 /* root inode for proc file system */ +# endif /* defined(HASPROCFS) */ + +#define PROCDFLT 256 /* default size for local proc table -- + * MUST BE > 4!!! */ +#define PROCSIZE sizeof(struct proc) +#define PROCTRYLM 5 /* times to try to read proc table */ +#define QSORT_P char +#define READLEN_T int +#define STRNCPY_L int +#define STRNML 32 /* stream name length (maximum) */ + +# if solaris>=20501 +/* + * Enable large file support. + */ + +# if solaris>=20600 +#define fstat fstat64 +#define lstat lstat64 +#define stat stat64 +# endif /* solaris>=20600 */ + +#define SZOFFTYPE unsigned long long + /* size and offset internal storage + * type */ +#define SZOFFPSPEC "ll" /* SZOFFTYPE printf specification + * modifier */ +# endif /* solaris>=20501 */ + +#define U_SIZE sizeof(struct user) + + +/* + * Global storage definitions (including their structure definitions) + */ + +# if defined(HAS_AFS) + +# if defined(HASAOPT) +extern char *AFSApath; /* alternate AFS name list path + * (from -a) */ +# endif /* defined(HASAOPT) */ + +extern dev_t AFSdev; /* AFS file system device number */ +extern int AFSdevStat; /* AFS file system device number + * status: 0 = unknown; 1 = known */ +extern int AFSfstype; /* AFS file system type index */ +extern KA_T AFSVfsp; /* AFS struct vfs kernel pointer */ +# endif /* defined(HAS_AFS) */ + +struct clone { + struct l_dev cd; /* device, inode, name, and verify */ + int n; /* network flag */ + struct clone *next; /* forward link */ +}; +extern struct clone *Clone; + +extern major_t CloneMaj; + +# if defined(HAS_LIBCTF) +/* + * Definitions for using the CTF library, libctf. + */ + +#include <libctf.h> + +#define CTF_MEMBER_UNDEF ~0UL /* undefined member type */ + /* CTF_member_t element definition */ + +/* + * Member structure definition, initialized by CTF_MEMBER() macro calls + */ + +typedef struct CTF_member { + char *m_name; /* Member name. */ + ulong_t m_offset; /* Member offset, initially in bits, + * later bytes */ +} CTF_member_t; + + +/* + * CTF request structure + */ + +typedef struct CTF_request { + char *name; /* structure name */ + CTF_member_t *mem; /* member table */ +} CTF_request_t; + + +/* + * CTF macroes + */ + +#define CTF_MEMBER(name) { #name, CTF_MEMBER_UNDEF } +#define CTF_MEMBER_READ(ka, s, members, member) \ + kread((KA_T)(ka) + members[MX_ ## member].m_offset, \ + (char *)&s->member, sizeof(s->member)) +# endif /* defined(HAS_LIBCTF) */ + +extern char **Fsinfo; +extern int Fsinfomax; +extern int HasALLKMEM; +extern int HaveCloneMaj; +extern kvm_t *Kd; + +struct l_ino { + unsigned char dev_def; /* dev member is defined */ + unsigned char ino_def; /* ino member is defined */ + unsigned char nl_def; /* nl member is defined */ + unsigned char rdev_def; /* rdev member is defined */ + unsigned char sz_def; /* sz member is defined */ + dev_t dev; /* device */ + long ino; /* node number */ + long nl; /* link count */ + dev_t rdev; /* "raw" device */ + SZOFFTYPE sz; /* size */ +}; + +struct l_vfs { + KA_T addr; /* kernel address */ + char *dir; /* mounted directory */ + char *fsname; /* file system name */ + dev_t dev; /* device */ + +# if defined(HASFSINO) + INODETYPE fs_ino; /* file system inode number */ +# endif /* defined(HASFSINO) */ + +# if defined(HASMNTSTAT) + unsigned char mnt_stat; /* mount point stat() status: + * 0 = succeeded + * 1 = failed */ +# endif /* defined(HASMNTSTAT) */ + + +# if solaris>=80000 + nlink_t nlink; /* directory link count */ + off_t size; /* directory size */ +# endif /* solaris>=80000 */ + + 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 */ + +# if defined(HASFSTYPE) + char *fstype; /* file system type */ +# endif /* defined(HASFSTYPE) */ + +# if solaris>=80000 + nlink_t nlink; /* directory st_nlink */ + off_t size; /* directory st_size */ +# endif /* solaris>=80000 */ + +# if defined(HASMNTSTAT) + unsigned char stat; /* mount point stat() status: + * 0 = succeeded + * 1 = failed */ +# endif /* defined(HASMNTSTAT) */ + +}; + +struct pseudo { + struct l_dev pd; /* device, inode, path, verify */ + struct pseudo *next; /* forward link */ +}; +extern struct pseudo *Pseudo; + + +/* + * Solaris 11 sdev definitions + */ + +#define SDVOP_IP 0 /* Sdev[] devipnet_vnodeops index */ +#define SDVOP_NET 1 /* Sdev[] devnet_vnodeops index */ +#define SDVOP_PTS 2 /* Sdev[] devpts_vnodeops index */ +#define SDVOP_VT 3 /* Sdev[] devvt_vnodeops index */ +#define SDVOP_NUM 4 /* number of Sdev[] entries */ + + +struct sfile { + char *aname; /* file name argument */ + 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 */ +}; +extern int Unof; /* u_nofiles value */ + + +/* + * VxFS definitions + */ + +#define VXVOP_FCL 0 /* Vvops[] vx_fcl_vnodeops_p index */ +#define VXVOP_FDD 1 /* Vvops[] fdd_vnops index */ +#define VXVOP_FDDCH 2 /* Vvops[] fdd_chain_vnops index */ +#define VXVOP_REG 3 /* Vvops[] vx_vnodeops index */ +#define VXVOP_REG_P 4 /* Vvops[] vx_vnodeops_p index */ +#define VXVOP_NUM 5 /* number of Vvops[] entries */ + + +/* + * Kernel name list definitions + */ + +#define NL_NAME n_name +#define X_NCACHE "ncache" +#define X_NCSIZE "ncsize" + + +/* + * Definitions for dvch.c + */ + +# if defined(HASDCACHE) +#define DCACHE_CLONE rw_clone_sect /* clone function for read_dcache */ +#define DCACHE_CLR clr_sect /* function to clear clone and + * pseudo caches when reading the + * device cache file fails */ +#define DCACHE_PSEUDO rw_pseudo_sect /* pseudo function for read_dcache */ +# endif /* defined(HASDCACHE) */ + +#define DVCH_DEVPATH "/devices" + + +/* + * Definition for cvfs.c + */ + +#define CVFS_DEVSAVE 1 + +# if solaris>=80000 +#define CVFS_NLKSAVE 1 +#define CVFS_SZSAVE 1 +# endif /* solaris>=80000 */ + + +/* + * Definitions for rnch.c + */ + +# if defined(HASNCACHE) +#include <sys/dnlc.h> + +# if !defined(NC_NAMLEN) +#define HASDNLCPTR 1 +# endif /* !defined(NC_NAMLEN) */ + +# if solaris>=80000 +#define NCACHE_NEGVN "negative_cache_vnode" +# endif /* solaris>=80000 */ +# endif /* defined(HASNCACHE) */ + +#endif /* SOLARIS_LSOF_H */ |