[libvirt] [PATCH 1/6] process: Allow virProcessPrLimit() to get current limit

Andrea Bolognani abologna at redhat.com
Tue Nov 24 13:56:33 UTC 2015


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 | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/src/util/virprocess.c b/src/util/virprocess.c
index 4b18903..9b38834 100644
--- a/src/util/virprocess.c
+++ b/src/util/virprocess.c
@@ -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"),
-- 
2.5.0




More information about the libvir-list mailing list