libnuma: adding check macros
authorReto Achermann <reto.achermann@inf.ethz.ch>
Tue, 16 Dec 2014 10:19:57 +0000 (11:19 +0100)
committerReto Achermann <reto.achermann@inf.ethz.ch>
Tue, 16 Dec 2014 10:19:57 +0000 (11:19 +0100)
lib/numa/numa.c
lib/numa/numa_internal.h

index 0de53f1..976e2b1 100644 (file)
@@ -46,6 +46,7 @@ struct numa_bm *numa_all_cpus_ptr;
  */
 struct numa_topology numa_topology;
 
+
 /**
  * \brief checks if numa support is available
  *
@@ -202,10 +203,7 @@ nodeid_t numa_num_task_nodes(void)
  */
 size_t numa_node_size(nodeid_t node, uintptr_t *freep)
 {
-    if (node < numa_topology.num_nodes) {
-        NUMA_WARNING("Node ID exceeds number of available nodes");
-        return NUMA_NODE_INVALID;
-    }
+    numa_check_node_id(node);
 
     if (freep) {
         // TODO: figure out how much memory is left in the node
@@ -222,10 +220,7 @@ size_t numa_node_size(nodeid_t node, uintptr_t *freep)
  */
 lpaddr_t numa_node_base(nodeid_t node)
 {
-    if (node < numa_topology.num_nodes) {
-        NUMA_WARNING("Node ID exceeds number of available nodes");
-        return NUMA_NODE_INVALID;
-    }
+    numa_check_node_id(node);
 
     return numa_topology.nodes[node].mem_base;
 }
index b58a818..89a0fea 100644 (file)
@@ -101,4 +101,36 @@ errval_t numa_get_topology_from_skb(struct numa_topology *topology);
  */
 void numa_dump_topology(struct numa_topology *topology);
 
+/*
+ * ----------------------------------------------------------------------------
+ * macros for library checks
+ * ----------------------------------------------------------------------------
+ */
+
+#define NUMA_CHECK_STRICT 1
+
+#if NUMA_CHECK_STRICT
+#define numa_check_init() \
+    if (numa_initialized != 0x1) { \
+        USER_PANIC("NUMA library has not been initialized\n"); \
+    }
+
+#define numa_check_node_id(_id) \
+    if (_id >= numa_topology.num_nodes) { \
+        NUMA_WARNING("Node ID exceeds number of available nodes"); \
+        return NUMA_NODE_INVALID; \
+    }
+
+#define numa_check_core_id(_id) \
+    if (_id >= numa_topology.num_nodes) { \
+        NUMA_WARNING("Core ID exceeds number of available cores"); \
+        return NUMA_NODE_INVALID; \
+    }
+
+#else
+#define numa_check_init()
+#define numa_check_node_id(_id)
+#define numa_check_core_id(_id)
+#endif
+
 #endif /* NUMA_INTERNAL_H_ */