added lots of new files
[util-vserver.git] / util-vserver / kernel / limit.h
index 00b1a6d..74e02cd 100644 (file)
@@ -5,19 +5,26 @@
 
 /* context sub struct */
 
+#define NUM_RLIMITS    16
+
+#define VLIMIT_SOCK    16
+
+
 struct _vx_limit {
        atomic_t ticks;
 
-       unsigned long rlim[RLIM_NLIMITS];       /* Per context limit */
-       atomic_t res[RLIM_NLIMITS];             /* Current value */
+       unsigned long rlim[NUM_RLIMITS];        /* Per context limit */
+       atomic_t res[NUM_RLIMITS];              /* Current value */
 };
 
 static inline void vx_info_init_limit(struct _vx_limit *limit)
 {
        int lim;
 
-       for (lim=0; lim<RLIM_NLIMITS; lim++)
+       for (lim=0; lim<NUM_RLIMITS; lim++) {
                limit->rlim[lim] = RLIM_INFINITY;
+               atomic_set(&limit->res[lim], 0);
+       }
 }
 
 static inline int vx_info_proc_limit(struct _vx_limit *limit, char *buffer)
@@ -27,6 +34,7 @@ static inline int vx_info_proc_limit(struct _vx_limit *limit, char *buffer)
                "VM:\t%8d/%ld\n"
                "VML:\t%8d/%ld\n"               
                "RSS:\t%8d/%ld\n"
+               "FILES:\t%8d/%ld\n"
                ,atomic_read(&limit->res[RLIMIT_NPROC])
                ,limit->rlim[RLIMIT_NPROC]
                ,atomic_read(&limit->res[RLIMIT_AS])
@@ -35,6 +43,8 @@ static inline int vx_info_proc_limit(struct _vx_limit *limit, char *buffer)
                ,limit->rlim[RLIMIT_MEMLOCK]
                ,atomic_read(&limit->res[RLIMIT_RSS])
                ,limit->rlim[RLIMIT_RSS]
+               ,atomic_read(&limit->res[RLIMIT_NOFILE])
+               ,limit->rlim[RLIMIT_NOFILE]
                );
 }
 
@@ -68,15 +78,19 @@ struct  vcmd_ctx_rlimit_mask_v0 {
 #define CRLIM_KEEP             (~1ULL)
 
 #ifdef __KERNEL__
-extern int vc_get_rlimit(uint32_t, void *);
-extern int vc_set_rlimit(uint32_t, void *);
-extern int vc_get_rlimit_mask(uint32_t, void *);
+
+#include <linux/compiler.h>
+
+extern int vc_get_rlimit(uint32_t, void __user *);
+extern int vc_set_rlimit(uint32_t, void __user *);
+extern int vc_get_rlimit_mask(uint32_t, void __user *);
 
 struct sysinfo;
 
 void vx_vsi_meminfo(struct sysinfo *);
 void vx_vsi_swapinfo(struct sysinfo *);
 
+
 #endif /* __KERNEL__ */
 
 #endif /* _VX_LIMIT_H */