1 #ifndef __TOOLS_LINUX_SLAB_H
2 #define __TOOLS_LINUX_SLAB_H
8 #include <linux/kernel.h>
9 #include <linux/page.h>
10 #include <linux/types.h>
12 #define ARCH_KMALLOC_MINALIGN 16
13 #define KMALLOC_MAX_SIZE SIZE_MAX
15 static inline void *kmalloc(size_t size, gfp_t flags)
17 void *p = malloc(size);
19 if (p && (flags & __GFP_ZERO))
25 static inline void *krealloc(void *old, size_t size, gfp_t flags)
27 void *new = kmalloc(size, flags);
29 if (new && (flags & __GFP_ZERO))
34 min(malloc_usable_size(old),
35 malloc_usable_size(new)));
42 #define kzalloc(size, flags) calloc(1, size)
43 #define kcalloc(n, size, flags) calloc(n, size)
44 #define kmalloc_array(n, size, flags) calloc(n, size)
46 #define vmalloc(size) malloc(size)
47 #define vzalloc(size) calloc(1, size)
49 #define kfree(p) free(p)
50 #define kvfree(p) free(p)
51 #define kzfree(p) free(p)
53 static inline struct page *alloc_pages(gfp_t flags, unsigned int order)
55 size_t size = PAGE_SIZE << order;
56 void *p = memalign(PAGE_SIZE, size);
58 if (p && (flags & __GFP_ZERO))
64 #define alloc_page(gfp) alloc_pages(gfp, 0)
66 #define __get_free_pages(gfp, order) ((unsigned long) alloc_pages(gfp, order))
67 #define __get_free_page(gfp) __get_free_pages(gfp, 0)
69 #define __free_pages(page, order) \
75 #define free_pages(addr, order) \
78 free((void *) (addr)); \
81 #define __free_page(page) __free_pages((page), 0)
82 #define free_page(addr) free_pages((addr), 0)
84 #define VM_IOREMAP 0x00000001 /* ioremap() and friends */
85 #define VM_ALLOC 0x00000002 /* vmalloc() */
86 #define VM_MAP 0x00000004 /* vmap()ed pages */
87 #define VM_USERMAP 0x00000008 /* suitable for remap_vmalloc_range */
88 #define VM_UNINITIALIZED 0x00000020 /* vm_struct is not fully initialized */
89 #define VM_NO_GUARD 0x00000040 /* don't add guard page */
90 #define VM_KASAN 0x00000080 /* has allocated kasan shadow memory */
94 static inline void vunmap(const void *addr) {}
96 static inline void *vmap(struct page **pages, unsigned int count,
97 unsigned long flags, unsigned prot)
99 return page_address(pages[0]);
102 #define is_vmalloc_addr(page) 0
104 #define vmalloc_to_page(addr) ((struct page *) (addr))
106 #endif /* __TOOLS_LINUX_SLAB_H */