This commit was manufactured by cvs2svn to create branch 'vserver'.
[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                 "FILES" VX_LIMIT_FMT
36                 "SOCK"  VX_LIMIT_FMT
37                 VX_LIMIT_ARG(RLIMIT_NPROC)
38                 VX_LIMIT_ARG(RLIMIT_AS)
39                 VX_LIMIT_ARG(RLIMIT_MEMLOCK)
40                 VX_LIMIT_ARG(RLIMIT_RSS)
41                 VX_LIMIT_ARG(RLIMIT_NOFILE)
42                 VX_LIMIT_ARG(VLIMIT_NSOCK)
43                 );
44 }
45
46 #endif  /* _VX_LIMIT_PROC_H */
47
48