Merge git://git.infradead.org/mtd-2.6
[linux-2.6] / include / asm-generic / resource.h
1 #ifndef _ASM_GENERIC_RESOURCE_H
2 #define _ASM_GENERIC_RESOURCE_H
3
4 /*
5  * Resource limit IDs
6  *
7  * ( Compatibility detail: there are architectures that have
8  *   a different rlimit ID order in the 5-9 range and want
9  *   to keep that order for binary compatibility. The reasons
10  *   are historic and all new rlimits are identical across all
11  *   arches. If an arch has such special order for some rlimits
12  *   then it defines them prior including asm-generic/resource.h. )
13  */
14
15 #define RLIMIT_CPU              0       /* CPU time in sec */
16 #define RLIMIT_FSIZE            1       /* Maximum filesize */
17 #define RLIMIT_DATA             2       /* max data size */
18 #define RLIMIT_STACK            3       /* max stack size */
19 #define RLIMIT_CORE             4       /* max core file size */
20
21 #ifndef RLIMIT_RSS
22 # define RLIMIT_RSS             5       /* max resident set size */
23 #endif
24
25 #ifndef RLIMIT_NPROC
26 # define RLIMIT_NPROC           6       /* max number of processes */
27 #endif
28
29 #ifndef RLIMIT_NOFILE
30 # define RLIMIT_NOFILE          7       /* max number of open files */
31 #endif
32
33 #ifndef RLIMIT_MEMLOCK
34 # define RLIMIT_MEMLOCK         8       /* max locked-in-memory address space */
35 #endif
36
37 #ifndef RLIMIT_AS
38 # define RLIMIT_AS              9       /* address space limit */
39 #endif
40
41 #define RLIMIT_LOCKS            10      /* maximum file locks held */
42 #define RLIMIT_SIGPENDING       11      /* max number of pending signals */
43 #define RLIMIT_MSGQUEUE         12      /* maximum bytes in POSIX mqueues */
44 #define RLIMIT_NICE             13      /* max nice prio allowed to raise to
45                                            0-39 for nice level 19 .. -20 */
46 #define RLIMIT_RTPRIO           14      /* maximum realtime priority */
47 #define RLIMIT_RTTIME           15      /* timeout for RT tasks in us */
48 #define RLIM_NLIMITS            16
49
50 /*
51  * SuS says limits have to be unsigned.
52  * Which makes a ton more sense anyway.
53  *
54  * Some architectures override this (for compatibility reasons):
55  */
56 #ifndef RLIM_INFINITY
57 # define RLIM_INFINITY          (~0UL)
58 #endif
59
60 /*
61  * RLIMIT_STACK default maximum - some architectures override it:
62  */
63 #ifndef _STK_LIM_MAX
64 # define _STK_LIM_MAX           RLIM_INFINITY
65 #endif
66
67 #ifdef __KERNEL__
68
69 /*
70  * boot-time rlimit defaults for the init task:
71  */
72 #define INIT_RLIMITS                                                    \
73 {                                                                       \
74         [RLIMIT_CPU]            = {  RLIM_INFINITY,  RLIM_INFINITY },   \
75         [RLIMIT_FSIZE]          = {  RLIM_INFINITY,  RLIM_INFINITY },   \
76         [RLIMIT_DATA]           = {  RLIM_INFINITY,  RLIM_INFINITY },   \
77         [RLIMIT_STACK]          = {       _STK_LIM,   _STK_LIM_MAX },   \
78         [RLIMIT_CORE]           = {              0,  RLIM_INFINITY },   \
79         [RLIMIT_RSS]            = {  RLIM_INFINITY,  RLIM_INFINITY },   \
80         [RLIMIT_NPROC]          = {              0,              0 },   \
81         [RLIMIT_NOFILE]         = {       INR_OPEN,       INR_OPEN },   \
82         [RLIMIT_MEMLOCK]        = {    MLOCK_LIMIT,    MLOCK_LIMIT },   \
83         [RLIMIT_AS]             = {  RLIM_INFINITY,  RLIM_INFINITY },   \
84         [RLIMIT_LOCKS]          = {  RLIM_INFINITY,  RLIM_INFINITY },   \
85         [RLIMIT_SIGPENDING]     = {             0,             0 },     \
86         [RLIMIT_MSGQUEUE]       = {   MQ_BYTES_MAX,   MQ_BYTES_MAX },   \
87         [RLIMIT_NICE]           = { 0, 0 },                             \
88         [RLIMIT_RTPRIO]         = { 0, 0 },                             \
89         [RLIMIT_RTTIME]         = {  RLIM_INFINITY,  RLIM_INFINITY },   \
90 }
91
92 #endif  /* __KERNEL__ */
93
94 #endif