summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Braun <rbraun@sceen.net>2013-05-15 20:51:15 +0200
committerRichard Braun <rbraun@sceen.net>2013-05-15 20:51:15 +0200
commit0a508edac7b34eebf1456e3a826ec1c468eafe34 (patch)
tree2b2cfdef99a03063ada4e9229ed2d764d182738f
parent564fd3aefe3fcb27de4c8fc375fc10293a002fa9 (diff)
kern/bitmap: move helper functions to bitmap_i.h
Although the dinstinction between those and the public interface was already easy to make, it's a bit more consistent and elegant this way.
-rw-r--r--Makefrag.am1
-rw-r--r--kern/bitmap.c1
-rw-r--r--kern/bitmap.h45
-rw-r--r--kern/bitmap_i.h56
4 files changed, 59 insertions, 44 deletions
diff --git a/Makefrag.am b/Makefrag.am
index 1c305ca3..26134b0a 100644
--- a/Makefrag.am
+++ b/Makefrag.am
@@ -4,6 +4,7 @@ x15_SOURCES += \
kern/assert.h \
kern/bitmap.c \
kern/bitmap.h \
+ kern/bitmap_i.h \
kern/condition.c \
kern/condition.h \
kern/config.h \
diff --git a/kern/bitmap.c b/kern/bitmap.c
index 7343ba20..c2a4cbf8 100644
--- a/kern/bitmap.c
+++ b/kern/bitmap.c
@@ -16,6 +16,7 @@
*/
#include <kern/bitmap.h>
+#include <kern/bitmap_i.h>
#include <kern/limits.h>
static inline unsigned long
diff --git a/kern/bitmap.h b/kern/bitmap.h
index 526824d6..05741b3a 100644
--- a/kern/bitmap.h
+++ b/kern/bitmap.h
@@ -24,56 +24,13 @@
#ifndef _KERN_BITMAP_H
#define _KERN_BITMAP_H
+#include <kern/bitmap_i.h>
#include <kern/limits.h>
-#include <kern/macros.h>
#include <kern/string.h>
#include <machine/atomic.h>
-#define BITMAP_LONGS(nr_bits) DIV_CEIL(nr_bits, LONG_BIT)
-
-/*
- * Declare a bitmap.
- */
#define BITMAP_DECLARE(name, nr_bits) unsigned long name[BITMAP_LONGS(nr_bits)]
-/*
- * Helper functions.
- */
-
-/*
- * Adjust the bitmap pointer and the bit index so that the latter refers
- * to a bit inside the word pointed by the former.
- *
- * Implemented as a macro for const-correctness.
- */
-#define bitmap_lookup(bm, bit) \
-MACRO_BEGIN \
- int i; \
- \
- i = BITMAP_LONGS((bit) + 1) - 1; \
- (bm) += i; \
- (bit) -= i * LONG_BIT; \
-MACRO_END
-
-static inline unsigned long
-bitmap_mask(int bit)
-{
- return (1UL << bit);
-}
-
-/*
- * Return the index of the next set bit in the bitmap, starting (and
- * including) the given bit index, or -1 if the bitmap is empty. If
- * complement is true, bits are toggled before searching so that the
- * result is the index of the next zero bit.
- */
-int bitmap_find_next_bit(const unsigned long *bm, int nr_bits, int bit,
- int complement);
-
-/*
- * Public interface.
- */
-
static inline void
bitmap_zero(unsigned long *bm, int nr_bits)
{
diff --git a/kern/bitmap_i.h b/kern/bitmap_i.h
new file mode 100644
index 00000000..39a330c9
--- /dev/null
+++ b/kern/bitmap_i.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2013 Richard Braun.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef _KERN_BITMAP_I_H
+#define _KERN_BITMAP_I_H
+
+#include <kern/limits.h>
+#include <kern/macros.h>
+
+#define BITMAP_LONGS(nr_bits) DIV_CEIL(nr_bits, LONG_BIT)
+
+/*
+ * Adjust the bitmap pointer and the bit index so that the latter refers
+ * to a bit inside the word pointed by the former.
+ *
+ * Implemented as a macro for const-correctness.
+ */
+#define bitmap_lookup(bm, bit) \
+MACRO_BEGIN \
+ int i; \
+ \
+ i = BITMAP_LONGS((bit) + 1) - 1; \
+ (bm) += i; \
+ (bit) -= i * LONG_BIT; \
+MACRO_END
+
+static inline unsigned long
+bitmap_mask(int bit)
+{
+ return (1UL << bit);
+}
+
+/*
+ * Return the index of the next set bit in the bitmap, starting (and
+ * including) the given bit index, or -1 if the bitmap is empty. If
+ * complement is true, bits are toggled before searching so that the
+ * result is the index of the next zero bit.
+ */
+int bitmap_find_next_bit(const unsigned long *bm, int nr_bits, int bit,
+ int complement);
+
+#endif /* _KERN_BITMAP_I_H */