summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Braun <rbraun@sceen.net>2014-11-17 21:51:11 +0100
committerRichard Braun <rbraun@sceen.net>2014-11-17 21:51:11 +0100
commit39b2de403498163ae5e1d8f545030ec5c2af895c (patch)
tree5b6880ee7cd620c22941816be06afd83d73c3006
parent49a3f5db0b9d829d89c7f7a2e994ea3f5dbdec3c (diff)
kern/kmem: minor interface updates
Make allocation functions accept and return pointers instead of integers for convenience.
-rw-r--r--kern/kmem.c4
-rw-r--r--kern/kmem.h4
-rw-r--r--vm/vm_map.c9
3 files changed, 9 insertions, 8 deletions
diff --git a/kern/kmem.c b/kern/kmem.c
index 7d8e9585..3dac29db 100644
--- a/kern/kmem.c
+++ b/kern/kmem.c
@@ -263,7 +263,7 @@ kmem_slab_create(struct kmem_cache *cache, size_t color)
if (cache->slab_alloc_fn == NULL)
slab_buf = vm_kmem_alloc(cache->slab_size);
else
- slab_buf = (void *)cache->slab_alloc_fn(cache->slab_size);
+ slab_buf = cache->slab_alloc_fn(cache->slab_size);
if (slab_buf == NULL)
return NULL;
@@ -275,7 +275,7 @@ kmem_slab_create(struct kmem_cache *cache, size_t color)
if (cache->slab_free_fn == NULL)
vm_kmem_free(slab_buf, cache->slab_size);
else
- cache->slab_free_fn((unsigned long)slab_buf, cache->slab_size);
+ cache->slab_free_fn(slab_buf, cache->slab_size);
return NULL;
}
diff --git a/kern/kmem.h b/kern/kmem.h
index 86e3f20c..3b3fddec 100644
--- a/kern/kmem.h
+++ b/kern/kmem.h
@@ -45,8 +45,8 @@ typedef void (*kmem_ctor_fn_t)(void *);
*
* All addresses and sizes must be page-aligned.
*/
-typedef unsigned long (*kmem_slab_alloc_fn_t)(size_t);
-typedef void (*kmem_slab_free_fn_t)(unsigned long, size_t);
+typedef void * (*kmem_slab_alloc_fn_t)(size_t);
+typedef void (*kmem_slab_free_fn_t)(void *, size_t);
#include <kern/kmem_i.h>
diff --git a/vm/vm_map.c b/vm/vm_map.c
index cb9294ec..41e5ee87 100644
--- a/vm/vm_map.c
+++ b/vm/vm_map.c
@@ -186,7 +186,7 @@ vm_map_kentry_free_va(unsigned long va, size_t slab_size)
vm_map_kentry_free_slab(slab);
}
-static unsigned long
+static void *
vm_map_kentry_alloc(size_t slab_size)
{
struct vm_page *page;
@@ -211,18 +211,19 @@ vm_map_kentry_alloc(size_t slab_size)
}
pmap_update(kernel_pmap);
- return va;
+ return (void *)va;
}
static void
-vm_map_kentry_free(unsigned long va, size_t slab_size)
+vm_map_kentry_free(void *addr, size_t slab_size)
{
const struct cpumap *cpumap;
struct vm_page *page;
phys_addr_t pa;
- unsigned long end;
+ unsigned long va, end;
size_t i;
+ va = (unsigned long)addr;
assert(va >= vm_map_kentry_entry.start);
assert((va + slab_size) <= (vm_map_kentry_entry.start
+ VM_MAP_KENTRY_SIZE));