X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Flinux%2Fvserver%2Flimit.h;h=ef9c9fc2d75f159d2b881d64f4d355d8c4504051;hb=9bf4aaab3e101692164d49b7ca357651eb691cb6;hp=a7a50f972c4cba9da40bfca4f174fcb1c75f8647;hpb=db216c3d5e4c040e557a50f8f5d35d5c415e8c1c;p=linux-2.6.git diff --git a/include/linux/vserver/limit.h b/include/linux/vserver/limit.h index a7a50f972..ef9c9fc2d 100644 --- a/include/linux/vserver/limit.h +++ b/include/linux/vserver/limit.h @@ -1,3 +1,5 @@ +/* _VX_LIMIT_H defined below */ + #if defined(__KERNEL__) && defined(_VX_INFO_DEF_) #include @@ -5,27 +7,26 @@ /* context sub struct */ -#define RLIMIT_OPENFD 12 - -#define NUM_RLIMITS 16 +#define NUM_LIMITS 20 -#define VLIMIT_SOCK 16 +#define VLIMIT_NSOCK 16 +extern const char *vlimit_name[NUM_LIMITS]; struct _vx_limit { atomic_t ticks; - unsigned long rlim[NUM_RLIMITS]; /* Context limit */ - unsigned long rmax[NUM_RLIMITS]; /* Context maximum */ - atomic_t rcur[NUM_RLIMITS]; /* Current value */ - atomic_t lhit[NUM_RLIMITS]; /* Limit hits */ + unsigned long rlim[NUM_LIMITS]; /* Context limit */ + unsigned long rmax[NUM_LIMITS]; /* Context maximum */ + atomic_t rcur[NUM_LIMITS]; /* Current value */ + atomic_t lhit[NUM_LIMITS]; /* Limit hits */ }; static inline void vx_info_init_limit(struct _vx_limit *limit) { int lim; - for (lim=0; limrlim[lim] = RLIM_INFINITY; limit->rmax[lim] = 0; atomic_set(&limit->rcur[lim], 0); @@ -33,21 +34,19 @@ static inline void vx_info_init_limit(struct _vx_limit *limit) } } -extern unsigned int vx_debug_limit; - static inline void vx_info_exit_limit(struct _vx_limit *limit) { +#ifdef CONFIG_VSERVER_DEBUG unsigned long value; unsigned int lim; - if (!vx_debug_limit) - return; - for (lim=0; limrcur[lim]); if (value) - printk("!!! limit: %p[%d] = %ld on exit.\n", - limit, lim, value); + printk("!!! limit: %p[%s,%d] = %ld on exit.\n", + limit, vlimit_name[lim], lim, value); } +#endif } static inline void vx_limit_fixup(struct _vx_limit *limit) @@ -55,7 +54,7 @@ static inline void vx_limit_fixup(struct _vx_limit *limit) unsigned long value; unsigned int lim; - for (lim=0; limrcur[lim]); if (value > limit->rmax[lim]) limit->rmax[lim] = value; @@ -81,13 +80,13 @@ static inline int vx_info_proc_limit(struct _vx_limit *limit, char *buffer) "VML" VX_LIMIT_FMT "RSS" VX_LIMIT_FMT "FILES" VX_LIMIT_FMT - "OFD" VX_LIMIT_FMT + "SOCK" VX_LIMIT_FMT VX_LIMIT_ARG(RLIMIT_NPROC) VX_LIMIT_ARG(RLIMIT_AS) VX_LIMIT_ARG(RLIMIT_MEMLOCK) VX_LIMIT_ARG(RLIMIT_RSS) VX_LIMIT_ARG(RLIMIT_NOFILE) - VX_LIMIT_ARG(RLIMIT_OPENFD) + VX_LIMIT_ARG(VLIMIT_NSOCK) ); } @@ -97,6 +96,8 @@ static inline int vx_info_proc_limit(struct _vx_limit *limit, char *buffer) #include "switch.h" +#define VXD_RLIMIT(r,l) (VXD_CBIT(limit, (l)) && ((r) == (l))) + /* rlimit vserver commands */ #define VCMD_get_rlimit VC_CMD(RLIMIT, 1, 0) @@ -138,3 +139,5 @@ void vx_vsi_swapinfo(struct sysinfo *); #endif /* _VX_LIMIT_H */ #endif + +