summaryrefslogtreecommitdiffstats
path: root/sys/vm
diff options
context:
space:
mode:
authorassar <assar@FreeBSD.org>2000-12-27 02:54:37 +0000
committerassar <assar@FreeBSD.org>2000-12-27 02:54:37 +0000
commit16ec886a24778f518047beefef08877e4e65ce81 (patch)
treeccbef41275e6222de5f2d5a80dbd81f3564ec802 /sys/vm
parentf098081774f1822251bd656c6cd043ee97601f3d (diff)
downloadFreeBSD-src-16ec886a24778f518047beefef08877e4e65ce81.zip
FreeBSD-src-16ec886a24778f518047beefef08877e4e65ce81.tar.gz
Make zalloc and zfree non-inline functions. This avoids having to
have the code calling these be compiled with the same setting for INVARIANTS and SMP. Reviewed by: dillon
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/vm_zone.c76
-rw-r--r--sys/vm/vm_zone.h79
2 files changed, 77 insertions, 78 deletions
diff --git a/sys/vm/vm_zone.c b/sys/vm/vm_zone.c
index b5ade30..bc843e0 100644
--- a/sys/vm/vm_zone.c
+++ b/sys/vm/vm_zone.c
@@ -32,6 +32,59 @@
static MALLOC_DEFINE(M_ZONE, "ZONE", "Zone header");
+#define ZONE_ERROR_INVALID 0
+#define ZONE_ERROR_NOTFREE 1
+#define ZONE_ERROR_ALREADYFREE 2
+
+#define ZONE_ROUNDING 32
+
+#define ZENTRY_FREE 0x12342378
+/*
+ * void *zalloc(vm_zone_t zone) --
+ * Returns an item from a specified zone.
+ *
+ * void zfree(vm_zone_t zone, void *item) --
+ * Frees an item back to a specified zone.
+ */
+static __inline__ void *
+_zalloc(vm_zone_t z)
+{
+ void *item;
+
+#ifdef INVARIANTS
+ if (z == 0)
+ zerror(ZONE_ERROR_INVALID);
+#endif
+
+ if (z->zfreecnt <= z->zfreemin)
+ return _zget(z);
+
+ item = z->zitems;
+ z->zitems = ((void **) item)[0];
+#ifdef INVARIANTS
+ if (((void **) item)[1] != (void *) ZENTRY_FREE)
+ zerror(ZONE_ERROR_NOTFREE);
+ ((void **) item)[1] = 0;
+#endif
+
+ z->zfreecnt--;
+ z->znalloc++;
+ return item;
+}
+
+static __inline__ void
+_zfree(vm_zone_t z, void *item)
+{
+ ((void **) item)[0] = z->zitems;
+#ifdef INVARIANTS
+ if (((void **) item)[1] == (void *) ZENTRY_FREE)
+ zerror(ZONE_ERROR_ALREADYFREE);
+ ((void **) item)[1] = (void *) ZENTRY_FREE;
+#endif
+ z->zitems = item;
+ z->zfreecnt++;
+}
+
/*
* This file comprises a very simple zone allocator. This is used
* in lieu of the malloc allocator, where needed or more optimal.
@@ -253,10 +306,29 @@ zunlock(vm_zone_t z, int s)
*
*/
+void *
+zalloc(vm_zone_t z)
+{
+#if defined(SMP)
+ return zalloci(z);
+#else
+ return _zalloc(z);
+#endif
+}
+
+void
+zfree(vm_zone_t z, void *item)
+{
+#ifdef SMP
+ zfreei(z, item);
+#else
+ _zfree(z, item);
+#endif
+}
+
/*
* Zone allocator/deallocator. These are interrupt / (or potentially SMP)
- * safe. The raw zalloc/zfree routines are in the vm_zone header file,
- * and are not interrupt safe, but are fast.
+ * safe. The raw zalloc/zfree routines are not interrupt safe, but are fast.
*/
void *
zalloci(vm_zone_t z)
diff --git a/sys/vm/vm_zone.h b/sys/vm/vm_zone.h
index b8aa933..2b21586 100644
--- a/sys/vm/vm_zone.h
+++ b/sys/vm/vm_zone.h
@@ -49,85 +49,12 @@ vm_zone_t zinit __P((char *name, int size, int nentries, int flags,
int zalloc));
int zinitna __P((vm_zone_t z, struct vm_object *obj, char *name,
int size, int nentries, int flags, int zalloc));
-static void * zalloc __P((vm_zone_t z));
-static void zfree __P((vm_zone_t z, void *item));
+void * zalloc __P((vm_zone_t z));
+void zfree __P((vm_zone_t z, void *item));
void * zalloci __P((vm_zone_t z));
void zfreei __P((vm_zone_t z, void *item));
void zbootinit __P((vm_zone_t z, char *name, int size, void *item,
int nitems));
void * _zget __P((vm_zone_t z));
-#define ZONE_ERROR_INVALID 0
-#define ZONE_ERROR_NOTFREE 1
-#define ZONE_ERROR_ALREADYFREE 2
-
-#define ZONE_ROUNDING 32
-
-#define ZENTRY_FREE 0x12342378
-/*
- * void *zalloc(vm_zone_t zone) --
- * Returns an item from a specified zone.
- *
- * void zfree(vm_zone_t zone, void *item) --
- * Frees an item back to a specified zone.
- */
-static __inline__ void *
-_zalloc(vm_zone_t z)
-{
- void *item;
-
-#ifdef INVARIANTS
- if (z == 0)
- zerror(ZONE_ERROR_INVALID);
-#endif
-
- if (z->zfreecnt <= z->zfreemin)
- return _zget(z);
-
- item = z->zitems;
- z->zitems = ((void **) item)[0];
-#ifdef INVARIANTS
- if (((void **) item)[1] != (void *) ZENTRY_FREE)
- zerror(ZONE_ERROR_NOTFREE);
- ((void **) item)[1] = 0;
-#endif
-
- z->zfreecnt--;
- z->znalloc++;
- return item;
-}
-
-static __inline__ void
-_zfree(vm_zone_t z, void *item)
-{
- ((void **) item)[0] = z->zitems;
-#ifdef INVARIANTS
- if (((void **) item)[1] == (void *) ZENTRY_FREE)
- zerror(ZONE_ERROR_ALREADYFREE);
- ((void **) item)[1] = (void *) ZENTRY_FREE;
-#endif
- z->zitems = item;
- z->zfreecnt++;
-}
-
-static __inline__ void *
-zalloc(vm_zone_t z)
-{
-#if defined(SMP)
- return zalloci(z);
-#else
- return _zalloc(z);
-#endif
-}
-
-static __inline__ void
-zfree(vm_zone_t z, void *item)
-{
-#ifdef SMP
- zfreei(z, item);
-#else
- _zfree(z, item);
-#endif
-}
-
-#endif
+#endif /* _SYS_ZONE_H */
OpenPOWER on IntegriCloud