Add headers for OpenSolaris extensions that glibc implements
[kopensolaris-gnu/glibc.git] / sysdeps / unix / sysv / solaris2 / kopensolaris-gnu / sys / rctl.h
1 /* Declarations of rctl 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_RCTL_H
21 #define _SYS_RCTL_H
22
23 #include <features.h>
24
25 #define RCTL_LOCAL_NOACTION     0x00000000
26 #define RCTL_LOCAL_SIGNAL       0x00000001
27 #define RCTL_LOCAL_DENY         0x00000002
28 #define RCTL_LOCAL_MAXIMAL      0x80000000
29 #define RCTL_LOCAL_PROJDB       0x40000000
30 #define RCTL_LOCAL_ACTION_MASK  0xFFFF0000
31 #define RCTL_LOCAL_MASK         0xC0000003
32
33 #define RCTL_GLOBAL_NOACTION            0x00000000
34 #define RCTL_GLOBAL_SYSLOG              0x00000001
35 #define RCTL_GLOBAL_NOBASIC             0x80000000
36 #define RCTL_GLOBAL_LOWERABLE           0x40000000
37 #define RCTL_GLOBAL_DENY_ALWAYS         0x20000000
38 #define RCTL_GLOBAL_DENY_NEVER          0x10000000
39 #define RCTL_GLOBAL_FILE_SIZE           0x08000000
40 #define RCTL_GLOBAL_CPU_TIME            0x04000000
41 #define RCTL_GLOBAL_SIGNAL_NEVER        0x02000000
42 #define RCTL_GLOBAL_NOLOCALACTION       RCTL_GLOBAL_SIGNAL_NEVER
43 #define RCTL_GLOBAL_INFINITE            0x01000000
44 #define RCTL_GLOBAL_UNOBSERVABLE        0x00800000
45 #define RCTL_GLOBAL_SYSLOG_NEVER        0x00080000
46 #define RCTL_GLOBAL_BYTES               0x00400000
47 #define RCTL_GLOBAL_SECONDS             0x00200000
48 #define RCTL_GLOBAL_COUNT               0x00100000
49 #define RCTL_GLOBAL_ACTION_MASK         0xFFFF0000
50 #define RCTL_GLOBAL_MASK                0xFFF80001
51
52 #define RCTL_FIRST      0x00000000
53 #define RCTL_NEXT       0x00000001
54 #define RCTL_USAGE      0x00000002
55
56 #define RCTL_INSERT     0x00000000
57 #define RCTL_DELETE     0x00000001
58 #define RCTL_REPLACE    0x00000002
59
60 #define RCTL_USE_RECIPIENT_PID  0x10000000
61
62 #define RCTLSYS_ACTION_MASK     0xFFFF0000
63 #define RCTLSYS_MASK            0x10000003
64
65 #define RCPRIV_BASIC            0x01000000
66 #define RCPRIV_PRIVILEGED       0x04000000
67 #define RCPRIV_SYSTEM           0x07000000
68
69 typedef enum
70   {
71     RCENTITY_PROCESS,
72     RCENTITY_TASK,
73     RCENTITY_PROJECT,
74     RCENTITY_ZONE
75   } rctl_entity_t;
76 #define RC_MAX_ENTITY   RCENTITY_ZONE
77
78 typedef unsigned long long rctl_qty_t;
79 typedef int rctl_priv_t;
80 typedef struct rctlblk rctlblk_t;
81 typedef struct rctl_set rctl_set_t;
82
83 __BEGIN_DECLS
84
85 int setrctl (const char *controlname, rctlblk_t *old_blk, rctlblk_t *new_blk,
86     unsigned int flags);
87
88 int getrctl (const char *controlname, rctlblk_t *old_blk, rctlblk_t *new_blk,
89     unsigned int flags);
90
91 __END_DECLS
92
93 #endif /* _SYS_RCTL_H */