cpumask: new API, v2
authorRusty Russell <rusty@rustcorp.com.au>
Fri, 7 Nov 2008 00:12:29 +0000 (11:12 +1100)
committerIngo Molnar <mingo@elte.hu>
Fri, 7 Nov 2008 11:52:30 +0000 (12:52 +0100)
- add cpumask_of()
- add free_bootmem_cpumask_var()

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
include/linux/cpumask.h
lib/cpumask.c

index c8e66619097bd8a2060bbb988213335fa3fb0407..31caa1bc620a9d71b33ff8b805fb656533a754d6 100644 (file)
@@ -893,6 +893,12 @@ static inline void cpumask_copy(struct cpumask *dstp,
  */
 #define cpumask_any_and(mask1, mask2) cpumask_first_and((mask1), (mask2))
 
+/**
+ * cpumask_of - the cpumask containing just a given cpu
+ * @cpu: the cpu (<= nr_cpu_ids)
+ */
+#define cpumask_of(cpu) (get_cpu_mask(cpu))
+
 /**
  * to_cpumask - convert an NR_CPUS bitmap to a struct cpumask *
  * @bitmap: the bitmap
@@ -946,6 +952,7 @@ typedef struct cpumask *cpumask_var_t;
 bool alloc_cpumask_var(cpumask_var_t *mask, gfp_t flags);
 void alloc_bootmem_cpumask_var(cpumask_var_t *mask);
 void free_cpumask_var(cpumask_var_t mask);
+void free_bootmem_cpumask_var(cpumask_var_t mask);
 
 #else
 typedef struct cpumask cpumask_var_t[1];
@@ -962,6 +969,10 @@ static inline void alloc_bootmem_cpumask_var(cpumask_var_t *mask)
 static inline void free_cpumask_var(cpumask_var_t mask)
 {
 }
+
+static inline void free_bootmem_cpumask_var(cpumask_var_t mask)
+{
+}
 #endif /* CONFIG_CPUMASK_OFFSTACK */
 
 /* The pointer versions of the maps, these will become the primary versions. */
index 5ceb4211c834380b6911e82e40f76da1694f6f90..2ebc3a9a74655f4cf65431c40c4b65e11059789c 100644 (file)
@@ -107,4 +107,9 @@ void free_cpumask_var(cpumask_var_t mask)
        kfree(mask);
 }
 EXPORT_SYMBOL(free_cpumask_var);
+
+void free_bootmem_cpumask_var(cpumask_var_t mask)
+{
+       free_bootmem((unsigned long)mask, cpumask_size());
+}
 #endif