[libvirt] [PATCH] util: assume modern CPU_ALLOC macros always exist

Daniel P. Berrangé berrange at redhat.com
Tue Jul 9 11:33:54 UTC 2019


Support for the modern CPU_ALLOC macros was added 10 years ago in

  commit a73cd93b2428adbbc62bb919b6cf5ffd27728040
  Author: Daniel P. Berrange <berrange at redhat.com>
  Date:   Mon Nov 16 16:08:29 2009 +0000

    Alternate CPU affinity impl to cope with NR_CPUS > 1024

This is long enough that we can assume it always exists and drop the
back compat code.

Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
---
 src/util/virprocess.c | 36 ------------------------------------
 1 file changed, 36 deletions(-)

diff --git a/src/util/virprocess.c b/src/util/virprocess.c
index f2533f639f..66834d37d3 100644
--- a/src/util/virprocess.c
+++ b/src/util/virprocess.c
@@ -422,8 +422,6 @@ int virProcessSetAffinity(pid_t pid, virBitmapPtr map)
 {
     size_t i;
     VIR_DEBUG("Set process affinity on %lld", (long long)pid);
-# ifdef CPU_ALLOC
-    /* New method dynamically allocates cpu mask, allowing unlimted cpus */
     int numcpus = 1024;
     size_t masklen;
     cpu_set_t *mask;
@@ -462,22 +460,6 @@ int virProcessSetAffinity(pid_t pid, virBitmapPtr map)
         return -1;
     }
     CPU_FREE(mask);
-# else
-    /* Legacy method uses a fixed size cpu mask, only allows up to 1024 cpus */
-    cpu_set_t mask;
-
-    CPU_ZERO(&mask);
-    for (i = 0; i < virBitmapSize(map); i++) {
-        if (virBitmapIsBitSet(map, i))
-            CPU_SET(i, &mask);
-    }
-
-    if (sched_setaffinity(pid, sizeof(mask), &mask) < 0) {
-        virReportSystemError(errno,
-                             _("cannot set CPU affinity on process %d"), pid);
-        return -1;
-    }
-# endif
 
     return 0;
 }
@@ -491,7 +473,6 @@ virProcessGetAffinity(pid_t pid)
     size_t ncpus;
     virBitmapPtr ret = NULL;
 
-# ifdef CPU_ALLOC
     /* 262144 cpus ought to be enough for anyone */
     ncpus = 1024 << 8;
     masklen = CPU_ALLOC_SIZE(ncpus);
@@ -503,14 +484,6 @@ virProcessGetAffinity(pid_t pid)
     }
 
     CPU_ZERO_S(masklen, mask);
-# else
-    ncpus = 1024;
-    if (VIR_ALLOC(mask) < 0)
-        return NULL;
-
-    masklen = sizeof(*mask);
-    CPU_ZERO(mask);
-# endif
 
     if (sched_getaffinity(pid, masklen, mask) < 0) {
         virReportSystemError(errno,
@@ -522,22 +495,13 @@ virProcessGetAffinity(pid_t pid)
           goto cleanup;
 
     for (i = 0; i < ncpus; i++) {
-# ifdef CPU_ALLOC
          /* coverity[overrun-local] */
         if (CPU_ISSET_S(i, masklen, mask))
             ignore_value(virBitmapSetBit(ret, i));
-# else
-        if (CPU_ISSET(i, mask))
-            ignore_value(virBitmapSetBit(ret, i));
-# endif
     }
 
  cleanup:
-# ifdef CPU_ALLOC
     CPU_FREE(mask);
-# else
-    VIR_FREE(mask);
-# endif
 
     return ret;
 }
-- 
2.21.0




More information about the libvir-list mailing list