[前][次][番号順一覧][スレッド一覧]

ruby-changes:17229

From: akr <ko1@a...>
Date: Sun, 12 Sep 2010 08:38:53 +0900 (JST)
Subject: [ruby-changes:17229] Ruby:r29229 (trunk): * process.c (rlimit_resource_name2int): support more limits:

akr	2010-09-12 08:38:44 +0900 (Sun, 12 Sep 2010)

  New Revision: 29229

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=29229

  Log:
    * process.c (rlimit_resource_name2int): support more limits:
      RLIMIT_MSGQUEUE, RLIMIT_NICE, RLIMIT_RTPRIO, RLIMIT_RTTIME and
      RLIMIT_SIGPENDING.
      (Init_process): ditto.
      patch by Run Paint Run Run.  [ruby-core:32262]

  Modified files:
    trunk/ChangeLog
    trunk/process.c
    trunk/test/ruby/test_process.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 29228)
+++ ChangeLog	(revision 29229)
@@ -1,3 +1,11 @@
+Sun Sep 12 08:36:15 2010  Tanaka Akira  <akr@f...>
+
+	* process.c (rlimit_resource_name2int): support more limits:
+	  RLIMIT_MSGQUEUE, RLIMIT_NICE, RLIMIT_RTPRIO, RLIMIT_RTTIME and
+	  RLIMIT_SIGPENDING.
+	  (Init_process): ditto.
+	  patch by Run Paint Run Run.  [ruby-core:32262]
+
 Sun Sep 12 04:27:13 2010  Tanaka Akira  <akr@f...>
 
 	* process.c (rlimit_resource_name2int): use STRCASECMP to avoid
Index: process.c
===================================================================
--- process.c	(revision 29228)
+++ process.c	(revision 29229)
@@ -3620,6 +3620,9 @@
 #ifdef RLIMIT_MEMLOCK
         RESCHECK(MEMLOCK);
 #endif
+#ifdef RLIMIT_MSGQUEUE
+        RESCHECK(MSGQUEUE);
+#endif
         break;
 
       case 'N':
@@ -3629,12 +3632,21 @@
 #ifdef RLIMIT_NPROC
         RESCHECK(NPROC);
 #endif
+#ifdef RLIMIT_NICE
+        RESCHECK(NICE);
+#endif
         break;
 
       case 'R':
 #ifdef RLIMIT_RSS
         RESCHECK(RSS);
 #endif
+#ifdef RLIMIT_RTPRIO
+        RESCHECK(RTPRIO);
+#endif
+#ifdef RLIMIT_RTTIME
+        RESCHECK(RTTIME);
+#endif
         break;
 
       case 'S':
@@ -3644,6 +3656,9 @@
 #ifdef RLIMIT_SBSIZE
         RESCHECK(SBSIZE);
 #endif
+#ifdef RLIMIT_SIGPENDING
+        RESCHECK(SIGPENDING);
+#endif
         break;
     }
     return -1;
@@ -3810,17 +3825,22 @@
  *  The available resources are OS dependent.
  *  Ruby may support following resources.
  *
+ *  [AS] total available memory (bytes) (SUSv3, NetBSD, FreeBSD, OpenBSD but 4.4BSD-Lite)
  *  [CORE] core size (bytes) (SUSv3)
  *  [CPU] CPU time (seconds) (SUSv3)
  *  [DATA] data segment (bytes) (SUSv3)
  *  [FSIZE] file size (bytes) (SUSv3)
+ *  [MEMLOCK] total size for mlock(2) (bytes) (4.4BSD, GNU/Linux)
+ *  [MSGQUEUE] allocation for POSIX message queues (bytes) (GNU/Linux)
+ *  [NICE] ceiling on process's nice(2) value (number) (GNU/Linux)
  *  [NOFILE] file descriptors (number) (SUSv3)
- *  [STACK] stack size (bytes) (SUSv3)
- *  [AS] total available memory (bytes) (SUSv3, NetBSD, FreeBSD, OpenBSD but 4.4BSD-Lite)
- *  [MEMLOCK] total size for mlock(2) (bytes) (4.4BSD, GNU/Linux)
  *  [NPROC] number of processes for the user (number) (4.4BSD, GNU/Linux)
  *  [RSS] resident memory size (bytes) (4.2BSD, GNU/Linux)
+ *  [RTPRIO] ceiling on the process's real-time priority (number) (GNU/Linux)
+ *  [RTTIME] CPU time for real-time process (us) (GNU/Linux)
  *  [SBSIZE] all socket buffers (bytes) (NetBSD, FreeBSD)
+ *  [SIGPENDING] number of queued signals allowed (signals) (GNU/Linux)
+ *  [STACK] stack size (bytes) (SUSv3)
  *
  *  _cur_limit_ and _max_limit_ may be
  *  <code>:INFINITY</code>, <code>"INFINITY"</code> or
