vm_pageout.h (8876) | vm_pageout.h (9507) |
---|---|
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_pageout.h,v 1.11 1995/04/09 06:03:55 davidg Exp $ | 64 * $Id: vm_pageout.h,v 1.12 1995/05/30 08:16:20 rgrimes Exp $ |
65 */ 66 67#ifndef _VM_VM_PAGEOUT_H_ 68#define _VM_VM_PAGEOUT_H_ 69 70/* 71 * Header file for pageout daemon. 72 */ 73 74/* 75 * Exported data structures. 76 */ 77 78extern int vm_page_max_wired; 79extern int vm_pages_needed; /* should be some "event" structure */ | 65 */ 66 67#ifndef _VM_VM_PAGEOUT_H_ 68#define _VM_VM_PAGEOUT_H_ 69 70/* 71 * Header file for pageout daemon. 72 */ 73 74/* 75 * Exported data structures. 76 */ 77 78extern int vm_page_max_wired; 79extern int vm_pages_needed; /* should be some "event" structure */ |
80simple_lock_data_t vm_pages_needed_lock; | |
81extern int vm_pageout_pages_needed; 82 83#define VM_PAGEOUT_ASYNC 0 84#define VM_PAGEOUT_SYNC 1 85#define VM_PAGEOUT_FORCE 2 86 87/* 88 * Exported routines. 89 */ 90 91/* 92 * Signal pageout-daemon and wait for it. 93 */ 94 95static inline void 96pagedaemon_wakeup() 97{ 98 if (!vm_pages_needed && curproc != pageproc) { 99 vm_pages_needed++; | 80extern int vm_pageout_pages_needed; 81 82#define VM_PAGEOUT_ASYNC 0 83#define VM_PAGEOUT_SYNC 1 84#define VM_PAGEOUT_FORCE 2 85 86/* 87 * Exported routines. 88 */ 89 90/* 91 * Signal pageout-daemon and wait for it. 92 */ 93 94static inline void 95pagedaemon_wakeup() 96{ 97 if (!vm_pages_needed && curproc != pageproc) { 98 vm_pages_needed++; |
100 wakeup((caddr_t) &vm_pages_needed); | 99 wakeup(&vm_pages_needed); |
101 } 102} 103 104#define VM_WAIT vm_wait() 105 106static inline void 107vm_wait() 108{ 109 int s; 110 111 s = splhigh(); 112 if (curproc == pageproc) { 113 vm_pageout_pages_needed = 1; | 100 } 101} 102 103#define VM_WAIT vm_wait() 104 105static inline void 106vm_wait() 107{ 108 int s; 109 110 s = splhigh(); 111 if (curproc == pageproc) { 112 vm_pageout_pages_needed = 1; |
114 tsleep((caddr_t) &vm_pageout_pages_needed, PSWP, "vmwait", 0); | 113 tsleep(&vm_pageout_pages_needed, PSWP, "vmwait", 0); |
115 } else { 116 if (!vm_pages_needed) { 117 vm_pages_needed++; | 114 } else { 115 if (!vm_pages_needed) { 116 vm_pages_needed++; |
118 wakeup((caddr_t) &vm_pages_needed); | 117 wakeup(&vm_pages_needed); |
119 } | 118 } |
120 tsleep((caddr_t) &cnt.v_free_count, PVM, "vmwait", 0); | 119 tsleep(&cnt.v_free_count, PVM, "vmwait", 0); |
121 } 122 splx(s); 123} 124 125 126#ifdef KERNEL 127void vm_daemon __P((void)); 128int vm_pageout_scan __P((void)); 129void vm_pageout_page __P((vm_page_t, vm_object_t)); 130void vm_pageout_cluster __P((vm_page_t, vm_object_t)); 131int vm_pageout_clean __P((vm_page_t, int)); 132 133#endif 134 135#endif | 120 } 121 splx(s); 122} 123 124 125#ifdef KERNEL 126void vm_daemon __P((void)); 127int vm_pageout_scan __P((void)); 128void vm_pageout_page __P((vm_page_t, vm_object_t)); 129void vm_pageout_cluster __P((vm_page_t, vm_object_t)); 130int vm_pageout_clean __P((vm_page_t, int)); 131 132#endif 133 134#endif |