X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/316670eb35587141e969394ae8537d66b9211e80..c7d2c2c6ee645e10cbccdd01c6191873ec77239d:/osfmk/kern/kalloc.h diff --git a/osfmk/kern/kalloc.h b/osfmk/kern/kalloc.h index 77b8cd3be..caad32a3b 100644 --- a/osfmk/kern/kalloc.h +++ b/osfmk/kern/kalloc.h @@ -60,10 +60,48 @@ #define _KERN_KALLOC_H_ #include +#include #include +#include __BEGIN_DECLS +#if XNU_KERNEL_PRIVATE + +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); }) + +#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); + +#else /* XNU_KERNEL_PRIVATE */ + extern void *kalloc(vm_size_t size); extern void *kalloc_noblock(vm_size_t size); @@ -71,13 +109,13 @@ extern void *kalloc_noblock(vm_size_t size); extern void kfree(void *data, vm_size_t size); +#endif /* !XNU_KERNEL_PRIVATE */ + __END_DECLS #ifdef MACH_KERNEL_PRIVATE -#include - -extern void kalloc_init(void) __attribute__((section("__TEXT, initcode"))); +extern void kalloc_init(void); extern void kalloc_fake_zone_init( int );