Deleted Added
full compact
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