/* * Copyright (c) 2007 Apple Inc. All rights reserved. * * @APPLE_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. * * 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, 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: vm/vm_shared_region.h * * protos and struct definitions for shared region */ #ifndef _VM_SHARED_REGION_H_ #define _VM_SHARED_REGION_H_ #ifdef KERNEL_PRIVATE #include #include #include #include #include #include extern int shared_region_version; extern int shared_region_persistence; #if DEBUG extern int shared_region_debug; #define SHARED_REGION_DEBUG(args) \ MACRO_BEGIN \ if (shared_region_debug) { \ kprintf args; \ } \ MACRO_END #else /* DEBUG */ #define SHARED_REGION_DEBUG(args) #endif /* DEBUG */ extern int shared_region_trace_level; extern struct vm_shared_region *primary_system_shared_region; #define SHARED_REGION_TRACE_NONE_LVL 0 /* no trace */ #define SHARED_REGION_TRACE_ERROR_LVL 1 /* trace abnormal events */ #define SHARED_REGION_TRACE_INFO_LVL 2 /* trace all events */ #define SHARED_REGION_TRACE_DEBUG_LVL 3 /* extra traces for debug */ #define SHARED_REGION_TRACE(level, args) \ MACRO_BEGIN \ if (shared_region_trace_level >= level) { \ printf args; \ } \ MACRO_END #define SHARED_REGION_TRACE_NONE(args) #define SHARED_REGION_TRACE_ERROR(args) \ MACRO_BEGIN \ SHARED_REGION_TRACE(SHARED_REGION_TRACE_ERROR_LVL, \ args); \ MACRO_END #define SHARED_REGION_TRACE_INFO(args) \ MACRO_BEGIN \ SHARED_REGION_TRACE(SHARED_REGION_TRACE_INFO_LVL, \ args); \ MACRO_END #define SHARED_REGION_TRACE_DEBUG(args) \ MACRO_BEGIN \ SHARED_REGION_TRACE(SHARED_REGION_TRACE_DEBUG_LVL, \ args); \ MACRO_END typedef struct vm_shared_region *vm_shared_region_t; #ifndef MACH_KERNEL_PRIVATE struct vm_shared_region; struct vm_shared_region_slide_info; struct vm_shared_region_slide_info_entry; struct slide_info_entry_toc; #endif /* MACH_KERNEL_PRIVATE */ struct _sr_file_mappings { int fd; uint32_t mappings_count; struct shared_file_mapping_slide_np *mappings; uint32_t slide; struct fileproc *fp; struct vnode *vp; memory_object_size_t file_size; memory_object_control_t file_control; }; #endif /* KERNEL_PRIVATE */ #endif /* _VM_SHARED_REGION_H_ */