blob: ebca8f24cc78d58350c05aa8709b974668237821 [file] [log] [blame]
/*
* dlsof.h - SCO OpenServer header file for lsof
*/
/*
* Copyright 1995 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.14 2007/04/24 16:22:40 abe Exp $
*/
#if !defined(OSR_LSOF_H)
#define OSR_LSOF_H 1
#include <dirent.h>
#include <fcntl.h>
#include <mnttab.h>
#include <nlist.h>
#include <setjmp.h>
#include <signal.h>
#include <string.h>
# if OSRV>=500
#include <strings.h>
# endif /* OSRV>=500 */
#include <stdlib.h>
#include <unistd.h>
#include <sys/conf.h>
#include <sys/file.h>
#include <sys/flock.h>
#include <sys/fstyp.h>
#include <sys/immu.h>
#include <sys/inode.h>
#include <sys/region.h>
#include <sys/proc.h>
#include <sys/sysi86.h>
/*
* This confusing sequence of redefinitions of xdevmap allows lsof to size
* its copy of the kernel's xdevmap[] table dynamically, based on the
* kernel's nxdevmaps value.
*
* The net result is that there is a dummy struct XDEVMAP[1], defined in
* dstore.c, that is never used. The copy of the kernel's xdevmap[] table
* is stored in the space malloc()'d in dproc.c and addressed by Xdevmap.
* The last redefinition of xdevmap to Xdevmap causes the macros of
* <sys/sysmacros.h> to use Xdevmap.
*
* All this is done: 1) to avoid having to allocate a large amount of fixed
* space in advance to a copy of the kernel's xdevmap; and 2) to keep CC from
* complaining about the absence of a "struct xdevmap xdevmap[]," matching
* the "extern struct xdevmap xdevmap[]" declaration in <sys/sysmacros.h>,
* while still allowing lsof to use the equivalent of a "struct xdevmap *"
* construct instead, particularly with the kernel forms of the major() and
* minor() macros.
*/
#define xdevmap XDEVMAP
#define _INKERNEL
#include <sys/sysmacros.h>
#undef _INKERNEL
extern struct XDEVMAP *Xdevmap;
#undef xdevmap
#define xdevmap Xdevmap
#include <sys/stream.h>
#include <sys/time.h>
#include <sys/dir.h>
#include <sys/user.h>
#include <sys/var.h>
# if defined(HAS_NFS)
#define multiple_groups 1
#include <sys/fs/nfs/types.h>
#include <sys/fs/nfs/nfs.h>
#include <sys/fs/nfs/ucred.h>
#include <sys/fs/nfs/rnode.h>
# endif /* defined(HAS_NFS) */
#include <sys/socket.h>
#include <sys/net/domain.h>
#undef NOGROUP
#include <rpc/rpc.h>
#include <rpc/pmap_prot.h>
# if OSRV<500
#include <sys/net/protosw.h>
#include <sys/net/socketvar.h>
# else /* OSRV>=500 */
#include <sys/protosw.h>
#include <sys/socketvar.h>
#include <sys/un.h>
#include <sys/fs/hpps.h>
# endif /* OSRV<500 */
#include <sys/netinet/in.h>
#include <sys/net/route.h>
#include <sys/netinet/in_pcb.h>
#include <sys/netinet/ip_var.h>
#include <sys/netinet/tcp.h>
#include <sys/netinet/tcp_fsm.h>
#include <sys/netinet/tcp_timer.h>
#include <sys/netinet/tcp_var.h>
#include <sys/netinet/udp.h>
#include <sys/utsname.h>
#define INKERNEL
#include <sys/netinet/udp_var.h>
#undef INKERNEL
/*
* Adjust for the availability of symbolic links.
*/
# if defined(HAS_STATLSTAT)
#define lstat statlstat
# else /* !defined(HAS_STATLSTAT) */
#define lstat stat
#define readlink(path, buf, len) (-1)
# endif /* defined(HAS_STATLSTAT) */
#define COMP_P const void
#define DEVINCR 1024 /* device table malloc() increment */
#define DIRTYPE dirent
typedef off_t KA_T;
#define KMEM "/dev/kmem"
#define MALLOC_P void
#define MNTTAB "/etc/mnttab"
#define FREE_P MALLOC_P
#define MALLOC_S size_t
# if !defined(MAXPATHLEN)
#define MAXPATHLEN 1024
# endif /* !defined(MAXPATHLEN) */
#define MAXSEGS 100 /* maximum text segments */
#define MAXSYSCMDL (PSCOMSIZ - 1) /* max system command name length */
# if OSRV<500
#define N_UNIX "/unix"
# endif /* OSRV<500 */
#define PROCBFRD 16 /* count of proc structures buffered */
#define PROCSIZE sizeof(struct proc)
#define QSORT_P void
#define READLEN_T unsigned
#define STRNCPY_L size_t
#define STRNML 32
#define U_SIZE sizeof(struct user)
/*
* Global storage definitions (including their structure definitions)
*/
extern char **Cdevsw;
extern int Cdevcnt;
extern int CloneMajor;
extern int EventMajor;
extern char **Fsinfo;
extern int Fsinfomax;
extern int HaveCloneMajor;
extern int HaveEventMajor;
extern int HaveSockdev;
extern int Hz;
extern int Kd;
extern KA_T Lbolt;
extern int nxdevmaps; /* maximum kernel xdevmap[] index */
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; /* st_fstype */
# endif
};
#define NL_NAME n_name /* name element in struct nlist */
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 */
mode_t 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 Sockdev;
extern KA_T Socktab;
/*
* Definitions for dvch.c, isfn.c, and rdev.c
*/
#define CLONEMAJ CloneMajor /* clone major variable name */
# if defined(HASDCACHE)
# if OSRV<500
#define DVCH_CHOWN 1 /* no fchown() below release 5.0 */
# endif /* OSRV<500 */
# endif /* defined(HASDCACHE) */
#define HAS_STD_CLONE 1 /* has standard clone structure */
#define HAVECLONEMAJ HaveCloneMajor /* clone major status variable name */
#endif /* OSR_LSOF_H */