blob: 287b4c589adba33f5b66ec2f84fba7ec71084000 [file] [log] [blame]
/*
* dlsof.h - AIX 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.32 2006/03/27 23:09:21 abe Exp $
*/
#if !defined(AIX_LSOF_H)
#define AIX_LSOF_H 1
/*
* AIXA stands for AIX architecure. It is given these values in the
* aix stanza of the lsof Configure script:
*
* 0 The AIX version is < 5, or the AIX architecture is power and
* the kernel bit size is 32.
*
* 1 The AIX version is >= 5, the AIX architecture is Power, and
* the kernel bit size is 64.
*
* 2 The AIX version is > 5 and the architecture is IA64.
*/
# if AIXA>1
#include <nlist.h>
# endif /* AIXA>1 */
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
#include <setjmp.h>
#include <unistd.h>
# if !defined(_KERNEL)
#define _KERNEL 1
# endif /* !defined(_KERNEL) */
#include <sys/vnode.h>
#include <sys/file.h>
#include <procinfo.h> /* <procinfo.h> #includes <sys/user.h> */
#define p_pid pi_pid
#define p_pgid pi_pgrp
#define p_ppid pi_ppid
# if AIXV<4300
#define p_stat pi_stat
# else /* AIXV>=4300 */
#define p_stat pi_state
#include <sys/systemcfg.h>
# endif /* AIXV<4300 */
#define p_uid pi_uid
#undef sleep
#undef _KERNEL
# if AIXA>1
#define _NET_NET_MALLOC /* to keep <sys/mbuf.h> from #include'ing
* <sys/ppda.h>, which is missing from
* ia64 AIX 5L */
# endif /* AIXA>1 */
#include <sys/mbuf.h>
#include <sys/mntctl.h>
#include <sys/protosw.h>
#include <sys/socket.h>
#include <sys/socketvar.h>
# if AIXV>=4140
#include <sys/stream.h>
# endif /* AIXV>=4140 */
#include <sys/sysmacros.h>
#include <sys/un.h>
#include <sys/unpcb.h>
# if defined(HASKERNIDCK) && AIXV>=5000
#include <sys/utsname.h>
# endif /* defined(HASKERNIDCK) && AIXV>=5000 */
#include <netinet/in.h>
#include <net/route.h>
#include <net/raw_cb.h>
# if AIXV>=4100
#include <netinet/ip.h>
# endif /* AIXV>=4100 */
#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 <sys/vattr.h>
#include <sys/statfs.h>
#include <rpc/rpc.h>
#include <rpc/pmap_prot.h>
# if defined(HAS_AFS)
#define __XDR_INCLUDE__
# endif /* defined(HAS_AFS) */
#include <sys/vfs.h>
#include <sys/vmount.h>
# if defined(HAS_SANFS) && !defined(MNT_SANFS)
#define MNT_SANFS 20
# endif /* defined(HAS_SANFS) && !defined(MNT_SANFS) */
# if AIXV>=4100
# if AIXV>=4110
#undef u
#undef u_comm
#undef u_cdir
#undef u_rdir
#undef u_maxofile
#undef u_ufd
#undef u_loader
# endif /* AIXV>=4110 */
#define u_comm U_comm
#define u_cdir U_cdir
#define u_rdir U_rdir
#define u_maxofile U_maxofile
#define u_ufd U_ufd
#define u_loader U_loader
# endif /* AIXV>=4100 */
# if AIXV>=3200
#include <sys/specnode.h>
# endif /* AIXV>=3200 */
/*
* AIX doesn't supply cdrnode.h.
*/
struct cdrnode {
caddr_t f1[4];
struct gnode f2;
dev_t f3;
ino_t cn_inumber; /* inode number */
caddr_t f4;
cnt_t f5[2];
u_short f6;
uint f7[2];
uchar f8[3];
off_t cn_size; /* size of file in bytes */
};
# if defined(HAS_AFS)
/*
* Avoid typdef conflicts in <afs/stds.h>.
*/
# if defined(HASINT16TYPE)
#define int16 AFS_int16
# endif /* defined(HASINT16TYPE */
# if defined(HASUINT16TYPE)
#define u_int16 AFS_u_int16
# endif /* defined(HASUINT16TYPE */
# if defined(HASINT32TYPE)
#define int32 AFS_int32
# endif /* defined(HASINT32TYPE) */
#include <afs/stds.h>
#include <afs/param.h>
#include <afs/afsint.h>
#include <afs/vldbint.h>
# endif /* defined(HAS_AFS) */
/*
* Miscellaneous definitions.
*/
# if defined(HAS_AFS)
#define AFSAPATHDEF "/usr/vice/etc/dkload/???"
#define AFSDEV 1 /* AFS "fake" device number */
# if !defined(MNT_AFS)
#define MNT_AFS AFS_MOUNT_AFS
# endif /* !defined(MNT_AFS) */
# endif /* defined(HAS_AFS) */
#define COMP_P const void
#define DEVINCR 1024 /* device table malloc() increment */
# if AIXV<4200
typedef off_t KA_T;
# else /* AIXV>=4200 */
# if AIXA<1
typedef unsigned int KA_T;
# else /* AIXA>=1 */
typedef u_longlong_t KA_T;
#define GET_MAJ_DEV(d) (ISDEVNO64(d) ? major64(d) : major(d & ~SDEV_REMOTE))
#define GET_MIN_DEV(d) (ISDEVNO64(d) ? (minor64(d) & ~SDEV_REMOTE) : minor(d))
#define KA_T_FMT_X "%#llx"
# endif /* AIXA<1 */
# endif /* AIXV<4200 */
#define KMEM "/dev/kmem"
# if defined(HASSTAT64)
#define fstat fstat64
#define lstat lstat64
#define stat stat64
# endif /* defined(HASSTAT64) */
#define MALLOC_P char
#define FREE_P MALLOC_P
#define MALLOC_S size_t
#define MAXSYSCMDL MAXCOMLEN /* max system command name length */
#define N_UNIX "/unix"
#define QSORT_P void
#define READLEN_T size_t
#define STRNCPY_L size_t
# if AIXV>=4200
#define SZOFFTYPE unsigned long long
/* size and offset type definition */
#define SZOFFPSPEC "ll" /* SZOFFTYPE print specification modifier */
# endif /* AIXV>=4200 */
#define U_SIZE sizeof(struct user)
/*
* Name list (Nl[]) indexes
*/
#define X_UADDR 0
#define X_NL_NUM 1
/*
* Definition for ckfa.c
*/
#define CKFA_MPXCHAN 1
/*
* Definitions for dvch.c
*/
# if AIXV>=4140
#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 */
# endif /* AIXV>=4140 */
/*
* Definitions for enter_dir()
*/
#define DIRTYPE dirent
#define HASDNAMLEN 1
# if defined(HAS_AFS)
/*
* AFS name list (AFSnl[]) indexes
*/
#define X_AFS_FID 0
#define X_AFS_VOL 1
#define X_AFSNL_NUM 2
# endif /* defined(HAS_AFS) */
# if AIXV>=4140
/*
* Local clone information
*/
struct clone {
struct l_dev cd; /* device, inode, name, verify status */
struct clone *next; /* next entry */
};
extern struct clone *Clone;
extern int CloneMaj;
extern int ClonePtc;
#endif /* AIXV>=4140 */
/*
* Local inode information
*/
struct l_ino {
dev_t dev; /* device */
long nlink; /* link count */
INODETYPE number; /* inode number */
SZOFFTYPE size; /* file size */
unsigned char dev_def; /* link count is defined */
unsigned char nlink_def; /* link count is defined */
unsigned char number_def; /* number is defined */
unsigned char size_def; /* size is defined */
};
/*
* Local vfs information
*/
struct l_vfs {
KA_T addr; /* kernel address */
dev_t dev; /* device */
char *dir; /* mounted directory */
char *fsname; /* file system name */
int vmt_flags; /* vmount flags */
int vmt_gfstype; /* vmount gfs type */
struct l_vfs *next; /* forward link */
};
extern struct l_vfs *Lvfs;
/*
* Local mount information
*/
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 */
u_short mode; /* directory st_mode */
u_short fs_mode; /* file system st_mode */
# if defined(HASFSTYPE)
int fstype; /* fs type */
# endif /* defined(HASFSTYPE) */
struct mounts *next; /* forward link */
};
extern struct mounts *Mtab;
/*
* Search file information
*/
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 */
chan_t ch; /* channel (last path component,
* (if numeric) */
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 */
};
/*
* Miscellaneous external definitions
*/
# if defined(HAS_AFS)
extern struct nlist AFSnl[]; /* AFS kernel symbol name list table */
# if defined(HASAOPT)
extern char *AFSApath; /* alternate AFS name list path (from -a) */
# endif /* defined(HASAOPT) */
extern KA_T AFSVfsp; /* AFS struct vfs kernel pointer */
# endif /* defined(HAS_AFS) */
extern int Kd;
extern int Km;
extern struct nlist Nl[];
# if defined(TCPSTATES) && AIXV<=3250
/*
* For AIX 3.2.5 and below, there is no header file with the definition
* of tcpstates[], needed by ptti.c's print_tcptpi() function.
*/
static char *tcpstates[] = {
"CLOSED", "LISTEN", "SYN_SENT", "SYN_RCVD",
"ESTABLISHED", "CLOSE_WAIT", "FIN_WAIT_1", "CLOSING",
"LAST_ACK", "FIN_WAIT_2", "TIME_WAIT"
};
# endif /* defined(TCPSTATES) && AIXV<=3250 */
# if AIXA>1
/*
* This AIX 5 or above ia64 hack prevents the loader from linking lsof's
* kread() in preference to the kread() that read() uses. The very existence
* of a system kread() is an unwarrranted invasion of user name space!
*/
#define kread lsof_kread /* avoid conflict with the kread()
* in libc.so */
# endif /* AIXA>1 */
#endif /* AIX_LSOF_H */