Deleted Added
full compact
vm_page.h (1542) vm_page.h (1549)
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

--- 93 unchanged lines hidden (view full) ---

102 TAILQ_ENTRY(vm_page) hashq; /* hash table links (O)*/
103 TAILQ_ENTRY(vm_page) listq; /* pages in same object (O)*/
104
105 vm_object_t object; /* which object am I in (O,P)*/
106 vm_offset_t offset; /* offset into object (O,P) */
107
108 u_short wire_count; /* wired down maps refs (P) */
109 u_short flags; /* see below */
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

--- 93 unchanged lines hidden (view full) ---

102 TAILQ_ENTRY(vm_page) hashq; /* hash table links (O)*/
103 TAILQ_ENTRY(vm_page) listq; /* pages in same object (O)*/
104
105 vm_object_t object; /* which object am I in (O,P)*/
106 vm_offset_t offset; /* offset into object (O,P) */
107
108 u_short wire_count; /* wired down maps refs (P) */
109 u_short flags; /* see below */
110 short hold_count; /* page hold count */
111 u_short act_count; /* page usage count */
110
111 vm_offset_t phys_addr; /* physical address of page */
112};
113
114/*
115 * These are the flags defined for vm_page.
116 *
117 * Note: PG_FILLED and PG_DIRTY are added for the filesystems.

--- 86 unchanged lines hidden (view full) ---

204 (m)->flags |= PG_WANTED; \
205 assert_wait((int) (m), (interruptible)); \
206 }
207
208#define PAGE_WAKEUP(m) { \
209 (m)->flags &= ~PG_BUSY; \
210 if ((m)->flags & PG_WANTED) { \
211 (m)->flags &= ~PG_WANTED; \
112
113 vm_offset_t phys_addr; /* physical address of page */
114};
115
116/*
117 * These are the flags defined for vm_page.
118 *
119 * Note: PG_FILLED and PG_DIRTY are added for the filesystems.

--- 86 unchanged lines hidden (view full) ---

206 (m)->flags |= PG_WANTED; \
207 assert_wait((int) (m), (interruptible)); \
208 }
209
210#define PAGE_WAKEUP(m) { \
211 (m)->flags &= ~PG_BUSY; \
212 if ((m)->flags & PG_WANTED) { \
213 (m)->flags &= ~PG_WANTED; \
212 thread_wakeup((int) (m)); \
214 wakeup((caddr_t) (m)); \
213 } \
214 }
215
216#define vm_page_lock_queues() simple_lock(&vm_page_queue_lock)
217#define vm_page_unlock_queues() simple_unlock(&vm_page_queue_lock)
218
219#define vm_page_set_modified(m) { (m)->flags &= ~PG_CLEAN; }
220
221#define VM_PAGE_INIT(mem, object, offset) { \
222 (mem)->flags = PG_BUSY | PG_CLEAN | PG_FAKE; \
223 vm_page_insert((mem), (object), (offset)); \
224 (mem)->wire_count = 0; \
215 } \
216 }
217
218#define vm_page_lock_queues() simple_lock(&vm_page_queue_lock)
219#define vm_page_unlock_queues() simple_unlock(&vm_page_queue_lock)
220
221#define vm_page_set_modified(m) { (m)->flags &= ~PG_CLEAN; }
222
223#define VM_PAGE_INIT(mem, object, offset) { \
224 (mem)->flags = PG_BUSY | PG_CLEAN | PG_FAKE; \
225 vm_page_insert((mem), (object), (offset)); \
226 (mem)->wire_count = 0; \
227 (mem)->hold_count = 0; \
228 (mem)->act_count = 0; \
225}
226
227void vm_page_activate __P((vm_page_t));
228vm_page_t vm_page_alloc __P((vm_object_t, vm_offset_t));
229void vm_page_copy __P((vm_page_t, vm_page_t));
230void vm_page_deactivate __P((vm_page_t));
231void vm_page_free __P((vm_page_t));
232void vm_page_insert __P((vm_page_t, vm_object_t, vm_offset_t));
233vm_page_t vm_page_lookup __P((vm_object_t, vm_offset_t));
234void vm_page_remove __P((vm_page_t));
235void vm_page_rename __P((vm_page_t, vm_object_t, vm_offset_t));
229}
230
231void vm_page_activate __P((vm_page_t));
232vm_page_t vm_page_alloc __P((vm_object_t, vm_offset_t));
233void vm_page_copy __P((vm_page_t, vm_page_t));
234void vm_page_deactivate __P((vm_page_t));
235void vm_page_free __P((vm_page_t));
236void vm_page_insert __P((vm_page_t, vm_object_t, vm_offset_t));
237vm_page_t vm_page_lookup __P((vm_object_t, vm_offset_t));
238void vm_page_remove __P((vm_page_t));
239void vm_page_rename __P((vm_page_t, vm_object_t, vm_offset_t));
236void vm_page_startup __P((vm_offset_t *, vm_offset_t *));
240vm_offset_t vm_page_startup __P((vm_offset_t, vm_offset_t, vm_offset_t));
237void vm_page_unwire __P((vm_page_t));
238void vm_page_wire __P((vm_page_t));
239boolean_t vm_page_zero_fill __P((vm_page_t));
240
241void vm_page_unwire __P((vm_page_t));
242void vm_page_wire __P((vm_page_t));
243boolean_t vm_page_zero_fill __P((vm_page_t));
244
245
246/*
247 * Keep page from being freed by the page daemon
248 * much of the same effect as wiring, except much lower
249 * overhead and should be used only for *very* temporary
250 * holding ("wiring").
251 */
252static inline void
253vm_page_hold(mem)
254 vm_page_t mem;
255{
256 mem->hold_count++;
257}
258
259static inline void
260vm_page_unhold(mem)
261 vm_page_t mem;
262{
263 if( --mem->hold_count < 0)
264 panic("vm_page_unhold: hold count < 0!!!");
265}
266
241#endif /* KERNEL */
242#endif /* !_VM_PAGE_ */
267#endif /* KERNEL */
268#endif /* !_VM_PAGE_ */