vserver 1.9.5.x5
[linux-2.6.git] / kernel / vserver / limit_proc.h
1 #ifndef _VX_LIMIT_PROC_H
2 #define _VX_LIMIT_PROC_H
3
4
5 static inline void vx_limit_fixup(struct _vx_limit *limit)
6 {
7         unsigned long value;
8         unsigned int lim;
9
10         for (lim=0; lim<NUM_LIMITS; lim++) {
11                 value = atomic_read(&limit->rcur[lim]);
12                 if (value > limit->rmax[lim])
13                         limit->rmax[lim] = value;
14                 if (limit->rmax[lim] > limit->rlim[lim])
15                         limit->rmax[lim] = limit->rlim[lim];
16         }
17 }
18
19 #define VX_LIMIT_FMT    ":\t%10d\t%10ld\t%10ld\t%6d\n"
20
21 #define VX_LIMIT_ARG(r)                         \
22                 ,atomic_read(&limit->rcur[r])   \
23                 ,limit->rmax[r]                 \
24                 ,limit->rlim[r]                 \
25                 ,atomic_read(&limit->lhit[r])
26
27 static inline int vx_info_proc_limit(struct _vx_limit *limit, char *buffer)
28 {
29         vx_limit_fixup(limit);
30         return sprintf(buffer,
31                 "PROC"  VX_LIMIT_FMT
32                 "VM"    VX_LIMIT_FMT
33                 "VML"   VX_LIMIT_FMT
34                 "RSS"   VX_LIMIT_FMT
35                 "ANON"  VX_LIMIT_FMT
36                 "FILES" VX_LIMIT_FMT
37                 "OFD"   VX_LIMIT_FMT
38                 "LOCKS" VX_LIMIT_FMT
39                 "SOCK"  VX_LIMIT_FMT
40                 "MSGQ"  VX_LIMIT_FMT
41                 "SHM"   VX_LIMIT_FMT
42                 VX_LIMIT_ARG(RLIMIT_NPROC)
43                 VX_LIMIT_ARG(RLIMIT_AS)
44                 VX_LIMIT_ARG(RLIMIT_MEMLOCK)
45                 VX_LIMIT_ARG(RLIMIT_RSS)
46                 VX_LIMIT_ARG(VLIMIT_ANON)
47                 VX_LIMIT_ARG(RLIMIT_NOFILE)
48                 VX_LIMIT_ARG(VLIMIT_OPENFD)
49                 VX_LIMIT_ARG(RLIMIT_LOCKS)
50                 VX_LIMIT_ARG(VLIMIT_NSOCK)
51                 VX_LIMIT_ARG(RLIMIT_MSGQUEUE)
52                 VX_LIMIT_ARG(VLIMIT_SHMEM)
53                 );
54 }
55
56 #endif  /* _VX_LIMIT_PROC_H */
57
58