]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/vm/vm_kern.h
xnu-3247.1.106.tar.gz
[apple/xnu.git] / osfmk / vm / vm_kern.h
index 6fd232e46eece41a4a206d8ac692826f5b78e8b4..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
@@ -99,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,
@@ -136,23 +144,75 @@ 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_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);
+       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(
@@ -179,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;
@@ -187,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_ */