home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 4 / hacker04 / 04_HACK04.ISO / darwin / darwinx86.iso / usr / include / mach / vm_prot.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-09-30  |  5.7 KB  |  188 lines

  1. /*
  2.  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
  3.  *
  4.  * @APPLE_LICENSE_HEADER_START@
  5.  * 
  6.  * The contents of this file constitute Original Code as defined in and
  7.  * are subject to the Apple Public Source License Version 1.1 (the
  8.  * "License").  You may not use this file except in compliance with the
  9.  * License.  Please obtain a copy of the License at
  10.  * http://www.apple.com/publicsource and read it before using this file.
  11.  * 
  12.  * This Original Code and all software distributed under the License are
  13.  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  14.  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  15.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
  16.  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
  17.  * License for the specific language governing rights and limitations
  18.  * under the License.
  19.  * 
  20.  * @APPLE_LICENSE_HEADER_END@
  21.  */
  22. /*
  23.  * @OSF_COPYRIGHT@
  24.  */
  25. /*
  26.  * HISTORY
  27.  * 
  28.  * Revision 1.1.1.1  1998/09/22 21:05:31  wsanchez
  29.  * Import of Mac OS X kernel (~semeria)
  30.  *
  31.  * Revision 1.1.1.1  1998/03/07 02:25:46  wsanchez
  32.  * Import of OSF Mach kernel (~mburg)
  33.  *
  34.  * Revision 1.3.8.1  1994/09/23  02:44:31  ezf
  35.  *     change marker to not FREE
  36.  *     [1994/09/22  21:43:46  ezf]
  37.  *
  38.  * Revision 1.3.2.2  1993/06/09  02:44:23  gm
  39.  *     Added to OSF/1 R1.3 from NMK15.0.
  40.  *     [1993/06/02  21:18:51  jeffc]
  41.  * 
  42.  * Revision 1.3  1993/04/19  16:40:48  devrcs
  43.  *     make endif tags ansi compliant/include files
  44.  *     [1993/02/20  21:45:25  david]
  45.  * 
  46.  * Revision 1.2  1992/12/07  21:29:28  robert
  47.  *     integrate any changes below for 14.0 (branch from 13.16 base)
  48.  * 
  49.  *     Joseph Barrera (jsb) at Carnegie-Mellon University 05-Aug-92
  50.  *     Added VM_PROT_WANTS_COPY to solve copy-call race condition.
  51.  *     [1992/12/06  20:25:47  robert]
  52.  * 
  53.  * Revision 1.1  1992/09/30  02:32:28  robert
  54.  *     Initial revision
  55.  * 
  56.  * $EndLog$
  57.  */
  58. /* CMU_HIST */
  59. /*
  60.  * Revision 2.4.3.1  92/03/03  16:22:41  jeffreyh
  61.  *     [David L. Black 92/02/22  17:03:43  dlb@osf.org]
  62.  *        Add no change protection value for memory_object_lock_request.
  63.  * 
  64.  * Revision 2.4  91/05/14  17:03:00  mrt
  65.  *     Correcting copyright
  66.  * 
  67.  * Revision 2.3  91/02/05  17:37:38  mrt
  68.  *     Changed to new Mach copyright
  69.  *     [91/02/01  17:22:39  mrt]
  70.  * 
  71.  * Revision 2.2  90/01/22  23:05:57  af
  72.  *     Removed execute permission from default protection.
  73.  *     On the only machine that cares for execute permission (mips)
  74.  *     this is an expensive liability: it requires keeping
  75.  *     Icache consistent memory that never contains code.
  76.  *     [89/12/15            af]
  77.  * 
  78.  * Revision 2.1  89/08/03  16:06:47  rwd
  79.  * Created.
  80.  * 
  81.  * Revision 2.3  89/02/25  18:42:29  gm0w
  82.  *     Changes for cleanup.
  83.  * 
  84.  *  6-Jun-85  Avadis Tevanian (avie) at Carnegie-Mellon University
  85.  *    Created.
  86.  *
  87.  */
  88. /* CMU_ENDHIST */
  89. /* 
  90.  * Mach Operating System
  91.  * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
  92.  * All Rights Reserved.
  93.  * 
  94.  * Permission to use, copy, modify and distribute this software and its
  95.  * documentation is hereby granted, provided that both the copyright
  96.  * notice and this permission notice appear in all copies of the
  97.  * software, derivative works or modified versions, and any portions
  98.  * thereof, and that both notices appear in supporting documentation.
  99.  * 
  100.  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
  101.  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
  102.  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
  103.  * 
  104.  * Carnegie Mellon requests users of this software to return to
  105.  * 
  106.  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
  107.  *  School of Computer Science
  108.  *  Carnegie Mellon University
  109.  *  Pittsburgh PA 15213-3890
  110.  * 
  111.  * any improvements or extensions that they make and grant Carnegie Mellon
  112.  * the rights to redistribute these changes.
  113.  */
  114. /*
  115.  */
  116. /*
  117.  *    File:    mach/vm_prot.h
  118.  *    Author:    Avadis Tevanian, Jr., Michael Wayne Young
  119.  *
  120.  *    Virtual memory protection definitions.
  121.  *
  122.  */
  123.  
  124. #ifndef    VM_PROT_H_
  125. #define    VM_PROT_H_
  126.  
  127. /*
  128.  *    Types defined:
  129.  *
  130.  *    vm_prot_t        VM protection values.
  131.  */
  132.  
  133. typedef int        vm_prot_t;
  134.  
  135. /*
  136.  *    Protection values, defined as bits within the vm_prot_t type
  137.  */
  138.  
  139. #define    VM_PROT_NONE    ((vm_prot_t) 0x00)
  140.  
  141. #define VM_PROT_READ    ((vm_prot_t) 0x01)    /* read permission */
  142. #define VM_PROT_WRITE    ((vm_prot_t) 0x02)    /* write permission */
  143. #define VM_PROT_EXECUTE    ((vm_prot_t) 0x04)    /* execute permission */
  144.  
  145. /*
  146.  *    The default protection for newly-created virtual memory
  147.  */
  148.  
  149. #define VM_PROT_DEFAULT    (VM_PROT_READ|VM_PROT_WRITE)
  150.  
  151. /*
  152.  *    The maximum privileges possible, for parameter checking.
  153.  */
  154.  
  155. #define VM_PROT_ALL    (VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE)
  156.  
  157. /*
  158.  *    An invalid protection value.
  159.  *    Used only by memory_object_lock_request to indicate no change
  160.  *    to page locks.  Using -1 here is a bad idea because it
  161.  *    looks like VM_PROT_ALL and then some.
  162.  */
  163. #define VM_PROT_NO_CHANGE    ((vm_prot_t) 0x08)
  164.  
  165. /* 
  166.  *      When a caller finds that he cannot obtain write permission on a
  167.  *      mapped entry, the following flag can be used.  The entry will
  168.  *      be made "needs copy" effectively copying the object (using COW),
  169.  *      and write permission will be added to the maximum protections
  170.  *      for the associated entry. 
  171.  */        
  172. #define VM_PROT_COPY            ((vm_prot_t) 0x10)
  173.  
  174.  
  175. /*
  176.  *    Another invalid protection value.
  177.  *    Used only by memory_object_data_request upon an object
  178.  *    which has specified a copy_call copy strategy. It is used
  179.  *    when the kernel wants a page belonging to a copy of the
  180.  *    object, and is only asking the object as a result of
  181.  *    following a shadow chain. This solves the race between pages
  182.  *    being pushed up by the memory manager and the kernel
  183.  *    walking down the shadow chain.
  184.  */
  185. #define VM_PROT_WANTS_COPY    ((vm_prot_t) 0x10)
  186.  
  187. #endif    /* VM_PROT_H_ */
  188.