]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
process: Allow virProcessPrLimit() to get current limit
authorAndrea Bolognani <abologna@redhat.com>
Fri, 20 Nov 2015 16:21:11 +0000 (17:21 +0100)
committerAndrea Bolognani <abologna@redhat.com>
Thu, 17 Dec 2015 09:12:47 +0000 (10:12 +0100)
The prlimit() function allows both getting and setting limits for
a process; expose the same functionality in our wrapper.

Add the const modifier for new_limit, in accordance with the
prototype for prlimit().

src/util/virprocess.c

index 4b18903a04104b06177affa08c15ebf9313472b6..9b388342d8205d6b370bd020aa76001302216d41 100644 (file)
@@ -725,15 +725,19 @@ int virProcessSetNamespaces(size_t nfdlist,
 
 #if HAVE_PRLIMIT
 static int
-virProcessPrLimit(pid_t pid, int resource, struct rlimit *rlim)
+virProcessPrLimit(pid_t pid,
+                  int resource,
+                  const struct rlimit *new_limit,
+                  struct rlimit *old_limit)
 {
-    return prlimit(pid, resource, rlim, NULL);
+    return prlimit(pid, resource, new_limit, old_limit);
 }
 #elif HAVE_SETRLIMIT
 static int
 virProcessPrLimit(pid_t pid ATTRIBUTE_UNUSED,
                   int resource ATTRIBUTE_UNUSED,
-                  struct rlimit *rlim ATTRIBUTE_UNUSED)
+                  const struct rlimit *new_limit ATTRIBUTE_UNUSED,
+                  struct rlimit *old_limit ATTRIBUTE_UNUSED)
 {
     errno = ENOSYS;
     return -1;
@@ -758,7 +762,7 @@ virProcessSetMaxMemLock(pid_t pid, unsigned long long bytes)
             return -1;
         }
     } else {
-        if (virProcessPrLimit(pid, RLIMIT_MEMLOCK, &rlim) < 0) {
+        if (virProcessPrLimit(pid, RLIMIT_MEMLOCK, &rlim, NULL) < 0) {
             virReportSystemError(errno,
                                  _("cannot limit locked memory "
                                    "of process %lld to %llu"),
@@ -803,7 +807,7 @@ virProcessSetMaxProcesses(pid_t pid, unsigned int procs)
             return -1;
         }
     } else {
-        if (virProcessPrLimit(pid, RLIMIT_NPROC, &rlim) < 0) {
+        if (virProcessPrLimit(pid, RLIMIT_NPROC, &rlim, NULL) < 0) {
             virReportSystemError(errno,
                                  _("cannot limit number of subprocesses "
                                    "of process %lld to %u"),
@@ -851,7 +855,7 @@ virProcessSetMaxFiles(pid_t pid, unsigned int files)
             return -1;
         }
     } else {
-        if (virProcessPrLimit(pid, RLIMIT_NOFILE, &rlim) < 0) {
+        if (virProcessPrLimit(pid, RLIMIT_NOFILE, &rlim, NULL) < 0) {
             virReportSystemError(errno,
                                  _("cannot limit number of open files "
                                    "of process %lld to %u"),