parlib: Make bitmask.h more compilable
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 13 Dec 2017 22:26:52 +0000 (17:26 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 13 Dec 2017 22:34:46 +0000 (17:34 -0500)
In an upcoming patch, parlib headers will include this more broadly, which
means glibc will include it too.

You can't include stdio.h widely throughout glibc, so that needs to go.
Similarly, the header is included in parts of gcc that don't like the c99
for loop declarations.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
user/parlib/include/parlib/bitmask.h
user/parlib/include/parlib/x86/bitmask.h

index eafe28c..3e48247 100644 (file)
@@ -7,7 +7,9 @@ __BEGIN_DECLS
 static inline bool BITMASK_IS_SET_IN_RANGE(const uint8_t *m, size_t beg,
                                            size_t end)
 {
-       for(size_t i=beg; i<end; i++) {
+       size_t i;
+
+       for (i = beg; i < end; i++) {
                if(!GET_BITMASK_BIT(m, i))
                        return FALSE;
        }
@@ -17,7 +19,9 @@ static inline bool BITMASK_IS_SET_IN_RANGE(const uint8_t *m, size_t beg,
 static inline bool BITMASK_IS_CLR_IN_RANGE(const uint8_t *m, size_t beg,
                                            size_t end)
 {
-       for(size_t i=beg; i<end; i++) {
+       size_t i;
+
+       for (i = beg; i < end; i++) {
                if(GET_BITMASK_BIT(m, i))
                        return FALSE;
        }
@@ -26,16 +30,18 @@ static inline bool BITMASK_IS_CLR_IN_RANGE(const uint8_t *m, size_t beg,
 
 static inline void SET_BITMASK_RANGE(uint8_t* m, size_t beg, size_t end)
 {
-       for(size_t i=beg; i<end; i++) {
+       size_t i;
+
+       for (i = beg; i < end; i++)
                SET_BITMASK_BIT(m, i);
-       }
 }
 
 static inline void CLR_BITMASK_RANGE(uint8_t* m, size_t beg, size_t end)
 {
-       for(size_t i=beg; i<end; i++) {
+       size_t i;
+
+       for (i = beg; i < end; i++)
                CLR_BITMASK_BIT(m, i);
-       }
 }
 
 /* Runs *work on every bit in the bitmask, passing *work the value of the bit
@@ -48,7 +54,8 @@ static inline void CLR_BITMASK_RANGE(uint8_t* m, size_t beg, size_t end)
  * overheads. */
 #define BITMASK_FOREACH_SET(name, size, work_fn, clear)                        \
 {                                                                              \
-       for (int i = 0; i < (size); i++) {                                         \
+       int i;                                                                     \
+       for (i = 0; i < (size); i++) {                                             \
                bool present = GET_BITMASK_BIT((name), i);                             \
                if (present && (clear))                                                \
                        CLR_BITMASK_BIT_ATOMIC((name), i);                                 \
index 1c9f24b..10abb29 100644 (file)
@@ -1,10 +1,8 @@
 #pragma once
 
-#include <string.h>
 #include <sys/types.h>
 #include <sys/param.h>
 #include <parlib/arch/atomic.h>
-#include <stdio.h>
 
 __BEGIN_DECLS
 
@@ -74,9 +72,10 @@ static bool BITMASK_IS_CLEAR(const uint8_t *name, size_t size)
 static inline bool BITMASK_IS_FULL(const uint8_t *map, size_t size)
 {
        size_t nr_bytes = BYTES_FOR_BITMASK(size);
+       int i, j;
 
-       for (int i = 0; i < nr_bytes; i++) {
-               for (int j = 0; j < MIN(8, size); j++) {
+       for (i = 0; i < nr_bytes; i++) {
+               for (j = 0; j < MIN(8, size); j++) {
                        if (!((map[i] >> j) & 1))
                                return FALSE;
                        size--;
@@ -85,17 +84,4 @@ static inline bool BITMASK_IS_FULL(const uint8_t *map, size_t size)
        return TRUE;
 }
 
-static inline void PRINT_BITMASK(const uint8_t *name, size_t size)
-{
-       size_t nr_bytes = BYTES_FOR_BITMASK(size);
-
-       for (int i = 0; i < nr_bytes; i++) {
-               for (int j = 0; j < MIN(8, size); j++) {
-                       printf("%x", (name[i] >> j) & 1);
-                       size--;
-               }
-       }
-       printf("\n");
-}
-
 __END_DECLS