#ifdef KERNEL_PRIVATE
+#ifdef XNU_KERNEL_PRIVATE
+
extern kern_return_t kernel_memory_allocate(
vm_map_t map,
vm_offset_t *addrp,
vm_size_t size,
vm_offset_t mask,
- int flags);
+ int flags,
+ vm_tag_t tag);
/* flags for kernel_memory_allocate */
#define KMA_HERE 0x01
#define KMA_GUARD_FIRST 0x10
#define KMA_GUARD_LAST 0x20
#define KMA_PERMANENT 0x40
+#define KMA_NOENCRYPT 0x80
+#define KMA_KSTACK 0x100
+#define KMA_VAONLY 0x200
+#define KMA_COMPRESSOR 0x400 /* Pages belonging to the compressor are not on the paging queues, nor are they counted as wired. */
extern kern_return_t kmem_alloc_contig(
vm_map_t map,
vm_offset_t mask,
ppnum_t max_pnum,
ppnum_t pnum_mask,
- int flags);
+ int flags,
+ vm_tag_t tag);
extern kern_return_t kmem_alloc(
vm_map_t map,
vm_offset_t *addrp,
- vm_size_t size);
+ vm_size_t size,
+ vm_tag_t tag);
extern kern_return_t kmem_alloc_pageable(
vm_map_t map,
vm_offset_t *addrp,
- vm_size_t size);
+ vm_size_t size,
+ vm_tag_t tag);
extern kern_return_t kmem_alloc_aligned(
vm_map_t map,
vm_offset_t *addrp,
- vm_size_t size);
+ vm_size_t size,
+ vm_tag_t tag);
extern kern_return_t kmem_realloc(
vm_map_t map,
vm_offset_t oldaddr,
vm_size_t oldsize,
vm_offset_t *newaddrp,
- vm_size_t newsize);
+ vm_size_t newsize,
+ vm_tag_t tag);
extern void kmem_free(
vm_map_t map,
int flags,
vm_map_t *new_map);
+extern kern_return_t kmem_alloc_kobject(
+ vm_map_t map,
+ vm_offset_t *addrp,
+ vm_size_t size,
+ vm_tag_t tag);
+
+extern kern_return_t kernel_memory_populate(
+ vm_map_t map,
+ vm_offset_t addr,
+ vm_size_t size,
+ int flags,
+ vm_tag_t tag);
+
+extern void kernel_memory_depopulate(
+ vm_map_t map,
+ vm_offset_t addr,
+ vm_size_t size,
+ int flags);
+
+extern kern_return_t memory_object_iopl_request(
+ ipc_port_t port,
+ memory_object_offset_t offset,
+ upl_size_t *upl_size,
+ upl_t *upl_ptr,
+ upl_page_info_array_t user_page_list,
+ unsigned int *page_list_count,
+ upl_control_flags_t *flags);
+
+struct mach_memory_info;
+extern kern_return_t vm_page_diagnose(struct mach_memory_info * sites,
+ unsigned int num_sites);
+
+extern vm_tag_t vm_tag_bt(void);
+
+extern vm_tag_t vm_tag_alloc(vm_allocation_site_t * site);
+
+extern void vm_tag_alloc_locked(vm_allocation_site_t * site);
+
+extern vm_tag_t vm_tag_bt_debug(void);
+
+extern boolean_t vm_kernel_map_is_kernel(vm_map_t map);
+
+extern ppnum_t kernel_pmap_present_mapping(uint64_t vaddr, uint64_t * pvincr);
+
+#else /* XNU_KERNEL_PRIVATE */
+
+extern kern_return_t kmem_alloc(
+ vm_map_t map,
+ vm_offset_t *addrp,
+ vm_size_t size);
+
+extern kern_return_t kmem_alloc_pageable(
+ vm_map_t map,
+ vm_offset_t *addrp,
+ vm_size_t size);
extern kern_return_t kmem_alloc_kobject(
vm_map_t map,
vm_offset_t *addrp,
vm_size_t size);
+extern void kmem_free(
+ vm_map_t map,
+ vm_offset_t addr,
+ vm_size_t size);
+
+#endif /* !XNU_KERNEL_PRIVATE */
+
+
#ifdef MACH_KERNEL_PRIVATE
extern void kmem_init(
vm_offset_t start,
- vm_offset_t end) __attribute__((section("__TEXT, initcode")));
+ vm_offset_t end);
extern kern_return_t copyinmap(
memory_object_t pager,
vm_object_offset_t file_off);
+extern kern_return_t kmem_alloc_external(
+ vm_map_t map,
+ vm_offset_t *addrp,
+ vm_size_t size);
+
+extern kern_return_t kmem_alloc_kobject_external(
+ vm_map_t map,
+ vm_offset_t *addrp,
+ vm_size_t size);
+
+extern kern_return_t kmem_alloc_pageable_external(
+ vm_map_t map,
+ vm_offset_t *addrp,
+ vm_size_t size);
+
#endif /* MACH_KERNEL_PRIVATE */
extern vm_map_t kernel_map;
#endif /* KERNEL_PRIVATE */
+#ifdef KERNEL
+
+extern vm_offset_t vm_kernel_addrperm_ext;
+
+extern void vm_kernel_addrperm_external(
+ vm_offset_t addr,
+ vm_offset_t *perm_addr);
+
+extern void vm_kernel_unslide_or_perm_external(
+ vm_offset_t addr,
+ vm_offset_t *up_addr);
+#endif /* KERNEL */
#endif /* _VM_VM_KERN_H_ */