fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / include / linux / vserver / limit.h
1 #ifndef _VX_LIMIT_H
2 #define _VX_LIMIT_H
3
4
5 #define VLIMIT_NSOCK    16
6 #define VLIMIT_OPENFD   17
7 #define VLIMIT_ANON     18
8 #define VLIMIT_SHMEM    19
9 #define VLIMIT_SEMARY   20
10 #define VLIMIT_NSEMS    21
11 #define VLIMIT_DENTRY   22
12 #define VLIMIT_MAPPED   23
13
14
15 #ifdef  __KERNEL__
16
17 #define VLIM_NOCHECK    ((1L << VLIMIT_DENTRY) | (1L << RLIMIT_RSS))
18
19 /*      keep in sync with CRLIM_INFINITY */
20
21 #define VLIM_INFINITY   (~0ULL)
22
23 #ifndef RLIM_INFINITY
24 #warning RLIM_INFINITY is undefined
25 #endif
26
27 #define __rlim_val(l,r,v)       ((l)->res[(r)].v)
28
29 #define __rlim_soft(l,r)        __rlim_val(l,r,soft)
30 #define __rlim_hard(l,r)        __rlim_val(l,r,hard)
31
32 #define __rlim_rcur(l,r)        __rlim_val(l,r,rcur)
33 #define __rlim_rmin(l,r)        __rlim_val(l,r,rmin)
34 #define __rlim_rmax(l,r)        __rlim_val(l,r,rmax)
35
36 #define __rlim_lhit(l,r)        __rlim_val(l,r,lhit)
37 #define __rlim_hit(l,r)         atomic_inc(&__rlim_lhit(l,r))
38
39 typedef atomic_long_t rlim_atomic_t;
40 typedef unsigned long rlim_t;
41
42 #define __rlim_get(l,r)         atomic_long_read(&__rlim_rcur(l,r))
43 #define __rlim_set(l,r,v)       atomic_long_set(&__rlim_rcur(l,r), v)
44 #define __rlim_inc(l,r)         atomic_long_inc(&__rlim_rcur(l,r))
45 #define __rlim_dec(l,r)         atomic_long_dec(&__rlim_rcur(l,r))
46 #define __rlim_add(l,r,v)       atomic_long_add(v, &__rlim_rcur(l,r))
47 #define __rlim_sub(l,r,v)       atomic_long_sub(v, &__rlim_rcur(l,r))
48
49
50 #if     (RLIM_INFINITY == VLIM_INFINITY)
51 #define VX_VLIM(r) ((long long)(long)(r))
52 #define VX_RLIM(v) ((rlim_t)(v))
53 #else
54 #define VX_VLIM(r) (((r) == RLIM_INFINITY) \
55                 ? VLIM_INFINITY : (long long)(r))
56 #define VX_RLIM(v) (((v) == VLIM_INFINITY) \
57                 ? RLIM_INFINITY : (rlim_t)(v))
58 #endif
59
60 struct sysinfo;
61
62 void vx_vsi_meminfo(struct sysinfo *);
63 void vx_vsi_swapinfo(struct sysinfo *);
64
65 #define NUM_LIMITS      24
66
67 #endif  /* __KERNEL__ */
68 #endif  /* _VX_LIMIT_H */