blob: 5a386a132d7b53767f99c845bd12f54cd070fc45 [file] [log] [blame]
/*
* vnode.h for HP-UX 10.30 and above
*
* This header file defines the locklist, vnode and vattr structures for lsof
* in a manner that can be compiled at the application level.
*
* V. Abell <abe@purdue.edu>
* February, 1998
*/
#if !defined(LSOF_VNODE_H)
#define LSOF_VNODE_H
#define _SYS_VNODE_INCLUDED /* prevent inclusion of <sys/vnode.h> */
#include "kernbits.h"
#include <sys/types.h>
#include <sys/sem_beta.h>
#include <sys/time.h>
#define VROOT 0x01
typedef struct locklist { /* lock list */
KA_T ll_link;
short ll_count;
short ll_flags; /* flags */
KA_T ll_proc; /* proc structure address (unused) */
KA_T ll_kthreadp; /* thread structure address */
/* ll_start and ll_end should be typed off_t, but there's an
* unresolvable conflict between the size of the kernel's off_t
* and the 32 and 64 bit application off_t sizes.
*/
int64_t ll_start; /* lock start */
int64_t ll_end; /* lock end */
short ll_type; /* lock type -- e.g., F_RDLCK or
* F_WRLCK */
KA_T ll_vp;
KA_T ll_waitq;
KA_T ll_fwd; /* forward link */
KA_T ll_rev;
KA_T ll_sib_fwd;
KA_T ll_sib_rev;
} locklist_t;
enum vtype {
VNON = 0,
VREG = 0x1,
VDIR = 0x2,
VBLK = 0x3,
VCHR = 0x4,
VLNK = 0x5,
VSOCK = 0x6,
VBAD = 0x7,
VFIFO = 0x8,
VFNWK = 0x9,
VEMPTYDIR = 0xa
};
enum vfstype {
VDUMMY = 0,
VNFS = 0x1,
VUFS = 0x2,
VDEV_VN = 0x3,
VNFS_SPEC = 0x4,
VNFS_BDEV = 0x5,
VNFS_FIFO = 0x6,
VCDFS = 0x7,
VVXFS = 0x8,
VDFS = 0x9,
VEFS = 0xa,
VLOFS = 0xb
};
typedef struct vnode {
u_short v_flag; /* flags -- e.g., VROOT */
u_short v_shlockc; /* shared lock count */
u_short v_exlockc; /* exclusive lock count */
u_short v_tcount;
int v_count;
KA_T v_vfsmountedhere;
KA_T v_op; /* operations switch */
KA_T v_socket;
KA_T v_stream; /* associated stream */
KA_T v_vfsp; /* pointer to virtual file system
* structure */
enum vtype v_type; /* vnode type */
dev_t v_rdev; /* device -- for VCHR and VBLK
* vnodes */
caddr_t v_data; /* private data -- i.e., pointer to
* successor node structure */
enum vfstype v_fstype;
KA_T v_vas;
vm_sema_t v_lock;
KA_T v_cleanblkhd;
KA_T v_dirtyblkhd;
int v_writecount;
KA_T v_locklist; /* locklist structure chain pointer */
int v_scount;
int32_t v_nodeid;
KA_T v_ncachedhd;
KA_T v_ncachevhd;
KA_T v_pfdathd;
u_int v_last_fsync;
} vnode_t;
typedef struct vattr {
enum vtype va_type;
u_short va_mode;
short va_nlink;
uid_t va_uid;
gid_t va_gid;
int32_t va_fsid;
int32_t va_nodeid; /* node ID number (e.g., inode
* number) */
off64_t va_size; /* file size */
int32_t va_blocksize;
struct timeval va_atime;
struct timeval va_mtime;
struct timeval va_ctime;
dev_t va_rdev;
blkcnt64_t va_blocks;
dev_t va_realdev;
u_short va_basemode;
u_short va_acl;
u_short va_sysVacl;
u_short va_dummy;
short va_fstype;
} vattr_t;
#endif /* !defined(LSOF_VNODE_H) */