1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #include <glue/gnulinux.h>
- #include <linux/printk.h>
- #include <linux/slab.h>
- #include <mach/machine/vm_types.h>
- void gnu_kmem_cache_init(struct gnu_kmem_cache *cache, const char *name,
- size_t obj_size, size_t align,
- gnu_kmem_cache_ctor_t ctor, int flags)
- {
- printk(KERN_CRIT "zone allocator name: %s size: %i\n",name,obj_size);
- cache->zone = kmem_cache_create (name, obj_size, 0 /* align */, SLAB_HWCACHE_ALIGN /* flags */, NULL /* ctor */);
- cache->size = obj_size;
- }
- /*
- * Allocate an object from a cache.
- */
- vm_offset_t gnu_kmem_cache_alloc(struct gnu_kmem_cache *cache)
- {
-
- void* mem = kmem_cache_alloc ((struct kmem_cache *) cache->zone, GFP_KERNEL);
- memset(mem,0,cache->size);
- return (vm_offset_t) mem;
- }
- /*
- * Release an object to its cache.
- */
- void gnu_kmem_cache_free(struct gnu_kmem_cache *cache, vm_offset_t obj)
- {
- kmem_cache_free ((struct kmem_cache *) cache->zone, obj);
- }
- vm_offset_t kalloc (vm_size_t size)
- {
- printk(KERN_CRIT "kalloc size: %i\n",size);
- return (vm_offset_t) kmalloc(size, GFP_KERNEL);
- }
- extern void linux_kfree(vm_offset_t table)
- {
- kfree(table);
- }
|