Add the VLIMITs.
authorDaniel Hokka Zakrisson <daniel@hozac.com>
Mon, 13 Nov 2006 21:53:45 +0000 (21:53 +0000)
committerDaniel Hokka Zakrisson <daniel@hozac.com>
Mon, 13 Nov 2006 21:53:45 +0000 (21:53 +0000)
Add RLIMIT_MSGQUEUE, define it ourselves if not present (like on 2.4).

git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@2377 94cd875c-1c1d-0410-91d2-eb244daf1a30

doc/configuration.xml
lib/vserver.h
src/vlimit.c

index d9f7c55..98b04ec 100644 (file)
@@ -1226,7 +1226,8 @@ line. The special keyword 'inf' is recognized.
     <collection name="rlimits">
       <description>
 A directory with resource limits. Possible resources are cpu, fsize,
-data, stack, core, rss, nproc, nofile, memlock, as and locks. This
+data, stack, core, rss, nproc, nofile, memlock, as, locks, msgqueue,
+nsock, openfd, anon, shmem, semary, nsems and dentry. This
 configuration will be honored for kernel 2.6 only.
       </description>
       <scalar name="resource" type="symbolic">
index 105c0df..bc5eb2a 100644 (file)
 #define VC_NXF_PERSISTENT              (1ULL<<38)
 
 
+// the vserver specific limits
+#define VC_VLIMIT_NSOCK                        16
+#define VC_VLIMIT_OPENFD               17
+#define VC_VLIMIT_ANON                 18
+#define VC_VLIMIT_SHMEM                        19
+#define VC_VLIMIT_SEMARY               20
+#define VC_VLIMIT_NSEMS                        21
+#define VC_VLIMIT_DENTRY               22
+
+
 
 #define VC_BAD_PERSONALITY             ((uint_least32_t)(-1))
 
index 27c0a77..71b3aa7 100644 (file)
 
 int            wrapper_exit_code = 255;
 
+#ifndef RLIMIT_MSGQUEUE
+#  define RLIMIT_MSGQUEUE      12
+#endif
+
 #define NUMLIM(X) \
 { #X, required_argument, 0, 2048|X }
 #define OPT_RESLIM(RES,V) \
   { #RES, required_argument, 0, 2048|RLIMIT_##V }
+#define OPT_VLIMIT(RES,V) \
+  { #RES, required_argument, 0, 2048|VC_VLIMIT_##V }
 
 static struct option const
 CMDLINE_OPTIONS[] = {
@@ -80,25 +86,36 @@ CMDLINE_OPTIONS[] = {
   NUMLIM(20), NUMLIM(21), NUMLIM(22), NUMLIM(23),
   NUMLIM(24), NUMLIM(25), NUMLIM(26), NUMLIM(27),
   NUMLIM(28), NUMLIM(29), NUMLIM(30), NUMLIM(31),
-  OPT_RESLIM(cpu,     CPU),
-  OPT_RESLIM(fsize,   FSIZE),
-  OPT_RESLIM(data,    DATA),
-  OPT_RESLIM(stack,   STACK),
-  OPT_RESLIM(core,    CORE),
-  OPT_RESLIM(rss,     RSS),
-  OPT_RESLIM(nproc,   NPROC),
-  OPT_RESLIM(nofile,  NOFILE),
-  OPT_RESLIM(memlock, MEMLOCK),
-  OPT_RESLIM(as,      AS),
-  OPT_RESLIM(locks,   LOCKS),
+  OPT_RESLIM(cpu,      CPU),
+  OPT_RESLIM(fsize,    FSIZE),
+  OPT_RESLIM(data,     DATA),
+  OPT_RESLIM(stack,    STACK),
+  OPT_RESLIM(core,     CORE),
+  OPT_RESLIM(rss,      RSS),
+  OPT_RESLIM(nproc,    NPROC),
+  OPT_RESLIM(nofile,   NOFILE),
+  OPT_RESLIM(memlock,  MEMLOCK),
+  OPT_RESLIM(as,       AS),
+  OPT_RESLIM(locks,    LOCKS),
+  OPT_RESLIM(msgqueue, MSGQUEUE),
+  OPT_VLIMIT(nsock,    NSOCK),
+  OPT_VLIMIT(openfd,   OPENFD),
+  OPT_VLIMIT(anon,     ANON),
+  OPT_VLIMIT(shmem,    SHMEM),
+  OPT_VLIMIT(semary,   SEMARY),
+  OPT_VLIMIT(nsems,    NSEMS),
+  OPT_VLIMIT(dentry,   DENTRY),
   { 0,0,0,0 }
 };
 
 #define REV_RESLIM(X)  [RLIMIT_##X] = #X
+#define REV_VLIMIT(X)  [VC_VLIMIT_##X] = #X
 static char const * const LIMIT_STR[] = {
-  REV_RESLIM(CPU),     REV_RESLIM(FSIZE), REV_RESLIM(DATA),  REV_RESLIM(STACK),
-  REV_RESLIM(CORE),    REV_RESLIM(RSS),   REV_RESLIM(NPROC), REV_RESLIM(NOFILE),
-  REV_RESLIM(MEMLOCK), REV_RESLIM(AS),    REV_RESLIM(LOCKS)
+  REV_RESLIM(CPU),     REV_RESLIM(FSIZE),  REV_RESLIM(DATA),  REV_RESLIM(STACK),
+  REV_RESLIM(CORE),    REV_RESLIM(RSS),    REV_RESLIM(NPROC), REV_RESLIM(NOFILE),
+  REV_RESLIM(MEMLOCK), REV_RESLIM(AS),     REV_RESLIM(LOCKS), REV_RESLIM(MSGQUEUE),
+  REV_VLIMIT(NSOCK),   REV_VLIMIT(OPENFD), REV_VLIMIT(ANON),  REV_VLIMIT(SHMEM),
+  REV_VLIMIT(SEMARY),  REV_VLIMIT(NSEMS),  REV_VLIMIT(DENTRY),
 };
 
 static void
@@ -130,7 +147,8 @@ showHelp(int fd, char const *cmd, int res)
            "    --<resource>|<nr> <value>\n"
            "                ...  set specified (MSH) limit for <resource> to <value>\n\n"
            "Valid values for resource are cpu, fsize, data, stack, core, rss, nproc,\n"
-           "nofile, memlock, as and locks.\n\n"
+           "nofile, memlock, as, locks, msgqueue, nsock, openfd, anon, shmem, semary,\n"
+           "nsems, and dentry.\n\n"
            "Please report bugs to " PACKAGE_BUGREPORT "\n");
   exit(res);
 }
@@ -198,7 +216,7 @@ showAll(int ctx)
     if (((mask.min|mask.soft|mask.hard) & bitmask)==0) continue;
     if (vc_get_rlimit(ctx, i, &limit)==-1) {
       perror("vc_get_rlimit()");
-      //continue;
+      continue;
     }
 
     memset(buf, ' ', sizeof buf);