summaryrefslogtreecommitdiff
path: root/dialects/hpux/kmem/hpux11/proc.h
blob: e922bd45522a600c16434cdc54295f45f6f16a2c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
/*
 * 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) */