|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights ! 7: * Reserved. This file contains Original Code and/or Modifications of ! 8: * Original Code as defined in and that are subject to the Apple Public ! 9: * Source License Version 1.1 (the "License"). You may not use this file ! 10: * except in compliance with the License. Please obtain a copy of the ! 11: * License at http://www.apple.com/publicsource and read it before using ! 12: * this file. ! 13: * ! 14: * The Original Code and all software distributed under the License are ! 15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 19: * License for the specific language governing rights and limitations ! 20: * under the License. ! 21: * ! 22: * @APPLE_LICENSE_HEADER_END@ ! 23: */ ! 24: ! 25: /* ! 26: * Mach Operating System ! 27: * Copyright (c) 1987 Carnegie-Mellon University ! 28: * All rights reserved. The CMU software License Agreement specifies ! 29: * the terms and conditions for use and redistribution. ! 30: */ ! 31: /* ! 32: * File: vm/vm_pager.c ! 33: * Author: Avadis Tevanian, Jr., Michael Wayne Young ! 34: * ! 35: * Copyright (C) 1986, Avadis Tevanian, Jr., Michael Wayne Young ! 36: * Copyright (C) 1985, Avadis Tevanian, Jr., Michael Wayne Young ! 37: * ! 38: * Paging space routine stubs. Emulates a matchmaker-like interface ! 39: * for builtin pagers. ! 40: */ ! 41: ! 42: #import <mach/kern_return.h> ! 43: #import <vm/vm_pager.h> ! 44: #import <vm/vm_page.h> ! 45: #import <mach/vm_prot.h> ! 46: #import <mach/boolean.h> ! 47: #import <vm/vnode_pager.h> ! 48: ! 49: #import <vm/pmap.h> ! 50: ! 51: /* ! 52: * Important note: ! 53: * All of these routines gain a reference to the ! 54: * object (first argument) as part of the automatic ! 55: * argument conversion. Explicit deallocation is necessary. ! 56: */ ! 57: ! 58: extern ! 59: boolean_t vm_page_zero_fill(); ! 60: ! 61: pager_return_t vm_pager_get(pager, m, error) ! 62: vm_pager_t pager; ! 63: vm_page_t m; ! 64: int *error; ! 65: { ! 66: if (pager == vm_pager_null) { ! 67: (void) vm_page_zero_fill(m); ! 68: return(PAGER_SUCCESS); ! 69: } ! 70: if (pager->is_device) ! 71: panic("vm_pager_get device"); ! 72: return(vnode_pagein(m, error)); ! 73: } ! 74: ! 75: pager_return_t vm_pager_put(pager, m) ! 76: vm_pager_t pager; ! 77: vm_page_t m; ! 78: { ! 79: if (pager == vm_pager_null) ! 80: panic("vm_pager_put: null pager"); ! 81: if (pager->is_device) ! 82: panic("vm_pager_put device"); ! 83: return(vnode_pageout(m)); ! 84: } ! 85: ! 86: void vm_pager_deallocate(pager) ! 87: vm_pager_t pager; ! 88: { ! 89: if (pager == vm_pager_null) ! 90: panic("vm_pager_deallocate: null pager"); ! 91: if (pager->is_device) ! 92: panic("vm_pager_deallocate device"); ! 93: vnode_dealloc(pager); ! 94: } ! 95: ! 96: vm_pager_t vm_pager_allocate(size) ! 97: vm_size_t size; ! 98: { ! 99: return((vm_pager_t)vnode_alloc(size)); ! 100: } ! 101: ! 102: boolean_t vm_pager_has_page(pager, offset) ! 103: vm_pager_t pager; ! 104: vm_offset_t offset; ! 105: { ! 106: if ((pager == vm_pager_null) || pager->is_device) ! 107: panic("vm_pager_has_page"); ! 108: return(vnode_has_page(pager,offset)); ! 109: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.