]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/mach/vm_prot.h
xnu-3247.10.11.tar.gz
[apple/xnu.git] / osfmk / mach / vm_prot.h
index 4f29436d459da75e06227f1449fb8b37047e3402..039390c26e8a1f5673b16445fe3146ab8910d049 100644 (file)
@@ -1,16 +1,19 @@
 /*
  * Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved.
  *
- * @APPLE_LICENSE_HEADER_START@
- * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  * 
  * 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 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this
- * file.
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ * 
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ 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
@@ -20,7 +23,7 @@
  * Please see the License for the specific language governing rights and
  * limitations under the License.
  * 
- * @APPLE_LICENSE_HEADER_END@
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
  */
 /*
  * @OSF_COPYRIGHT@
@@ -60,8 +63,8 @@
  *
  */
 
-#ifndef        VM_PROT_H_
-#define        VM_PROT_H_
+#ifndef        _MACH_VM_PROT_H_
+#define        _MACH_VM_PROT_H_
 
 /*
  *     Types defined:
@@ -99,6 +102,7 @@ typedef int          vm_prot_t;
  *     to page locks.  Using -1 here is a bad idea because it
  *     looks like VM_PROT_ALL and then some.
  */
+
 #define VM_PROT_NO_CHANGE      ((vm_prot_t) 0x08)
 
 /* 
@@ -108,6 +112,7 @@ typedef int         vm_prot_t;
  *      and write permission will be added to the maximum protections
  *      for the associated entry. 
  */        
+
 #define VM_PROT_COPY            ((vm_prot_t) 0x10)
 
 
@@ -121,6 +126,29 @@ typedef int                vm_prot_t;
  *     being pushed up by the memory manager and the kernel
  *     walking down the shadow chain.
  */
+
 #define VM_PROT_WANTS_COPY     ((vm_prot_t) 0x10)
 
-#endif /* VM_PROT_H_ */
+#ifdef PRIVATE
+/*
+ *     The caller wants this memory region treated as if it had a valid
+ *     code signature.
+ */
+
+#define VM_PROT_TRUSTED                ((vm_prot_t) 0x20)
+#endif /* PRIVATE */
+
+/*
+ *     Another invalid protection value.
+ *     Indicates that the other protection bits are to be applied as a mask
+ *     against the actual protection bits of the map entry.
+ */
+#define VM_PROT_IS_MASK                ((vm_prot_t) 0x40)
+
+
+#define VM_PROT_MEMORY_TAG_MASK                0xFF000000
+#define VM_PROT_MEMORY_TAG_SHIFT       24
+#define VM_PROT_MEMORY_TAG(x)          (((x) >> VM_PROT_MEMORY_TAG_SHIFT) & 0xFF)
+#define VM_PROT_MEMORY_TAG_MAKE(x)     (((x) & 0xFF) << VM_PROT_MEMORY_TAG_SHIFT)
+
+#endif /* _MACH_VM_PROT_H_ */