Add headers for OpenSolaris extensions that glibc implements
[kopensolaris-gnu/glibc.git] / sysdeps / unix / sysv / solaris2 / kopensolaris-gnu / sys / old_procfs.h
1 /* Declarations of old procfs structures.
2    Copyright (C) 2008 Free Software Foundation, Inc.
3    This file is part of the GNU C Library.
4
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library; if not, write to the Free
17    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18    02111-1307 USA.  */
19
20 #ifndef _SYS_OLD_PROCFS_H
21 #define _SYS_OLD_PROCFS_H       1
22
23 #if _STRUCTURED_PROC == 0
24
25 #include <sys/types.h>
26 #include <sys/procset.h>
27 #include <sys/ucontext.h>
28 #include <sys/signal.h>
29 #include <sys/fault.h>
30
31 #define PIOC            ('q'<<8)
32 #define PIOCSTATUS      (PIOC|1)
33 #define PIOCSTOP        (PIOC|2)
34 #define PIOCWSTOP       (PIOC|3)
35 #define PIOCRUN         (PIOC|4)
36 #define PIOCGTRACE      (PIOC|5)
37 #define PIOCSTRACE      (PIOC|6)
38 #define PIOCSSIG        (PIOC|7)
39 #define PIOCKILL        (PIOC|8)
40 #define PIOCUNKILL      (PIOC|9)
41 #define PIOCGHOLD       (PIOC|10)
42 #define PIOCSHOLD       (PIOC|11)
43 #define PIOCMAXSIG      (PIOC|12)
44 #define PIOCACTION      (PIOC|13)
45 #define PIOCGFAULT      (PIOC|14)
46 #define PIOCSFAULT      (PIOC|15)
47 #define PIOCCFAULT      (PIOC|16)
48 #define PIOCGENTRY      (PIOC|17)
49 #define PIOCSENTRY      (PIOC|18)
50 #define PIOCGEXIT       (PIOC|19)
51 #define PIOCSEXIT       (PIOC|20)
52 #define PIOCSFORK       (PIOC|21)
53 #define PIOCRFORK       (PIOC|22)
54 #define PIOCSRLC        (PIOC|23)
55 #define PIOCRRLC        (PIOC|24)
56 #define PIOCGREG        (PIOC|25)
57 #define PIOCSREG        (PIOC|26)
58 #define PIOCGFPREG      (PIOC|27)
59 #define PIOCSFPREG      (PIOC|28)
60 #define PIOCNICE        (PIOC|29)
61 #define PIOCPSINFO      (PIOC|30)
62 #define PIOCNMAP        (PIOC|31)
63 #define PIOCMAP         (PIOC|32)
64 #define PIOCOPENM       (PIOC|33)
65 #define PIOCCRED        (PIOC|34)
66 #define PIOCGROUPS      (PIOC|35)
67 #define PIOCGETPR       (PIOC|36)
68 #define PIOCGETU        (PIOC|37)
69 #define PIOCSET         (PIOC|38)
70 #define PIOCRESET       (PIOC|39)
71 #define PIOCUSAGE       (PIOC|43)
72 #define PIOCOPENPD      (PIOC|44)
73 #define PIOCLWPIDS      (PIOC|45)
74 #define PIOCOPENLWP     (PIOC|46)
75 #define PIOCLSTATUS     (PIOC|47)
76 #define PIOCLUSAGE      (PIOC|48)
77 #define PIOCNAUXV       (PIOC|49)
78 #define PIOCAUXV        (PIOC|50)
79 #define PIOCGXREGSIZE   (PIOC|51)
80 #define PIOCGXREG       (PIOC|52)
81 #define PIOCSXREG       (PIOC|53)
82
83 #define PIOCNLDT        (PIOC|103)
84 #define PIOCLDT         (PIOC|104)
85
86 #define PRCLSZ          8
87 #define PRSYSARGS       8
88
89 #endif /* _STRUCTURED_PROC == 0 */
90
91 typedef struct prstatus
92   {
93         int pr_flags;
94         short pr_why;
95         short pr_what;
96         siginfo_t pr_info;
97         short pr_cursig;
98         unsigned short pr_nlwp;
99         sigset_t pr_sigpend;
100         sigset_t pr_sighold;
101         struct sigaltstack pr_altstack;
102         struct sigaction pr_action;
103         pid_t pr_pid;
104         pid_t pr_ppid;
105         pid_t pr_pgrp;
106         pid_t pr_sid;
107         struct timespec pr_utime;
108         struct timespec pr_stime;
109         struct timespec pr_cutime;
110         struct timespec pr_cstime;
111         char pr_clname[PRCLSZ];
112         short pr_syscall;
113         short pr_nsysarg;
114         long pr_sysarg[PRSYSARGS];
115         id_t pr_who;
116         sigset_t pr_lwppend;
117         struct ucontext *pr_oldcontext;
118         caddr_t pr_brkbase;
119         size_t pr_brksize;
120         caddr_t pr_stkbase;
121         size_t pr_stksize;
122         short pr_processor;
123         short pr_bind;
124         long pr_instr;
125         prgregset_t pr_reg;
126   } prstatus_t;
127
128 #if _STRUCTURED_PROC == 0
129
130 #define PR_STOPPED      0x0001
131 #define PR_ISTOP        0x0002
132 #define PR_DSTOP        0x0004
133 #define PR_ASLEEP       0x0008
134 #define PR_FORK         0x0010
135 #define PR_RLC          0x0020
136 #define PR_PTRACE       0x0040
137 #define PR_PCINVAL      0x0080
138 #define PR_ISSYS        0x0100
139 #define PR_STEP         0x0200
140 #define PR_KLC          0x0400
141 #define PR_ASYNC        0x0800
142 #define PR_PCOMPAT      0x1000
143 #define PR_MSACCT       0x2000
144 #define PR_BPTADJ       0x4000
145 #define PR_ASLWP        0x8000
146
147 #define PR_REQUESTED    1
148 #define PR_SIGNALLED    2
149 #define PR_SYSENTRY     3
150 #define PR_SYSEXIT      4
151 #define PR_JOBCONTROL   5
152 #define PR_FAULTED      6
153 #define PR_SUSPENDED    7
154 #define PR_CHECKPOINT   8
155
156 #define PRFNSZ          16
157 #define PRARGSZ         80
158
159 #endif /* _STRUCTURED_PROC == 0 */
160
161 typedef struct prpsinfo
162   {
163         char pr_state;
164         char pr_sname;
165         char pr_zomb;
166         char pr_nice;
167         unsigned int pr_flag;
168         uid_t pr_uid;
169         gid_t pr_gid;
170         pid_t pr_pid;
171         pid_t pr_ppid;
172         pid_t pr_pgrp;
173         pid_t pr_sid;
174         caddr_t pr_addr;
175         size_t pr_size;
176         size_t pr_rssize;
177         caddr_t pr_wchan;
178         struct timespec pr_start;
179         struct timespec pr_time;
180         int pr_pri;
181         char pr_oldpri;
182         char pr_cpu;
183         o_dev_t pr_ottydev;
184         dev_t pr_lttydev;
185         char pr_clname[PRCLSZ];
186         char pr_fname[PRFNSZ];
187         char pr_psargs[PRARGSZ];
188         short pr_syscall;
189         short pr_fill;
190         struct timespec pr_ctime;
191         size_t pr_bysize;
192         size_t pr_byrssize;
193         int pr_argc;
194         char    **pr_argv;
195         char    **pr_envp;
196         int pr_wstat;
197         unsigned short pr_pctcpu;
198         unsigned short pr_pctmem;
199         uid_t pr_euid;
200         gid_t pr_egid;
201         id_t pr_aslwpid;
202         char pr_dmodel;
203         char pr_pad[3];
204         int pr_filler[6];
205   } prpsinfo_t;
206
207 #if _STRUCTURED_PROC == 0
208
209 typedef struct prrun
210   {
211         int pr_flags;
212         sigset_t pr_trace;
213         sigset_t pr_sighold;
214         fltset_t pr_fault;
215         caddr_t pr_vaddr;
216         int pr_filler[8];
217   } prrun_t;
218
219 #define PRCSIG          0x001
220 #define PRCFAULT        0x002
221 #define PRSTRACE        0x004
222 #define PRSHOLD         0x008
223 #define PRSFAULT        0x010
224 #define PRSVADDR        0x020
225 #define PRSTEP          0x040
226 #define PRSABORT        0x080
227 #define PRSTOP          0x100
228
229 typedef struct prmap
230   {
231         caddr_t pr_vaddr;
232         size_t pr_size;
233         off_t pr_off;
234         unsigned int pr_mflags;
235         unsigned int pr_pagesize;
236         long pr_filler[3];
237   } prmap_t;
238
239 #define MA_READ         0x04
240 #define MA_WRITE        0x02
241 #define MA_EXEC         0x01
242 #define MA_SHARED       0x08
243 #define MA_BREAK        0x10
244 #define MA_STACK        0x20
245
246 typedef struct prcred
247   {
248         uid_t pr_euid;
249         uid_t pr_ruid;
250         uid_t pr_suid;
251         gid_t pr_egid;
252         gid_t pr_rgid;
253         gid_t pr_sgid;
254         unsigned int pr_ngroups;
255   } prcred_t;
256
257 typedef struct prusage
258   {
259         id_t pr_lwpid;
260         int pr_count;
261         struct timespec pr_tstamp;
262         struct timespec pr_create;
263         struct timespec pr_term;
264         struct timespec pr_rtime;
265         struct timespec pr_utime;
266         struct timespec pr_stime;
267         struct timespec pr_ttime;
268         struct timespec pr_tftime;
269         struct timespec pr_dftime;
270         struct timespec pr_kftime;
271         struct timespec pr_ltime;
272         struct timespec pr_slptime;
273         struct timespec pr_wtime;
274         struct timespec pr_stoptime;
275         struct timespec filltime[6];
276         unsigned long pr_minf;
277         unsigned long pr_majf;
278         unsigned long pr_nswap;
279         unsigned long pr_inblk;
280         unsigned long pr_oublk;
281         unsigned long pr_msnd;
282         unsigned long pr_mrcv;
283         unsigned long pr_sigs;
284         unsigned long pr_vctx;
285         unsigned long pr_ictx;
286         unsigned long pr_sysc;
287         unsigned long pr_ioch;
288         unsigned long   filler[10];
289   } prusage_t;
290
291 typedef struct prpageheader
292   {
293         struct timespec pr_tstamp;
294         unsigned long pr_nmap;
295         unsigned long pr_npage;
296   } prpageheader_t;
297
298 typedef struct prasmap
299   {
300         caddr_t pr_vaddr;
301         size_t pr_npage;
302         off_t pr_off;
303         unsigned int pr_mflags;
304         unsigned int pr_pagesize;
305         long pr_filler[3];
306   } prasmap_t;
307
308 #define PG_REFERENCED   0x02
309 #define PG_MODIFIED     0x01
310 #define PG_HWMAPPED     0x04
311
312 /* based on sig*set */
313
314 #define prfillset(set) \
315         { int __cnt = sizeof (*set) / sizeof (uint32_t); \
316         while (--__cnt >= 0) ((uint32_t *)(set))[__cnt] = 0xFFFFFFFF; }
317
318 #define premptyset(set) \
319         { int __cnt = sizeof (*set) / sizeof (uint32_t); \
320         while (--__cnt >= 0) ((uint32_t *)(set))[__cnt] = 0; }
321
322 #define __prmask(flag) \
323   (((uint32_t) 1) << (((flag) - 1) % (8 * (int)sizeof (uint32_t))))
324
325 # define __prword(flag) (((flag) - 1) / (8 * (int)sizeof (uint32_t)))
326
327 #define praddset(set, flag) \
328     (((uint32_t *)(set))[__prword (flag)] |= __prmask (flag))
329
330 #define prdelset(set, flag) \
331     (((uint32_t *)(set))[__prword (flag)] &= ~__prmask (flag))
332
333 #define prismember(set, flag) \
334         ((((uint32_t *)(set))[__prword (flag)] & __prmask (flag)) ? 1 : 0)
335
336 #endif /* _STRUCTURED_PROC == 0 */
337
338 #endif /* _SYS_OLD_PROCFS_H */