Moves ARRAY_SIZE into the kernel only (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Tue, 17 Mar 2015 16:08:05 +0000 (12:08 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 17 Mar 2015 17:55:33 +0000 (13:55 -0400)
Everyone wants to #define it, so we conflict with some user libraries.
Annoying.

Reinstall your kernel headers.

kern/include/ros/common.h
tests/cs.c
user/parlib/debug.c

index 35e1ccd..2c451b2 100644 (file)
@@ -34,10 +34,6 @@ typedef unsigned long uintreg_t;
 #define PiB    1125899906842624ull
 #define EiB    1152921504606846976ull
 
-#define ARRAY_SIZE(x) (sizeof((x))/sizeof((x)[0]))
-
-#define CHECK_FLAG(flags,bit)   ((flags) & (1 << (bit)))
-
 #define FOR_CIRC_BUFFER(next, size, var) \
        for (int _var = 0, var = (next); _var < (size); _var++, var = (var + 1) % (size))
 
@@ -53,7 +49,7 @@ typedef unsigned long uintreg_t;
 #define is_defined___(_, v, ...) v
 
 // Efficient min and max operations
-#ifdef ROS_KERNEL /* Glibc has their own */
+#ifdef ROS_KERNEL /* Glibc or other user libs have their own */
 #define MIN(_a, _b)                                            \
 ({                                                             \
        typeof(_a) __a = (_a);                                  \
@@ -78,6 +74,8 @@ typedef unsigned long uintreg_t;
 /* Will return false for 0.  Debatable, based on what you want. */
 #define IS_PWR2(x) ((x) && !((x) & (x - 1)))
 
+#define ARRAY_SIZE(x) (sizeof((x))/sizeof((x)[0]))
+
 #endif
 
 /* Rounding operations (efficient when n is a power of 2)
index 80cf424..3a36d02 100644 (file)
@@ -23,6 +23,8 @@
 #include <fcallfmt.h>
 #include <fcall.h>
 
+#define ARRAY_SIZE(x) (sizeof((x))/sizeof((x)[0]))
+
 enum
 {
        Nreply=                 20,
index b09e619..8a28bcf 100644 (file)
@@ -65,6 +65,7 @@ static const char *blacklist[] = {
 
 static bool is_blacklisted(const char *s)
 {
+       #define ARRAY_SIZE(x) (sizeof((x))/sizeof((x)[0]))
        for (int i = 0; i < ARRAY_SIZE(blacklist); i++) {
                if (!strcmp(blacklist[i], s))
                        return TRUE;