move cpumask parsing code to topology.c
authorNathan Lynch <ntl@pobox.com>
Tue, 21 Oct 2008 12:36:35 +0000 (07:36 -0500)
committerNathan Lynch <ntl@pobox.com>
Tue, 21 Oct 2008 12:36:35 +0000 (07:36 -0500)
Not much need for separate modules and we risk exposing symbols that
we don't want to.  Move topology_cpumask_parse et al to topology.c and
delete cpumask.[ch].

lib/cpumask.c [deleted file]
lib/cpumask.h [deleted file]
lib/topology.c

diff --git a/lib/cpumask.c b/lib/cpumask.c
deleted file mode 100644 (file)
index 6f3b22a..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * libtopology - a library for discovering Linux system topology
- *
- * Copyright 2008 Nathan Lynch, IBM Corporation
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA
- */
-#define _GNU_SOURCE
-
-#include <assert.h>
-#include <ctype.h>
-#include <sched.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "compat.h"
-
-static const unsigned char ascii_vals[] = {
-       [48] = 0,
-       [49] = 1,
-       [50] = 2,
-       [51] = 3,
-       [52] = 4,
-       [53] = 5,
-       [54] = 6,
-       [55] = 7,
-       [56] = 8,
-       [57] = 9,
-
-       [65] = 0xA,
-       [66] = 0xB,
-       [67] = 0xC,
-       [68] = 0xD,
-       [69] = 0xE,
-       [70] = 0xF,
-
-       [97]  = 0xa,
-       [98]  = 0xb,
-       [99]  = 0xc,
-       [100] = 0xd,
-       [101] = 0xe,
-       [102] = 0xf,
-};
-
-static uint8_t char_to_val(int c)
-{
-       assert(isxdigit(c));
-       return ascii_vals[c];
-}
-
-int topology_cpumask_parse(cpu_set_t *cpumask, size_t size, const char *buf)
-{
-       const char *pos;
-       int cpu = 0;
-
-       CPU_ZERO_S(size, cpumask);
-
-       pos = strlen(buf) + buf;
-
-       /* find the last hex digit */
-       while (!isxdigit(*pos) && pos >= buf)
-               pos--;
-       if (pos < buf)
-               goto err;
-
-       for ( ; pos >= buf; pos--) {
-               uint8_t val;
-               int i;
-
-               if (*pos == ',')
-                       continue;
-
-               if (!isxdigit(*pos))
-                       goto err;
-
-               val = char_to_val(*pos);
-
-               for (i = 0; i < 4; i++, val >>= 1) {
-                       if (val & 1)
-                               CPU_SET_S(cpu, size, cpumask);
-                       cpu++;
-               }
-
-               assert(val == 0);
-       }
-
-       return 0;
-err:
-       CPU_ZERO_S(size, cpumask);
-       return 1;
-}
diff --git a/lib/cpumask.h b/lib/cpumask.h
deleted file mode 100644 (file)
index 99ab282..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _TOPOLOGY_CPUMASK_H_
-#define _TOPOLOGY_CPUMASK_H_
-
-extern int topology_cpumask_parse(cpu_set_t *cpumask, size_t size, const char *buf);
-
-#endif /* _TOPOLOGY_CPUMASK_H_ */
index 8c63f0bd9c69f2bcdea1a18f9e22bb2f8128f3bf..076903db7217942ca6a71f3a1823047bb93f1812 100644 (file)
 
 #define _GNU_SOURCE /* for sched_getaffinity */
 #include <assert.h>
+#include <ctype.h>
 #include <dirent.h>
 #include <sched.h>
 #include <search.h>
 #include <stdarg.h>
 #include <stdbool.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
@@ -34,7 +36,6 @@
 
 #include "topology.h"
 #include "compat.h"
-#include "cpumask.h"
 
 /***************************/
 /* Misc. utility functions */
@@ -44,6 +45,85 @@ static void *zmalloc(size_t size)
        return calloc(1, size);
 }
 
+/*******************/
+/* cpumask parsing */
+/*******************/
+
+static const unsigned char ascii_vals[] = {
+       [48] = 0,
+       [49] = 1,
+       [50] = 2,
+       [51] = 3,
+       [52] = 4,
+       [53] = 5,
+       [54] = 6,
+       [55] = 7,
+       [56] = 8,
+       [57] = 9,
+
+       [65] = 0xA,
+       [66] = 0xB,
+       [67] = 0xC,
+       [68] = 0xD,
+       [69] = 0xE,
+       [70] = 0xF,
+
+       [97]  = 0xa,
+       [98]  = 0xb,
+       [99]  = 0xc,
+       [100] = 0xd,
+       [101] = 0xe,
+       [102] = 0xf,
+};
+
+static uint8_t char_to_val(int c)
+{
+       assert(isxdigit(c));
+       return ascii_vals[c];
+}
+
+static int cpumask_parse(cpu_set_t *cpumask, size_t size, const char *buf)
+{
+       const char *pos;
+       int cpu = 0;
+
+       CPU_ZERO_S(size, cpumask);
+
+       pos = strlen(buf) + buf;
+
+       /* find the last hex digit */
+       while (!isxdigit(*pos) && pos >= buf)
+               pos--;
+       if (pos < buf)
+               goto err;
+
+       for ( ; pos >= buf; pos--) {
+               uint8_t val;
+               int i;
+
+               if (*pos == ',')
+                       continue;
+
+               if (!isxdigit(*pos))
+                       goto err;
+
+               val = char_to_val(*pos);
+
+               for (i = 0; i < 4; i++, val >>= 1) {
+                       if (val & 1)
+                               CPU_SET_S(cpu, size, cpumask);
+                       cpu++;
+               }
+
+               assert(val == 0);
+       }
+
+       return 0;
+err:
+       CPU_ZERO_S(size, cpumask);
+       return 1;
+}
+
 /***********************************************************************/
 /* Hashtable API - just a wrapper around the glibc hashtable functions */
 /***********************************************************************/
@@ -892,7 +972,7 @@ static int __get_cache_info(struct topo_device *cache, int cpu, int index)
 
        topo_device_attach_attr(cache, attr);
 
-       if (topology_cpumask_parse(cache->cpumask, cpumask_size, attr->value))
+       if (cpumask_parse(cache->cpumask, cpumask_size, attr->value))
                goto err;
 
        /* Ensure this cpu is set in the shared map */