1/* 2 * Copyright (c) 2000-2004 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. The rights granted to you under the License 10 * may not be used to create, or enable the creation or redistribution of, 11 * unlawful or unlicensed copies of an Apple operating system, or to 12 * circumvent, violate, or enable the circumvention or violation of, any 13 * terms of an Apple operating system software license agreement. 14 * 15 * Please obtain a copy of the License at 16 * http://www.opensource.apple.com/apsl/ and read it before using this file. 17 * 18 * The Original Code and all software distributed under the License are 19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23 * Please see the License for the specific language governing rights and 24 * limitations under the License. 25 * 26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27 */ 28/* 29 * @OSF_COPYRIGHT@ 30 */ 31 32 33#ifndef _MACH_DEFAULT_PAGER_TYPES_H_ 34#define _MACH_DEFAULT_PAGER_TYPES_H_ 35 36#include <sys/appleapiopts.h> 37 38#ifdef __APPLE_API_UNSTABLE 39 40#include <mach/mach_types.h> 41#include <mach/machine/vm_types.h> 42#include <mach/memory_object_types.h> 43 44typedef memory_object_default_t default_pager_t; 45 46/* 47 * Remember to update the mig type definitions 48 * in default_pager_types.defs when adding/removing fields. 49 */ 50 51typedef struct default_pager_info { 52 vm_size_t dpi_total_space; /* size of backing store */ 53 vm_size_t dpi_free_space; /* how much of it is unused */ 54 vm_size_t dpi_page_size; /* the pager's vm page size */ 55} default_pager_info_t; 56 57typedef struct default_pager_info_64 { 58 memory_object_size_t dpi_total_space; /* size of backing store */ 59 memory_object_size_t dpi_free_space; /* how much of it is unused */ 60 vm_size_t dpi_page_size; /* the pager's vm page size */ 61 int dpi_flags; 62#define DPI_ENCRYPTED 0x1 /* swap files are encrypted */ 63} default_pager_info_64_t; 64 65typedef integer_t *backing_store_info_t; 66typedef int backing_store_flavor_t; 67typedef int *vnode_ptr_t; 68 69#define BACKING_STORE_BASIC_INFO 1 70#define BACKING_STORE_BASIC_INFO_COUNT \ 71 (sizeof(struct backing_store_basic_info)/sizeof(integer_t)) 72struct backing_store_basic_info { 73 natural_t pageout_calls; /* # pageout calls */ 74 natural_t pagein_calls; /* # pagein calls */ 75 natural_t pages_in; /* # pages paged in (total) */ 76 natural_t pages_out; /* # pages paged out (total) */ 77 natural_t pages_unavail; /* # zero-fill pages */ 78 natural_t pages_init; /* # page init requests */ 79 natural_t pages_init_writes; /* # page init writes */ 80 81 natural_t bs_pages_total; /* # pages (total) */ 82 natural_t bs_pages_free; /* # unallocated pages */ 83 natural_t bs_pages_in; /* # page read requests */ 84 natural_t bs_pages_in_fail; /* # page read errors */ 85 natural_t bs_pages_out; /* # page write requests */ 86 natural_t bs_pages_out_fail; /* # page write errors */ 87 88 integer_t bs_priority; 89 integer_t bs_clsize; 90}; 91typedef struct backing_store_basic_info *backing_store_basic_info_t; 92 93 94typedef struct default_pager_object { 95 vm_offset_t dpo_object; /* object managed by the pager */ 96 vm_size_t dpo_size; /* backing store used for the object */ 97} default_pager_object_t; 98 99typedef default_pager_object_t *default_pager_object_array_t; 100 101typedef struct default_pager_page { 102 vm_offset_t dpp_offset; /* offset of the page in its object */ 103} default_pager_page_t; 104 105typedef default_pager_page_t *default_pager_page_array_t; 106 107#define DEFAULT_PAGER_BACKING_STORE_MAXPRI 4 108 109#define HI_WAT_ALERT 0x01 110#define LO_WAT_ALERT 0x02 111#define SWAP_ENCRYPT_ON 0x04 112#define SWAP_ENCRYPT_OFF 0x08 113#define SWAP_COMPACT_DISABLE 0x10 114#define SWAP_COMPACT_ENABLE 0x20 115#define PROC_RESUME 0x40 116#define SWAP_FILE_CREATION_ERROR 0x80 117#define USE_EMERGENCY_SWAP_FILE_FIRST 0x100 118 119#endif /* __APPLE_API_UNSTABLE */ 120 121#endif /* _MACH_DEFAULT_PAGER_TYPES_H_ */ 122