X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/9bccf70c0258c7cac2dcb80011b2a964d884c552..5eebf7385fedb1517b66b53c28e5aa6bb0a2be50:/osfmk/vm/vm_shared_memory_server.h diff --git a/osfmk/vm/vm_shared_memory_server.h b/osfmk/vm/vm_shared_memory_server.h index 259be7ea1..5d3254b2b 100644 --- a/osfmk/vm/vm_shared_memory_server.h +++ b/osfmk/vm/vm_shared_memory_server.h @@ -52,12 +52,20 @@ struct shared_region_task_mappings { vm_offset_t client_base; vm_offset_t alternate_base; vm_offset_t alternate_next; + unsigned int fs_base; + unsigned int system; int flags; vm_offset_t self; }; -#define SHARED_REGION_SYSTEM 0x1 -#define SHARED_REGION_FULL 0x2 +#define SHARED_REGION_SYSTEM 0x1 // Default env for system and fs_root +#define SHARED_REGION_FULL 0x2 // Shared regions are full +#define SHARED_REGION_STALE 0x4 // Indicates no longer in default list + + +/* defines for default environment, and co-resident systems */ + +#define ENV_DEFAULT_ROOT 0 typedef struct shared_region_task_mappings *shared_region_task_mappings_t; typedef struct shared_region_mapping *shared_region_mapping_t; @@ -90,6 +98,7 @@ struct load_struct { vm_offset_t base_address; int mapping_cnt; loaded_mapping_t *mappings; + vm_offset_t file_offset; // start of file we mapped in }; typedef struct load_struct load_struct_t; @@ -122,6 +131,8 @@ typedef struct shared_region_object_chain *shared_region_object_chain_t; struct shared_region_mapping { decl_mutex_data(, Lock) /* Synchronization */ int ref_count; + unsigned int fs_base; + unsigned int system; mach_port_t text_region; vm_size_t text_size; mach_port_t data_region; @@ -132,6 +143,7 @@ struct shared_region_mapping { vm_offset_t alternate_next; int flags; int depth; + shared_region_mapping_t default_env_list; shared_region_object_chain_t object_chain; shared_region_mapping_t self; shared_region_mapping_t next; @@ -168,6 +180,8 @@ extern kern_return_t shared_region_mapping_info( vm_offset_t *client_base, vm_offset_t *alternate_base, vm_offset_t *alternate_next, + unsigned int *fs_base, + unsigned int *system, int *flags, shared_region_mapping_t *next); @@ -188,6 +202,10 @@ extern kern_return_t shared_region_mapping_ref( extern kern_return_t shared_region_mapping_dealloc( shared_region_mapping_t shared_region); +__private_extern__ kern_return_t shared_region_mapping_dealloc_lock( + shared_region_mapping_t shared_region, + int need_lock); + extern kern_return_t shared_region_object_chain_attach( shared_region_mapping_t target_region, shared_region_mapping_t object_chain); @@ -200,6 +218,20 @@ extern kern_return_t vm_set_shared_region( task_t task, shared_region_mapping_t shared_region); +extern shared_region_mapping_t update_default_shared_region( + shared_region_mapping_t new_system_region); + +extern shared_region_mapping_t lookup_default_shared_region( + unsigned int fs_base, + unsigned int system); + +extern void remove_default_shared_region( + shared_region_mapping_t system_region); + +__private_extern__ void remove_default_shared_region_lock( + shared_region_mapping_t system_region, + int need_lock); + extern unsigned int lsf_mapping_pool_gauge(); #endif /* __APPLE_API_PRIVATE */