X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Flinux%2Fvs_limit.h;h=ce0819404fcae058cd13f318828aa7699bf3e33c;hb=9bf4aaab3e101692164d49b7ca357651eb691cb6;hp=82e8de4ec996398764b1b4829919816e537bda17;hpb=db216c3d5e4c040e557a50f8f5d35d5c415e8c1c;p=linux-2.6.git diff --git a/include/linux/vs_limit.h b/include/linux/vs_limit.h index 82e8de4ec..ce0819404 100644 --- a/include/linux/vs_limit.h +++ b/include/linux/vs_limit.h @@ -1,42 +1,29 @@ #ifndef _VX_VS_LIMIT_H #define _VX_VS_LIMIT_H - -// #define VX_DEBUG - #include #include #include #include "vserver/context.h" #include "vserver/limit.h" +#include "vserver/debug.h" /* file limits */ -#define VX_DEBUG_ACC_FILE 0 -#define VX_DEBUG_ACC_OPENFD 0 - -#if (VX_DEBUG_ACC_FILE) || (VX_DEBUG_ACC_OPENFD) -#define vxdprintk(x...) printk("vxd: " x) -#else -#define vxdprintk(x...) -#endif - - -#define vx_acc_cres(v,d,r) \ - __vx_acc_cres((v), (r), (d), __FILE__, __LINE__) static inline void __vx_acc_cres(struct vx_info *vxi, - int res, int dir, char *file, int line) + int res, int dir, void *_data, char *_file, int _line) { + if (VXD_RLIMIT(res, RLIMIT_NOFILE) || + VXD_RLIMIT(res, RLIMIT_NPROC) || + VXD_RLIMIT(res, VLIMIT_NSOCK)) + vxlprintk(1, "vx_acc_cres[%5d,%s,%2d]: %5d%s (%p)", + (vxi?vxi->vx_id:-1), vlimit_name[res], res, + (vxi?atomic_read(&vxi->limit.rcur[res]):0), + (dir>0)?"++":"--", _data, _file, _line); if (vxi) { - if ((res == RLIMIT_NOFILE && VX_DEBUG_ACC_FILE) || - (res == RLIMIT_OPENFD && VX_DEBUG_ACC_OPENFD)) - printk("vx_acc_cres[%5d,%2d]: %5d%s in %s:%d\n", - (vxi?vxi->vx_id:-1), res, - (vxi?atomic_read(&vxi->limit.rcur[res]):0), - (dir>0)?"++":"--", file, line); if (dir > 0) atomic_inc(&vxi->limit.rcur[res]); else @@ -44,14 +31,18 @@ static inline void __vx_acc_cres(struct vx_info *vxi, } } -#define vx_nproc_inc(p) vx_acc_cres(current->vx_info, 1, RLIMIT_NPROC) -#define vx_nproc_dec(p) vx_acc_cres(current->vx_info,-1, RLIMIT_NPROC) +#define vx_acc_cres(v,d,p,r) \ + __vx_acc_cres((v), (r), (d), (p), __FILE__, __LINE__) -#define vx_files_inc(f) vx_acc_cres(current->vx_info, 1, RLIMIT_NOFILE) -#define vx_files_dec(f) vx_acc_cres(current->vx_info,-1, RLIMIT_NOFILE) +#define vx_nproc_inc(p) \ + vx_acc_cres(current->vx_info, 1, (p), RLIMIT_NPROC) +#define vx_nproc_dec(p) \ + vx_acc_cres(current->vx_info,-1, (p), RLIMIT_NPROC) -#define vx_openfd_inc(f) vx_acc_cres(current->vx_info, 1, RLIMIT_OPENFD) -#define vx_openfd_dec(f) vx_acc_cres(current->vx_info,-1, RLIMIT_OPENFD) +#define vx_files_inc(f) \ + vx_acc_cres(current->vx_info, 1, (f), RLIMIT_NOFILE) +#define vx_files_dec(f) \ + vx_acc_cres(current->vx_info,-1, (f), RLIMIT_NOFILE) /* #define vx_openfd_inc(f) do { \ @@ -71,17 +62,18 @@ static inline void __vx_acc_cres(struct vx_info *vxi, __vx_cres_avail((v), (r), (n), __FILE__, __LINE__) static inline int __vx_cres_avail(struct vx_info *vxi, - int res, int num, char *file, int line) + int res, int num, char *_file, int _line) { unsigned long value; - if ((res == RLIMIT_NOFILE && VX_DEBUG_ACC_FILE) || - (res == RLIMIT_OPENFD && VX_DEBUG_ACC_OPENFD)) - printk("vx_cres_avail[%5d,%2d]: %5ld > %5d + %5d in %s:%d\n", - (vxi?vxi->vx_id:-1), res, + if (VXD_RLIMIT(res, RLIMIT_NOFILE) || + VXD_RLIMIT(res, RLIMIT_NPROC) || + VXD_RLIMIT(res, VLIMIT_NSOCK)) + vxlprintk(1, "vx_cres_avail[%5d,%s,%2d]: %5ld > %5d + %5d", + (vxi?vxi->vx_id:-1), vlimit_name[res], res, (vxi?vxi->limit.rlim[res]:1), (vxi?atomic_read(&vxi->limit.rcur[res]):0), - num, file, line); + num, _file, _line); if (!vxi) return 1; value = atomic_read(&vxi->limit.rcur[res]); @@ -101,18 +93,16 @@ static inline int __vx_cres_avail(struct vx_info *vxi, #define vx_files_avail(n) \ vx_cres_avail(current->vx_info, (n), RLIMIT_NOFILE) -#define vx_openfd_avail(n) \ - vx_cres_avail(current->vx_info, (n), RLIMIT_OPENFD) - /* socket limits */ -#define vx_sock_inc(f) vx_acc_cres(current->vx_info, 1, VLIMIT_SOCK) -#define vx_sock_dec(f) vx_acc_cres(current->vx_info,-1, VLIMIT_SOCK) +#define vx_sock_inc(s) \ + vx_acc_cres((s)->sk_vx_info, 1, (s), VLIMIT_NSOCK) +#define vx_sock_dec(s) \ + vx_acc_cres((s)->sk_vx_info,-1, (s), VLIMIT_NSOCK) #define vx_sock_avail(n) \ - vx_cres_avail(current->vx_info, (n), VLIMIT_SOCK) - + vx_cres_avail(current->vx_info, (n), VLIMIT_NSOCK) #else #warning duplicate inclusion