]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/mach/shared_memory_server.h
xnu-344.49.tar.gz
[apple/xnu.git] / osfmk / mach / shared_memory_server.h
index 2f31ef1fc4659f48ff780d4a85e3b101637f4007..03195e2c52f49b011ec3e599c1b3c55e2c32c5a5 100644 (file)
@@ -3,35 +3,38 @@
  *
  * @APPLE_LICENSE_HEADER_START@
  * 
- * The contents of this file constitute Original Code as defined in and
- * are subject to the Apple Public Source License Version 1.1 (the
- * "License").  You may not use this file except in compliance with the
- * License.  Please obtain a copy of the License at
- * http://www.apple.com/publicsource and read it before using this file.
+ * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
  * 
- * This Original Code and all software distributed under the License are
- * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * 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.
+ * 
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
- * License for the specific language governing rights and limitations
- * under the License.
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
  * 
  * @APPLE_LICENSE_HEADER_END@
  */
 /*
  *
- *     File: kern/shared_memory_server.h
+ *     File: mach/shared_memory_server.h
  *
  *     protos and struct definitions for shared library
  *     server and interface
  */
-#ifndef _SHARED_MEMORY_SERVER_H_
-#define _SHARED_MEMORY_SERVER_H_
+#ifndef _MACH_SHARED_MEMORY_SERVER_H_
+#define _MACH_SHARED_MEMORY_SERVER_H_
 
 #define        SHARED_LIBRARY_SERVER_SUPPORTED
-#define GLOBAL_SHARED_TEXT_SEGMENT 0x70000000
-#define GLOBAL_SHARED_DATA_SEGMENT 0x80000000
+#define GLOBAL_SHARED_TEXT_SEGMENT 0x90000000
+#define GLOBAL_SHARED_DATA_SEGMENT 0xA0000000
 #define GLOBAL_SHARED_SEGMENT_MASK 0xF0000000
 
 #define                SHARED_TEXT_REGION_SIZE 0x10000000
 
 
 #include <mach/vm_prot.h>
-#ifndef MACH_KERNEL
-#include <mach/mach.h>
-#else
-#include <vm/vm_map.h>
-#endif
-
-#ifdef MACH_KERNEL_PRIVATE
-
-#include <kern/queue.h>
-#include <vm/vm_object.h>
-#include <vm/memory_object.h>
-
-extern ipc_port_t      shared_text_region_handle;
-extern ipc_port_t      shared_data_region_handle;
-#else /* MACH_KERNEL_PRIVATE */
-
-#ifdef KERNEL_PRIVATE
-extern mach_port_t      shared_text_region_handle;
-extern mach_port_t      shared_data_region_handle;
-#endif
-#endif /* MACH_KERNEL_PRIVATE*/
-
-#ifdef KERNEL_PRIVATE
-
-extern vm_offset_t     shared_file_mapping_array;
-
-
-struct shared_region_task_mappings {
-       ipc_port_t              text_region;
-       vm_size_t               text_size;
-       ipc_port_t              data_region;
-       vm_size_t               data_size;
-       vm_offset_t             region_mappings;
-       vm_offset_t             client_base;
-       vm_offset_t             alternate_base;
-       vm_offset_t             alternate_next;
-       int                     flags;
-       vm_offset_t             self;
-};
-
-#define SHARED_REGION_SYSTEM   0x1
-#define SHARED_REGION_FULL     0x2
-
-typedef        struct shared_region_task_mappings *shared_region_task_mappings_t;
-#endif /* KERNEL_PRIVATE */
-
+#include <mach/mach_types.h>
 
 #define SHARED_LIB_ALIAS  0x10
 
@@ -104,9 +62,11 @@ typedef     struct shared_region_task_mappings *shared_region_task_mappings_t;
 /* IN */
 #define ALTERNATE_LOAD_SITE 0x1
 #define NEW_LOCAL_SHARED_REGIONS 0x2
+#define        QUERY_IS_SYSTEM_REGION 0x4
 
 /* OUT */
 #define SF_PREV_LOADED    0x1
+#define SYSTEM_REGION_BACKED 0x2
 
 
 #define load_file_hash(file_object, size) \
@@ -125,107 +85,4 @@ struct sf_mapping {
 
 typedef struct sf_mapping sf_mapping_t;
 
-
-#ifdef MACH_KERNEL_PRIVATE
-
-struct loaded_mapping {
-       vm_offset_t     mapping_offset;
-       vm_size_t       size;
-       vm_offset_t     file_offset;
-       vm_prot_t       protection;  /* read/write/execute/COW/ZF */
-       
-       struct loaded_mapping *next;
-};
-
-typedef struct loaded_mapping loaded_mapping_t;
-
-struct load_struct {
-       queue_chain_t           links;  
-       shared_region_mapping_t regions_instance;
-       int                     depth;
-       int                     file_object;
-       vm_offset_t             base_address;
-       int                     mapping_cnt;
-       loaded_mapping_t        *mappings;
-};
-
-#endif /* MACH_KERNEL_PRIVATE */
-
-typedef struct load_struct load_struct_t;
-typedef struct load_struct *load_struct_ptr_t;
-
-#ifdef MACH_KERNEL_PRIVATE
-
-struct load_file_ele {
-       union {
-               sf_mapping_t    mapping;
-               load_struct_t   element;
-       } u;
-};
-
-struct shared_file_info {
-       mutex_t         lock;   /* lock for the structure */
-       queue_head_t    *hash;  /* for later perf enhance */
-       int             hash_size;
-       boolean_t       hash_init;
-};
-
-typedef struct shared_file_info shared_file_info_t;
-
-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           
-shared_file_init(               
-        ipc_port_t      *shared_text_region_handle,
-        vm_size_t       text_region_size,
-        ipc_port_t      *shared_data_region_handle,
-        vm_size_t       data_region_size, 
-        vm_offset_t     *shared_file_mapping_array);
-
-extern load_struct_t  *
-lsf_hash_lookup(   
-        queue_head_t                   *hash_table,
-        void                           *file_object,  
-        int                            size,
-       boolean_t                       alternate,
-       shared_region_task_mappings_t   sm_info);
-
-extern load_struct_t *
-lsf_hash_delete(
-        void                           *file_object,
-       vm_offset_t                     base_offset,
-       shared_region_task_mappings_t   sm_info);
-
-extern void    
-lsf_hash_insert(
-        load_struct_t   *entry,
-       shared_region_task_mappings_t   sm_info);
-
-extern kern_return_t                   
-lsf_load(
-        vm_offset_t                    mapped_file,
-        vm_size_t                              mapped_file_size,
-        vm_offset_t                            *base_address,
-        sf_mapping_t                           *mappings,
-        int                                    map_cnt,
-        void                                   *file_object,
-        int                            flags,
-       shared_region_task_mappings_t   sm_info);
-
-extern void
-lsf_unload(
-        void                           *file_object,
-       vm_offset_t                     base_offset,
-       shared_region_task_mappings_t   sm_info);
-
-#endif /* MACH_KERNEL_PRIVATE */
-#endif /* _SHARED_MEMORY_SERVER_H_ */
+#endif /* _MACH_SHARED_MEMORY_SERVER_H_ */