@@ -3831,7 +3851,7 @@
  *  corresponding symbols and strings too.
  *  See system setrlimit(2) manual for details.
  *
- *  The following example raise the soft limit of core size to
+ *  The following example raises the soft limit of core size to
  *  the hard limit to try to make core dump possible.
  *
  *    Process.setrlimit(:CORE, Process.getrlimit(:CORE)[1])
@@ -5601,6 +5621,9 @@
 	}
 #endif
     }
+#ifdef RLIMIT_AS
+    rb_define_const(rb_mProcess, "RLIMIT_AS", INT2FIX(RLIMIT_AS));
+#endif
 #ifdef RLIMIT_CORE
     rb_define_const(rb_mProcess, "RLIMIT_CORE", INT2FIX(RLIMIT_CORE));
 #endif
@@ -5613,17 +5636,17 @@
 #ifdef RLIMIT_FSIZE
     rb_define_const(rb_mProcess, "RLIMIT_FSIZE", INT2FIX(RLIMIT_FSIZE));
 #endif
-#ifdef RLIMIT_NOFILE
-    rb_define_const(rb_mProcess, "RLIMIT_NOFILE", INT2FIX(RLIMIT_NOFILE));
+#ifdef RLIMIT_MEMLOCK
+    rb_define_const(rb_mProcess, "RLIMIT_MEMLOCK", INT2FIX(RLIMIT_MEMLOCK));
 #endif
-#ifdef RLIMIT_STACK
-    rb_define_const(rb_mProcess, "RLIMIT_STACK", INT2FIX(RLIMIT_STACK));
+#ifdef RLIMIT_MSGQUEUE
+    rb_define_const(rb_mProcess, "RLIMIT_MSGQUEUE", INT2FIX(RLIMIT_MSGQUEUE));
 #endif
-#ifdef RLIMIT_AS
-    rb_define_const(rb_mProcess, "RLIMIT_AS", INT2FIX(RLIMIT_AS));
+#ifdef RLIMIT_NICE
+    rb_define_const(rb_mProcess, "RLIMIT_NICE", INT2FIX(RLIMIT_NICE));
 #endif
-#ifdef RLIMIT_MEMLOCK
-    rb_define_const(rb_mProcess, "RLIMIT_MEMLOCK", INT2FIX(RLIMIT_MEMLOCK));
+#ifdef RLIMIT_NOFILE
+    rb_define_const(rb_mProcess, "RLIMIT_NOFILE", INT2FIX(RLIMIT_NOFILE));
 #endif
 #ifdef RLIMIT_NPROC
     rb_define_const(rb_mProcess, "RLIMIT_NPROC", INT2FIX(RLIMIT_NPROC));
@@ -5631,10 +5654,22 @@
 #ifdef RLIMIT_RSS
     rb_define_const(rb_mProcess, "RLIMIT_RSS", INT2FIX(RLIMIT_RSS));
 #endif
+#ifdef RLIMIT_RTPRIO
+    rb_define_const(rb_mProcess, "RLIMIT_RTPRIO", INT2FIX(RLIMIT_RTPRIO));
+#endif
+#ifdef RLIMIT_RTTIME
+    rb_define_const(rb_mProcess, "RLIMIT_RTTIME", INT2FIX(RLIMIT_RTTIME));
+#endif
 #ifdef RLIMIT_SBSIZE
     rb_define_const(rb_mProcess, "RLIMIT_SBSIZE", INT2FIX(RLIMIT_SBSIZE));
 #endif
+#ifdef RLIMIT_SIGPENDING
+    rb_define_const(rb_mProcess, "RLIMIT_SIGPENDING", INT2FIX(RLIMIT_SIGPENDING));
 #endif
+#ifdef RLIMIT_STACK
+    rb_define_const(rb_mProcess, "RLIMIT_STACK", INT2FIX(RLIMIT_STACK));
+#endif
+#endif
 
     rb_define_module_function(rb_mProcess, "uid", proc_getuid, 0);
     rb_define_module_function(rb_mProcess, "uid=", proc_setuid, 1);
Index: test/ruby/test_process.rb
===================================================================
--- test/ruby/test_process.rb	(revision 29228)
+++ test/ruby/test_process.rb	(revision 29229)
@@ -88,11 +88,16 @@
       :DATA, "DATA",
       :FSIZE, "FSIZE",
       :MEMLOCK, "MEMLOCK",
+      :MSGQUEUE, "MSGQUEUE",
+      :NICE, "NICE",
       :NOFILE, "NOFILE",
       :NPROC, "NPROC",
       :RSS, "RSS",
+      :RTPRIO, "RTPRIO",
+      :RTTIME, "RTTIME",
+      :SBSIZE, "SBSIZE",
+      :SIGPENDING, "SIGPENDING",
       :STACK, "STACK",
-      :SBSIZE, "SBSIZE",
     ].each {|name|
       if Process.const_defined? "RLIMIT_#{name}"
         assert_nothing_raised { Process.getrlimit(name) }

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]