Add headers for OpenSolaris extensions that glibc implements
[kopensolaris-gnu/glibc.git] / sysdeps / unix / sysv / solaris2 / kopensolaris-gnu / sys / acctctl.h
1 /* Declarations of acctlctl function and types.
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_ACCTCTL_H
21 #define _SYS_ACCTCTL_H
22
23 #include <sys/types.h>
24 #include <features.h>
25
26 #define AC_PROC         (0x1 << 28)
27 #define AC_TASK         (0x2 << 28)
28 #define AC_FLOW         (0x4 << 28)
29 #define AC_MODE(x)      ((x) & 0xf0000000)
30
31 #define AC_FILE_SET     0x01
32 #define AC_FILE_GET     0x02
33 #define AC_RES_SET      0x04
34 #define AC_RES_GET      0x08
35 #define AC_STATE_SET    0x10
36 #define AC_STATE_GET    0x20
37 #define AC_OPTION(x)    ((x) & 0x0fffffff)
38
39 enum
40   {
41         AC_NONE = 0,
42 #define AC_NONE                 AC_NONE
43         AC_PROC_PID = 1,
44 #define AC_PROC_PID             AC_PROC_PID
45         AC_PROC_UID = 2,
46 #define AC_PROC_UID             AC_PROC_UID
47         AC_PROC_GID = 3,
48 #define AC_PROC_GID             AC_PROC_GID
49         AC_PROC_PROJID = 4,
50 #define AC_PROC_PROJID          AC_PROC_PROJID
51         AC_PROC_TASKID = 5,
52 #define AC_PROC_TASKID          AC_PROC_TASKID
53         AC_PROC_CPU = 6,
54 #define AC_PROC_CPU             AC_PROC_CPU
55         AC_PROC_TIME = 7,
56 #define AC_PROC_TIME            AC_PROC_TIME
57         AC_PROC_COMMAND = 8,
58 #define AC_PROC_COMMAND         AC_PROC_COMMAND
59         AC_PROC_TTY = 9,
60 #define AC_PROC_TTY             AC_PROC_TTY
61         AC_PROC_HOSTNAME = 10,
62 #define AC_PROC_HOSTNAME        AC_PROC_HOSTNAME
63         AC_PROC_MICROSTATE = 11,
64 #define AC_PROC_MICROSTATE      AC_PROC_MICROSTATE
65         AC_PROC_FLAG = 12,
66 #define AC_PROC_FLAG            AC_PROC_FLAG
67         AC_PROC_ANCPID = 13,
68 #define AC_PROC_ANCPID          AC_PROC_ANCPID
69         AC_PROC_WAIT_STATUS = 14,
70 #define AC_PROC_WAIT_STATUS     AC_PROC_WAIT_STATUS
71         AC_PROC_ZONENAME = 15,
72 #define AC_PROC_ZONENAME        AC_PROC_ZONENAME
73         AC_PROC_MEM = 16,
74 #define AC_PROC_MEM             AC_PROC_MEM
75         AC_PROC_MAX_RES = 17
76 #define AC_PROC_MAX_RES         AC_PROC_MAX_RES
77   };
78
79 enum
80   {
81         AC_TASK_TASKID = 1,
82 #define AC_TASK_TASKID          AC_TASK_TASKID
83         AC_TASK_PROJID = 2,
84 #define AC_TASK_PROJID          AC_TASK_PROJID
85         AC_TASK_CPU = 3,
86 #define AC_TASK_CPU             AC_TASK_CPU
87         AC_TASK_TIME = 4,
88 #define AC_TASK_TIME            AC_TASK_TIME
89         AC_TASK_HOSTNAME = 5,
90 #define AC_TASK_HOSTNAME        AC_TASK_HOSTNAME
91         AC_TASK_MICROSTATE = 6,
92 #define AC_TASK_MICROSTATE      AC_TASK_MICROSTATE
93         AC_TASK_ANCTASKID = 7,
94 #define AC_TASK_ANCTASKID       AC_TASK_ANCTASKID
95         AC_TASK_ZONENAME = 8
96 #define AC_TASK_ZONENAME        AC_TASK_ZONENAME
97 #define A_TASK_MAX_RES          AC_TASK_ZONENAME
98   };
99
100 enum
101   {
102         AC_FLOW_SADDR = 1,
103 #define AC_FLOW_SADDR           AC_FLOW_SADDR
104         AC_FLOW_DADDR = 2,
105 #define AC_FLOW_DADDR           AC_FLOW_DADDR
106         AC_FLOW_SPORT = 3,
107 #define AC_FLOW_SPORT           AC_FLOW_DPORT
108         AC_FLOW_DPORT =  4,
109 #define AC_FLOW_DPORT           AC_FLOW_DPORT
110         AC_FLOW_PROTOCOL = 5,
111 #define AC_FLOW_PROTOCOL        AC_FLOW_PROTOCOL
112         AC_FLOW_DSFIELD = 6,
113 #define AC_FLOW_DSFIELD         AC_FLOW_DSFIELD
114         AC_FLOW_CTIME = 7,
115 #define AC_FLOW_CTIME           AC_FLOW_CTIME
116         AC_FLOW_LSEEN = 8,
117 #define AC_FLOW_LSEEN           AC_FLOW_LSEEN
118         AC_FLOW_NBYTES = 9,
119 #define AC_FLOW_NBYTES          AC_FLOW_NBYTES
120         AC_FLOW_NPKTS = 10,
121 #define AC_FLOW_NPKTS           AC_FLOW_NPKTS
122         AC_FLOW_PROJID = 11,
123 #define AC_FLOW_PROJID          AC_FLOW_PROJID
124         AC_FLOW_UID = 12,
125 #define AC_FLOW_UID             AC_FLOW_UID
126         AC_FLOW_ANAME = 13
127 #define AC_FLOW_ANAME           AC_FLOW_ANAME
128 #define AC_FLOW_MAX_RES         AC_FLOW_ANAME
129   };
130
131 #define AC_MAX_RES_TMP  MAX (AC_PROC_MAX_RES, AC_TASK_MAX_RES)
132 #define AC_MAX_RES      MAX (AC_MAX_RES_TMP, AC_FLOW_MAX_RES)
133 #define AC_MASK_SZ      BT_BITOUL (AC_MAX_RES + 1)
134
135 enum
136   {
137         AC_OFF = 0,
138 #define AC_OFF          AC_OFF
139         AC_ON = 1
140 #define AC_ON           AC_ON
141   };
142
143 typedef struct ac_res
144   {
145         int ar_id;
146         int ar_state;
147   } ac_res_t;
148
149 __BEGIN_DECLS
150
151 extern int acctctl (int, void *, size_t);
152
153 __END_DECLS
154
155 #endif /* _SYS_ACCTCTL_H */