X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/6d2010ae8f7a6078e10b361c6962983bab233e0f..c7d2c2c6ee645e10cbccdd01c6191873ec77239d:/osfmk/kern/kalloc.h diff --git a/osfmk/kern/kalloc.h b/osfmk/kern/kalloc.h index 9fcb07edc..caad32a3b 100644 --- a/osfmk/kern/kalloc.h +++ b/osfmk/kern/kalloc.h @@ -60,33 +60,62 @@ #define _KERN_KALLOC_H_ #include +#include #include +#include __BEGIN_DECLS -extern void *kalloc(vm_size_t size); +#if XNU_KERNEL_PRIVATE -extern void *kalloc_noblock(vm_size_t size); +extern void * +kalloc_canblock( + vm_size_t size, + boolean_t canblock, + vm_allocation_site_t * site); + +#define kalloc(size) \ + ({ static vm_allocation_site_t site __attribute__((section("__DATA, __data"))); \ + kalloc_canblock((size), TRUE, &site); }) + +#define kalloc_tag(size, tag) \ + ({ static vm_allocation_site_t site __attribute__((section("__DATA, __data"))) \ + = { (tag), 0 } ; \ + kalloc_canblock((size), TRUE, &site); }) -extern void *kget(vm_size_t size); +#define kalloc_tag_bt(size, tag) \ + ({ static vm_allocation_site_t site __attribute__((section("__DATA, __data"))) \ + = { (tag), VM_TAG_BT }; \ + kalloc_canblock((size), TRUE, &site); }) + +#define kalloc_noblock(size) \ + ({ static vm_allocation_site_t site __attribute__((section("__DATA, __data"))); \ + kalloc_canblock((size), FALSE, &site); }) + +#define kalloc_noblock_tag_bt(size, tag) \ + ({ static vm_allocation_site_t site __attribute__((section("__DATA, __data"))) \ + = { (tag), VM_TAG_BT }; \ + kalloc_canblock((size), FALSE, &site); }) extern void kfree(void *data, vm_size_t size); -__END_DECLS +#else /* XNU_KERNEL_PRIVATE */ -#ifdef MACH_KERNEL_PRIVATE +extern void *kalloc(vm_size_t size); + +extern void *kalloc_noblock(vm_size_t size); + +extern void kfree(void *data, + vm_size_t size); -#include +#endif /* !XNU_KERNEL_PRIVATE */ -#define KALLOC_MINSIZE 16 +__END_DECLS -extern void kalloc_init(void) __attribute__((section("__TEXT, initcode"))); +#ifdef MACH_KERNEL_PRIVATE -extern void krealloc(void **addrp, - vm_size_t old_size, - vm_size_t new_size, - simple_lock_t lock); +extern void kalloc_init(void); extern void kalloc_fake_zone_init( int );