]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/vm/vm_kern.h
xnu-3248.60.10.tar.gz
[apple/xnu.git] / osfmk / vm / vm_kern.h
index 1c03bac0cc44be29cc3510e00696754fc93b1197..435dae135bafdee461efe51595216745814dd057 100644 (file)
 
 #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
@@ -88,6 +91,9 @@ extern kern_return_t  kernel_memory_allocate(
 #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,
@@ -96,29 +102,34 @@ extern kern_return_t kmem_alloc_contig(
                                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,
@@ -133,17 +144,80 @@ extern kern_return_t      kmem_suballoc(
                                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(
@@ -165,6 +239,21 @@ extern kern_return_t       vm_conflict_check(
                                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;
@@ -173,4 +262,16 @@ extern vm_map_t ipc_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_ */