]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/vm/vm_shared_memory_server.h
xnu-792.18.15.tar.gz
[apple/xnu.git] / osfmk / vm / vm_shared_memory_server.h
index fcf2622be30b4c194074281d8f3fa9d3cac4f18b..ca5e06f1157b595fdcdebaaa0eaadd7229cceea9 100644 (file)
@@ -1,14 +1,19 @@
 /*
  * Copyright (c) 2000-2004 Apple Computer, Inc. All rights reserved.
  *
- * @APPLE_LICENSE_HEADER_START@
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this
- * file.
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ * 
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
  * 
  * The Original Code and all software distributed under the License are
  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
@@ -18,7 +23,7 @@
  * Please see the License for the specific language governing rights and
  * limitations under the License.
  * 
- * @APPLE_LICENSE_HEADER_END@
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
  */
 /*
  *
@@ -38,6 +43,7 @@
 #include <mach/shared_memory_server.h>
 
 #include <kern/kern_types.h>
+#include <kern/macro_help.h>
 
 #if DEBUG
 extern int shared_region_debug;
@@ -51,8 +57,17 @@ extern int shared_region_debug;
 #define SHARED_REGION_DEBUG(args)
 #endif /* DEBUG */
 
-extern mach_port_t      shared_text_region_handle;
-extern mach_port_t      shared_data_region_handle;
+extern int shared_region_trace_level;
+#define SHARED_REGION_TRACE_NONE       0       /* no trace */
+#define SHARED_REGION_TRACE_ERROR      1       /* trace abnormal events */
+#define SHARED_REGION_TRACE_CONFLICT   2       /* trace library conflicts */
+#define SHARED_REGION_TRACE_INFO       3       /* trace all events */
+#define SHARED_REGION_TRACE(level, args)               \
+       MACRO_BEGIN                                     \
+       if (level <= shared_region_trace_level) {       \
+               printf args;                            \
+       }                                               \
+       MACRO_END
 
 struct shared_region_task_mappings {
        mach_port_t             text_region;
@@ -141,7 +156,7 @@ typedef struct shared_region_object_chain *shared_region_object_chain_t;
 /* address space shared region descriptor */
 struct shared_region_mapping {
         decl_mutex_data(,       Lock)   /* Synchronization */
-       int                     ref_count;
+       unsigned int            ref_count;
        unsigned int            fs_base;
        unsigned int            system;
        mach_port_t             text_region;
@@ -174,16 +189,6 @@ struct shared_region_mapping ;
 #define load_file_hash(file_object, size) \
                ((((natural_t)file_object) & 0xffffff) % size)
 
-extern kern_return_t copyin_shared_file(
-                               vm_offset_t             mapped_file,
-                               vm_size_t               mapped_file_size,
-                               vm_offset_t             *base_address,
-                               int                     map_cnt,
-                               sf_mapping_t            *mappings,
-                               memory_object_control_t         file_control,
-                               shared_region_task_mappings_t   shared_region,
-                               int                     *flags);
-
 extern kern_return_t map_shared_file(
        int                             map_cnt,
        struct shared_file_mapping_np   *mappings,
@@ -222,7 +227,9 @@ extern kern_return_t shared_region_mapping_create(
                                vm_offset_t             client_base,
                                shared_region_mapping_t *shared_region,
                                vm_offset_t             alt_base,
-                               vm_offset_t             alt_next);
+                               vm_offset_t             alt_next,
+                               int                     fs_base,
+                               int                     system);
 
 extern kern_return_t shared_region_mapping_ref(
                                shared_region_mapping_t shared_region);
@@ -268,7 +275,9 @@ __private_extern__ struct load_struct *lsf_remove_regions_mappings_lock(
 extern unsigned int lsf_mapping_pool_gauge(void);
 
 extern kern_return_t shared_file_create_system_region(
-       shared_region_mapping_t *shared_region);
+       shared_region_mapping_t *shared_region,
+       int                     fs_base,
+       int                     system);
 
 extern void remove_all_shared_regions(void);
 
@@ -280,10 +289,6 @@ extern struct load_struct *lsf_remove_regions_mappings(
        shared_region_mapping_t region,
        shared_region_task_mappings_t   sm_info);
 
-extern kern_return_t shared_region_mapping_set_alt_next(
-               shared_region_mapping_t shared_region,
-               vm_offset_t             alt_next);
-
 extern void mach_memory_entry_port_release(ipc_port_t port);
 extern void mach_destroy_memory_entry(ipc_port_t port);
 
@@ -292,6 +297,20 @@ extern kern_return_t mach_memory_entry_purgable_control(
        vm_purgable_t   control,
        int             *state);
 
+extern kern_return_t mach_memory_entry_page_op(
+       ipc_port_t              entry_port,
+       vm_object_offset_t      offset,
+       int                     ops,
+       ppnum_t                 *phys_entry,
+       int                     *flags);
+
+extern kern_return_t mach_memory_entry_range_op(
+       ipc_port_t              entry_port,
+       vm_object_offset_t      offset_beg,
+       vm_object_offset_t      offset_end,
+       int                     ops,
+       int                     *range);
+
 #endif /* KERNEL_PRIVATE */
 
 #endif /* _VM_SHARED_MEMORY_SERVER_H_ */