#ifndef _MACH_SHARED_REGION_H_
#define _MACH_SHARED_REGION_H_
#include <sys/cdefs.h>
#include <mach/vm_prot.h>
#include <mach/vm_types.h>
#include <mach/mach_types.h>
#define SHARED_REGION_BASE_I386 0x90000000ULL
#define SHARED_REGION_SIZE_I386 0x20000000ULL
#define SHARED_REGION_NESTING_BASE_I386 0x90000000ULL
#define SHARED_REGION_NESTING_SIZE_I386 0x20000000ULL
#define SHARED_REGION_NESTING_MIN_I386 0x00200000ULL
#define SHARED_REGION_NESTING_MAX_I386 0xFFE00000ULL
#define SHARED_REGION_BASE_X86_64 0x00007FFF70000000ULL
#define SHARED_REGION_SIZE_X86_64 0x000000008FE00000ULL
#define SHARED_REGION_NESTING_BASE_X86_64 0x00007FFF80000000ULL
#define SHARED_REGION_NESTING_SIZE_X86_64 0x0000000040000000ULL
#define SHARED_REGION_NESTING_MIN_X86_64 0x0000000000200000ULL
#define SHARED_REGION_NESTING_MAX_X86_64 0xFFFFFFFFFFE00000ULL
#define SHARED_REGION_BASE_PPC 0x90000000ULL
#define SHARED_REGION_SIZE_PPC 0x20000000ULL
#define SHARED_REGION_NESTING_BASE_PPC 0x90000000ULL
#define SHARED_REGION_NESTING_SIZE_PPC 0x10000000ULL
#define SHARED_REGION_NESTING_MIN_PPC 0x10000000ULL
#define SHARED_REGION_NESTING_MAX_PPC 0x10000000ULL
#define SHARED_REGION_BASE_PPC64 0x00007FFF60000000ULL
#define SHARED_REGION_SIZE_PPC64 0x00000000A0000000ULL
#define SHARED_REGION_NESTING_BASE_PPC64 0x00007FFF60000000ULL
#define SHARED_REGION_NESTING_SIZE_PPC64 0x00000000A0000000ULL
#define SHARED_REGION_NESTING_MIN_PPC64 0x0000000010000000ULL
#define SHARED_REGION_NESTING_MAX_PPC64 0x0000000010000000ULL
#define SHARED_REGION_BASE_ARM 0x30000000ULL
#define SHARED_REGION_SIZE_ARM 0x10000000ULL
#define SHARED_REGION_NESTING_BASE_ARM 0x30000000ULL
#define SHARED_REGION_NESTING_SIZE_ARM 0x08000000ULL
#define SHARED_REGION_NESTING_MIN_ARM ?
#define SHARED_REGION_NESTING_MAX_ARM ?
#if defined(__i386__)
#define SHARED_REGION_BASE SHARED_REGION_BASE_I386
#define SHARED_REGION_SIZE SHARED_REGION_SIZE_I386
#define SHARED_REGION_NESTING_BASE SHARED_REGION_NESTING_BASE_I386
#define SHARED_REGION_NESTING_SIZE SHARED_REGION_NESTING_SIZE_I386
#define SHARED_REGION_NESTING_MIN SHARED_REGION_NESTING_MIN_I386
#define SHARED_REGION_NESTING_MAX SHARED_REGION_NESTING_MAX_I386
#elif defined(__x86_64__)
#define SHARED_REGION_BASE SHARED_REGION_BASE_X86_64
#define SHARED_REGION_SIZE SHARED_REGION_SIZE_X86_64
#define SHARED_REGION_NESTING_BASE SHARED_REGION_NESTING_BASE_X86_64
#define SHARED_REGION_NESTING_SIZE SHARED_REGION_NESTING_SIZE_X86_64
#define SHARED_REGION_NESTING_MIN SHARED_REGION_NESTING_MIN_X86_64
#define SHARED_REGION_NESTING_MAX SHARED_REGION_NESTING_MAX_X86_64
#elif defined(__ppc__)
#define SHARED_REGION_BASE SHARED_REGION_BASE_PPC
#define SHARED_REGION_SIZE SHARED_REGION_SIZE_PPC
#define SHARED_REGION_NESTING_BASE SHARED_REGION_NESTING_BASE_PPC
#define SHARED_REGION_NESTING_SIZE SHARED_REGION_NESTING_SIZE_PPC
#define SHARED_REGION_NESTING_MIN SHARED_REGION_NESTING_MIN_PPC
#define SHARED_REGION_NESTING_MAX SHARED_REGION_NESTING_MAX_PPC
#elif defined(__ppc64__)
#define SHARED_REGION_BASE SHARED_REGION_BASE_PPC64
#define SHARED_REGION_SIZE SHARED_REGION_SIZE_PPC64
#define SHARED_REGION_NESTING_BASE SHARED_REGION_NESTING_BASE_PPC64
#define SHARED_REGION_NESTING_SIZE SHARED_REGION_NESTING_SIZE_PPC64
#define SHARED_REGION_NESTING_MIN SHARED_REGION_NESTING_MIN_PPC64
#define SHARED_REGION_NESTING_MAX SHARED_REGION_NESTING_MAX_PPC64
#endif
#ifdef KERNEL_PRIVATE
void post_sys_powersource(int);
#endif
struct shared_file_mapping_np {
mach_vm_address_t sfm_address;
mach_vm_size_t sfm_size;
mach_vm_offset_t sfm_file_offset;
vm_prot_t sfm_max_prot;
vm_prot_t sfm_init_prot;
};
#define VM_PROT_COW 0x8
#define VM_PROT_ZF 0x10
#ifndef KERNEL
__BEGIN_DECLS
int shared_region_check_np(uint64_t *startaddress);
int shared_region_map_np(int fd,
uint32_t mappingCount,
const struct shared_file_mapping_np *mappings);
__END_DECLS
#endif
#endif