Add headers for OpenSolaris extensions that glibc implements
[kopensolaris-gnu/glibc.git] / sysdeps / unix / sysv / solaris2 / kopensolaris-gnu / sys / exacct.h
1 /* Declarations of privilege functions 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_EXACCT_H
21 #define _SYS_EXACCT_H
22
23 #include <sys/types.h>
24 #include <sys/procset.h>
25 #include <sys/task.h>
26 #include <sys/proc.h>
27 #include <features.h>
28
29 #define EXACCT_VERSION  1
30
31 #define EUP_ALLOC       0x00
32 #define EUP_NOALLOC     0x01
33 #define EUP_ALLOC_MASK  0x02
34
35 #define EW_PARTIAL      0x01
36 #define EW_INTERVAL     0x02
37 #define EW_FINAL        0x04
38
39 enum
40   {
41         EP_RAW = 0,
42 #define EP_RAW  EP_RAW
43         EP_EXACCT_OBJECT = 1
44 #define EP_EXACCT_OBJECT        EP_EXACCT_OBJECT
45   };
46
47 enum
48   {
49         EXR_OK = 0,
50 #define EXR_OK  EXR_OK
51         EXR_SYSCALL_FAIL = 1,
52 #define EXR_SYSCALL_FAIL        EXR_SYSCALL_FAIL
53         EXR_CORRUPT_FILE = 2,
54 #define EXR_CORRUPT_FILE        EXR_CORRUPT_FILE
55         EXR_EOF = 3,
56 #define EXR_EOF EXR_EOF
57         EXR_NO_CREATOR = 4,
58 #define EXR_NO_CREATOR  EXR_NO_CREATOR
59         EXR_INVALID_BUF = 5,
60 #define EXR_INVALID_BUF EXR_INVALID_BUF
61         EXR_NOTSUPP = 6,
62 #define EXR_NOTSUPP     EXR_NOTSUPP
63         EXR_UNKN_VERSION = 7,
64 #define EXR_UNKN_VERSION        EXR_UNKN_VERSION
65         EXR_INVALID_OBJ = 8
66 #define EXR_INVALID_OBJ EXR_INVALID_OBJ
67   };
68
69 typedef enum
70   {
71         EO_ERROR = -1,
72         EO_NONE = 0,
73         EO_GROUP = 1,
74         EO_ITEM = 2
75   } ea_object_type_t;
76
77 #define EXACCT_MAX_BUFSIZE      (64 * 1024) /* 64 kb */
78
79 typedef uint64_t ea_size_t;
80 typedef uint32_t ea_catalog_t;
81
82 typedef struct ea_item
83   {
84         union
85           {
86                 uint8_t ei_u_uint8;
87                 uint16_t ei_u_uint16;
88                 uint32_t ei_u_uint32;
89                 uint64_t ei_u_uint64;
90                 double ei_u_double;
91                 char *ei_u_string;
92                 void *ei_u_object;
93                 void *ei_u_raw;
94           } ei_u;
95         ea_size_t ei_size;
96   } ea_item_t;
97 #define ei_uint8        ei_u.ei_u_uint8
98 #define ei_uint16       ei_u.ei_u_uint16
99 #define ei_uint32       ei_u.ei_u_uint32
100 #define ei_uint64       ei_u.ei_u_uint64
101 #define ei_double       ei_u.ei_u_double
102 #define ei_string       ei_u.ei_u_string
103 #define ei_object       ei_u.ei_u_object
104 #define ei_raw          ei_u.ei_u_raw
105
106 typedef struct ea_group
107   {
108         uint32_t eg_nobjs;
109         struct ea_object *eg_objs;
110   } ea_group_t;
111
112 typedef struct ea_object
113   {
114         ea_object_type_t    eo_type;
115         union
116           {
117                 ea_group_t eo_u_group;
118                 ea_item_t eo_u_item;
119           } eo_u;
120         struct ea_object *eo_next;
121         ea_catalog_t eo_catalog;
122   } ea_object_t;
123 #define eo_group        eo_u.eo_u_group
124 #define eo_item         eo_u.eo_u_item
125
126 __BEGIN_DECLS
127
128 size_t getacct (idtype_t, id_t, void *, size_t);
129 int putacct (idtype_t, id_t, void *, size_t, int);
130 int wracct (idtype_t, id_t, int);
131
132 __END_DECLS
133
134 #endif /* _SYS_EXACCT_H */