diff options
author | Richard Braun <rbraun@sceen.net> | 2014-11-17 21:51:11 +0100 |
---|---|---|
committer | Richard Braun <rbraun@sceen.net> | 2014-11-17 21:51:11 +0100 |
commit | 39b2de403498163ae5e1d8f545030ec5c2af895c (patch) | |
tree | 5b6880ee7cd620c22941816be06afd83d73c3006 | |
parent | 49a3f5db0b9d829d89c7f7a2e994ea3f5dbdec3c (diff) |
kern/kmem: minor interface updates
Make allocation functions accept and return pointers instead of integers
for convenience.
-rw-r--r-- | kern/kmem.c | 4 | ||||
-rw-r--r-- | kern/kmem.h | 4 | ||||
-rw-r--r-- | vm/vm_map.c | 9 |
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)); |