|
|
Darwin 0.1 Mach+BSD kernel
/* * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. * * @APPLE_LICENSE_HEADER_START@ * * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights * Reserved. This file contains Original Code and/or Modifications of * Original Code as defined in and that are subject to the Apple Public * Source License Version 1.1 (the "License"). You may not use this file * except in compliance with the License. Please obtain a copy of the * License at http://www.apple.com/publicsource and read it before using * this file. * * The Original Code and all software distributed under the License are * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the * License for the specific language governing rights and limitations * under the License. * * @APPLE_LICENSE_HEADER_END@ */ /* * Mach Operating System * Copyright (c) 1987 Carnegie-Mellon University * All rights reserved. The CMU software License Agreement specifies * the terms and conditions for use and redistribution. */ subsystem pager 2200; /* * File: kern/pager.defs * * Abstract: * Basic Mach external memory management interface declaration. * [See kern/pager_default.defs for the interface for default pagers.] * * HISTORY * 9-Dec-87 Michael Young (mwyoung) at Carnegie-Mellon University * Split that part of the interface applicable only to default * pagers into a separate interface definition. * * Documented the interface. * * Purged history. Contributors so far: jle, mwyoung, bolosky. * */ /* * Basic types */ type int = MSG_TYPE_INTEGER_32; type boolean_t = MSG_TYPE_BOOLEAN; type port_t = MSG_TYPE_PORT; type port_all_t = MSG_TYPE_PORT_ALL; type paging_object_t = port_t; type vm_offset_t = int; type vm_size_t = int; type vm_prot_t = int; type pointer_t = ^array [] of (MSG_TYPE_INTEGER_8, 8); import <mach/mach_types.h>; /* * Initialize the specified memory object, providing * a reqeust port on which control calls can be made, and * a name port that identifies this object to callers of * vm_regions. * [No reply expected.] */ simpleroutine pager_init( paging_object : paging_object_t; pager_request_port : port_t; pager_name : port_t; page_size : vm_size_t); skip; skip; /* Removed until we know how we'll use it */ /* simpleroutine pager_copy( old_paging_object : paging_object_t; offset : vm_offset_t; length : vm_size_t; new_paging_object : port_all_t; new_request_port : port_t; new_name : port_t; new_page_size : vm_size_t); */ /* * Request data from this memory object. At least * the specified data should be returned with at * least the specified access permitted. * [Reply should be pager_data_provided.] */ simpleroutine pager_data_request( paging_object : paging_object_t; pager_request_port : port_t; offset : vm_offset_t; length : vm_size_t; desired_access : vm_prot_t); /* * Request that the specified portion of this * memory object be unlocked to allow the specified * forms of access; the kernel already has the data. * [Reply should be pager_lock_request.] */ simpleroutine pager_data_unlock( paging_object : paging_object_t; pager_request_port : port_t; offset : vm_offset_t; length : vm_size_t; desired_access : vm_prot_t); /* * Write back modifications made to this portion of * the memory object while in memory. * Unless explicitly requested by a pager_lock_request * (clean, but not flush), the kernel will not continue * to use this data. * [Reply should be vm_deallocate to release the data.] */ simpleroutine pager_data_write( paging_object : paging_object_t; pager_request_port : port_t; offset : vm_offset_t; data : pointer_t); /* * Indicate that a previous pager_lock_reqeust has been * completed. Note that this call is made on whatever * port is specified in the pager_lock_request; that need * not be the memory object port itself. * [No reply expected.] */ simpleroutine pager_lock_completed( paging_object : paging_object_t; pager_request_port : port_t; offset : vm_offset_t; length : vm_size_t);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.