vm_map.h (43209) | vm_map.h (43748) |
---|---|
1/* 2 * Copyright (c) 1991, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * The Mach Operating System project at Carnegie-Mellon University. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 47 unchanged lines hidden (view full) --- 56 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU 57 * School of Computer Science 58 * Carnegie Mellon University 59 * Pittsburgh PA 15213-3890 60 * 61 * any improvements or extensions that they make and grant Carnegie the 62 * rights to redistribute these changes. 63 * | 1/* 2 * Copyright (c) 1991, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * The Mach Operating System project at Carnegie-Mellon University. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 47 unchanged lines hidden (view full) --- 56 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU 57 * School of Computer Science 58 * Carnegie Mellon University 59 * Pittsburgh PA 15213-3890 60 * 61 * any improvements or extensions that they make and grant Carnegie the 62 * rights to redistribute these changes. 63 * |
64 * $Id: vm_map.h,v 1.33 1999/01/06 23:05:42 julian Exp $ | 64 * $Id: vm_map.h,v 1.34 1999/01/26 02:49:52 julian Exp $ |
65 */ 66 67/* 68 * Virtual memory map module definitions. 69 */ 70 71#ifndef _VM_MAP_ 72#define _VM_MAP_ --- 9 unchanged lines hidden (view full) --- 82/* 83 * Objects which live in maps may be either VM objects, or 84 * another map (called a "sharing map") which denotes read-write 85 * sharing with other maps. 86 */ 87 88union vm_map_object { 89 struct vm_object *vm_object; /* object object */ | 65 */ 66 67/* 68 * Virtual memory map module definitions. 69 */ 70 71#ifndef _VM_MAP_ 72#define _VM_MAP_ --- 9 unchanged lines hidden (view full) --- 82/* 83 * Objects which live in maps may be either VM objects, or 84 * another map (called a "sharing map") which denotes read-write 85 * sharing with other maps. 86 */ 87 88union vm_map_object { 89 struct vm_object *vm_object; /* object object */ |
90 struct vm_map *share_map; /* share map */ | |
91 struct vm_map *sub_map; /* belongs to another map */ 92}; 93 94/* 95 * Address map entries consist of start and end addresses, 96 * a VM object (or sharing map) and offset into that object, 97 * and user-exported inheritance and protection information. 98 * Also included is control information for virtual copy operations. --- 9 unchanged lines hidden (view full) --- 108 u_char eflags; /* map entry flags */ 109 /* Only in task maps: */ 110 vm_prot_t protection; /* protection code */ 111 vm_prot_t max_protection; /* maximum protection */ 112 vm_inherit_t inheritance; /* inheritance */ 113 int wired_count; /* can be paged if = 0 */ 114}; 115 | 90 struct vm_map *sub_map; /* belongs to another map */ 91}; 92 93/* 94 * Address map entries consist of start and end addresses, 95 * a VM object (or sharing map) and offset into that object, 96 * and user-exported inheritance and protection information. 97 * Also included is control information for virtual copy operations. --- 9 unchanged lines hidden (view full) --- 107 u_char eflags; /* map entry flags */ 108 /* Only in task maps: */ 109 vm_prot_t protection; /* protection code */ 110 vm_prot_t max_protection; /* maximum protection */ 111 vm_inherit_t inheritance; /* inheritance */ 112 int wired_count; /* can be paged if = 0 */ 113}; 114 |
116#define MAP_ENTRY_IS_A_MAP 0x1 | 115#define MAP_ENTRY_UNUSED_01 0x1 |
117#define MAP_ENTRY_IS_SUB_MAP 0x2 118#define MAP_ENTRY_COW 0x4 119#define MAP_ENTRY_NEEDS_COPY 0x8 120#define MAP_ENTRY_NOFAULT 0x10 121#define MAP_ENTRY_USER_WIRED 0x20 122 123/* 124 * Maps are doubly-linked lists of map entries, kept sorted --- 35 unchanged lines hidden (view full) --- 160 segsz_t vm_ssize; /* stack size (pages) */ 161 caddr_t vm_taddr; /* user virtual address of text XXX */ 162 caddr_t vm_daddr; /* user virtual address of data XXX */ 163 caddr_t vm_maxsaddr; /* user VA at max stack growth */ 164 caddr_t vm_minsaddr; /* user VA at max stack growth */ 165}; 166 167 | 116#define MAP_ENTRY_IS_SUB_MAP 0x2 117#define MAP_ENTRY_COW 0x4 118#define MAP_ENTRY_NEEDS_COPY 0x8 119#define MAP_ENTRY_NOFAULT 0x10 120#define MAP_ENTRY_USER_WIRED 0x20 121 122/* 123 * Maps are doubly-linked lists of map entries, kept sorted --- 35 unchanged lines hidden (view full) --- 159 segsz_t vm_ssize; /* stack size (pages) */ 160 caddr_t vm_taddr; /* user virtual address of text XXX */ 161 caddr_t vm_daddr; /* user virtual address of data XXX */ 162 caddr_t vm_maxsaddr; /* user VA at max stack growth */ 163 caddr_t vm_minsaddr; /* user VA at max stack growth */ 164}; 165 166 |
167#if 0 |
|
168/* 169 * Map versions are used to validate a previous lookup attempt. 170 * 171 * Since lookup operations may involve both a main map and 172 * a sharing map, it is necessary to have a timestamp from each. 173 * [If the main map timestamp has changed, the share_map and 174 * associated timestamp are no longer valid; the map version 175 * does not include a reference for the embedded share_map.] 176 */ 177typedef struct { 178 int main_timestamp; | 168/* 169 * Map versions are used to validate a previous lookup attempt. 170 * 171 * Since lookup operations may involve both a main map and 172 * a sharing map, it is necessary to have a timestamp from each. 173 * [If the main map timestamp has changed, the share_map and 174 * associated timestamp are no longer valid; the map version 175 * does not include a reference for the embedded share_map.] 176 */ 177typedef struct { 178 int main_timestamp; |
179 vm_map_t share_map; | |
180 int share_timestamp; 181} vm_map_version_t; 182 | 179 int share_timestamp; 180} vm_map_version_t; 181 |
182#endif 183 |
|
183/* 184 * Macros: vm_map_lock, etc. 185 * Function: 186 * Perform locking on the data portion of a map. 187 */ 188 189#define vm_map_lock_drain_interlock(map) { \ 190 lockmgr(&(map)->lock, LK_DRAIN|LK_INTERLOCK, \ --- 153 unchanged lines hidden --- | 184/* 185 * Macros: vm_map_lock, etc. 186 * Function: 187 * Perform locking on the data portion of a map. 188 */ 189 190#define vm_map_lock_drain_interlock(map) { \ 191 lockmgr(&(map)->lock, LK_DRAIN|LK_INTERLOCK, \ --- 153 unchanged lines hidden --- |