blob: e922bd45522a600c16434cdc54295f45f6f16a2c [file] [log] [blame]
/*
* proc.h for Hp-UX 10.30 and above
*
* This header file defines the proc structure for lsof. Lsof uses it to
* get process information, including PGID, PID, PPID, UID, CWD, and open
* file pointers.
*
* V. Abell <abe@purdue.edu>
* February, 1998
*/
#if !defined(LSOF_PROC_H)
#define LSOF_PROC_H
#include "kernbits.h"
#include <sys/types.h>
#include <sys/resource.h>
#include <sys/user.h>
struct pprof {
KA_T pr_base;
u_long pr_size;
u_long pr_off;
u_int pr_scale;
};
typedef enum proc_flag {
SLOAD = 0x1,
SSYS = 0x2,
SDONTTRC = 0x4,
STRC = 0x8,
SWTED_PARENT = 0x10,
SDEACTSELF = 0x20,
SPVFORK = 0x40,
SWEXIT = 0x80,
SPGID_EXIT_ADJUSTED = 0x100,
SVFORK = 0x200,
SWANTS_ALLCPU = 0x400,
SSERIAL = 0x800,
SDEACT = 0x1000,
SWAITIO = 0x2000,
SWTED_DEBUGGER = 0x4000,
SWCONT = 0x8000,
SDBG_CREATING = 0x10000,
SDBG_WAITING = 0x20000,
SDBG_ACTIVE = 0x40000,
SDBG_LIMBO = 0x80000,
SDBG_ATTACHING = 0x100000,
SDBG_EXITING = 0x200000,
SDBG_KILLED = 0x400000,
SDBG_INEXEC = 0x800000,
SDBG_TRACESELF = 0x1000000,
SDBG_STOPPED = 0x2000000,
SDBG_EXITREQ = 0x4000000,
SREAPING = 0x10000000
} proc_flag_t;
typedef enum proc_flag2 {
S2CLDSTOP = 0x1,
S2EXEC = 0x2,
SGRAPHICS = 0x4,
SADOPTIVE = 0x8,
SADOPTIVE_WAIT = 0x10,
SPMT = 0x40,
S2SENDDILSIG = 0x100,
SLKDONE = 0x200,
SISNFSLM = 0x400,
S2POSIX_NO_TRUNC = 0x800,
S2SYSCALL_BYPID = 0x1000,
S2ADOPTEE = 0x2000,
SCRITICAL = 0x4000,
SMULTITHREADED = 0x8000,
S2NOCLDWAIT = 0x10000,
S_USE_THRD_CACHE = 0x20000,
S2PASS_VIOREF = 0x40000,
S2VIOREF_NPROC = 0x80000,
SUSRMULTITHREADED = 0x100000
} proc_flag2_t;
typedef enum proc_state {
SUNUSED = 0,
SWAIT = 0x1,
SIDL = 0x2,
SZOMB = 0x3,
SSTOP = 0x4,
SINUSE = 0x5
} proc_state_t;
typedef enum proc_sync_flag {
P_OP_PENDING_READER = 0x1,
P_OP_PENDING_WRITER = 0x2
} proc_sync_flag_t;
typedef enum proc_sync_reason {
P_OP_NONE = 0,
P_OP_THREAD_MGMT = 0x1,
P_OP_EXIT = 0x2,
P_OP_EXEC = 0x3,
P_OP_SUSPEND = 0x4,
P_OP_CONTINUE = 0x5,
P_OP_SIGTRAP = 0x6,
P_OP_FORK = 0x7,
P_OP_VFORK = 0x8,
P_OP_CORE = 0x9,
KT_OP_SUSPEND = 0xa,
KT_OP_RESUME = 0xb,
KT_OP_CREATE = 0xc,
KT_OP_TERMINATE = 0xd,
KT_OP_LWPEXIT = 0xe,
KT_OP_ABORT_SYSCALL = 0xf
} proc_sync_reason_t;
typedef struct proc {
short p_fandx;
short p_pandx;
int p_created_threads;
KA_T p_firstthreadp; /* thread pointer (for locks) */
KA_T p_lastthreadp;
proc_flag_t p_flag;
KA_T thread_lock;
KA_T p_lock;
KA_T p_detached_zombie;
KA_T p_fss;
proc_state_t p_stat; /* process state */
char p_nice;
u_short p_pri;
int p_livethreads;
int p_cached_threads_count;
int p_cached_threads_max;
KA_T p_cached_threads;
KA_T p_cache_next;
KA_T p_cache_prev;
ksigset_t p_sig;
ksigset_t p_ksi_avail;
ksigset_t p_ksifl_alloced;
KA_T p_ksiactive;
KA_T p_ksifree;
KA_T p_sigcountp;
KA_T p_sigwaiters;
int p_cursig;
proc_flag2_t p_flag2;
int p_coreflags;
uid_t p_uid; /* user ID (UID) of process owner */
uid_t p_suid;
KA_T p_pgid_p;
gid_t p_pgid;
pid_t p_pid; /* process ID (PID) */
pid_t p_ppid; /* parent process ID (PPID) */
size_t p_maxrss;
short p_idhash;
short p_ridhash;
short p_pgidhx;
short p_rpgidhx;
short p_uidhx;
short p_ruidhx;
KA_T p_pptr;
KA_T p_cptr;
KA_T p_osptr;
KA_T p_ysptr;
KA_T p_dptr;
KA_T p_vas; /* pointer to VM for process */
short p_memresv;
short p_swpresv;
short p_sysmemresv;
short p_sysswpresv;
u_short p_xstat;
time_t p_deactime;
short p_ndx;
sid_t p_sid;
short p_sidhx;
short p_rsidhx;
short p_idwrite;
KA_T p_semundo;
KA_T p_dbipcp;
u_char p_cookie;
u_char p_reglocks;
int p_no_swap_count;
dev_t p_ttyd;
KA_T p_ttyp;
KA_T p_nextdeact;
time_t p_start;
KA_T p_shadproc;
KA_T p_bor_lock;
int p_maxof; /* maximum open files */
KA_T p_cdir; /* pointer to CWD vnode */
KA_T p_rdir; /* pointer to root directory vnode */
KA_T p_ofilep; /* pointer to ofile_t chain */
KA_T p_vforkbuf;
u_int p_schedpolicy;
u_short p_pindx;
KA_T p_krusagep;
KA_T p_timers;
KA_T p_clic;
proc_sync_reason_t p_sync_reason;
void (*p_wide_action_hdlr)();
proc_sync_flag_t p_sync_flag;
ushort p_sync_readers;
ushort p_sync_writers;
u_int p_sync_thread_cnt;
int p_suspended_threads;
int p_captr;
union {
struct {
u_int zombies_exist:1,
recalc_privgrps:1,
unused:30;
} bits;
u_int all;
} p_pl_flags;
u_int p_seqnum;
spu_t p_spu_group;
u_char p_spu_mandatory;
KA_T p_cred;
caddr_t p_ki_bitmap;
KA_T p_aioqp;
KA_T p_shared;
KA_T p_nseminfop;
KA_T p_mqpinfop;
KA_T p_dbgctltp;
KA_T p_dbgp;
KA_T p_trcp;
KA_T p_p2p;
KA_T p_gang;
u_int p_pmon_timer_mask;
u_int p_pmon_inherit;
u_long p_pmon_state_flag;
u_long p_pmon_state_value;
KA_T p_cnx_features;
char p_comm[15];
aid_t p_aid;
short p_audproc;
short p_audsusp;
gid_t p_sgid;
u_int p_priv[2];
int p_highestfd;
short p_cmask;
time_t p_ticks;
short p_acflag;
struct rlimit p_rlimit[11];
KA_T p_auditperproc;
struct pprof p_prof;
char p_spare[48];
} proc_t;
#endif /* !defined(LSOF_PROC_H) */