home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 4 / hacker04 / 04_HACK04.ISO / darwin / darwinx86.iso / usr / include / sys / mman.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-09-30  |  6.2 KB  |  171 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. /* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
  23. /*-
  24.  * Copyright (c) 1982, 1986, 1993
  25.  *    The Regents of the University of California.  All rights reserved.
  26.  *
  27.  * Redistribution and use in source and binary forms, with or without
  28.  * modification, are permitted provided that the following conditions
  29.  * are met:
  30.  * 1. Redistributions of source code must retain the above copyright
  31.  *    notice, this list of conditions and the following disclaimer.
  32.  * 2. Redistributions in binary form must reproduce the above copyright
  33.  *    notice, this list of conditions and the following disclaimer in the
  34.  *    documentation and/or other materials provided with the distribution.
  35.  * 3. All advertising materials mentioning features or use of this software
  36.  *    must display the following acknowledgement:
  37.  *    This product includes software developed by the University of
  38.  *    California, Berkeley and its contributors.
  39.  * 4. Neither the name of the University nor the names of its contributors
  40.  *    may be used to endorse or promote products derived from this software
  41.  *    without specific prior written permission.
  42.  *
  43.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  44.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  45.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  46.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  47.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  48.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  49.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  50.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  51.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  52.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  53.  * SUCH DAMAGE.
  54.  *
  55.  *    @(#)mman.h    8.1 (Berkeley) 6/2/93
  56.  */
  57.  
  58. #ifndef    _SYS_MMAN_H_
  59. #define _SYS_MMAN_H_
  60.  
  61. #include <mach/shared_memory_server.h>
  62.  
  63. /*
  64.  * Protections are chosen from these bits, or-ed together
  65.  */
  66. #define    PROT_NONE    0x00    /* no permissions */
  67. #define    PROT_READ    0x01    /* pages can be read */
  68. #define    PROT_WRITE    0x02    /* pages can be written */
  69. #define    PROT_EXEC    0x04    /* pages can be executed */
  70.  
  71. /*
  72.  * Flags contain sharing type and options.
  73.  * Sharing types; choose one.
  74.  */
  75. #define    MAP_SHARED    0x0001        /* share changes */
  76. #define    MAP_PRIVATE    0x0002        /* changes are private */
  77. #define    MAP_COPY    MAP_PRIVATE    /* Obsolete */
  78.  
  79. /*
  80.  * Other flags
  81.  */
  82. #define    MAP_FIXED     0x0010    /* map addr must be exactly as requested */
  83. #define    MAP_RENAME     0x0020    /* Sun: rename private pages to file */
  84. #define    MAP_NORESERVE     0x0040    /* Sun: don't reserve needed swap area */
  85. #define    MAP_INHERIT     0x0080    /* region is retained after exec */
  86. #define    MAP_NOEXTEND     0x0100    /* for MAP_FILE, don't change file size */
  87. #define    MAP_HASSEMAPHORE 0x0200    /* region may contain semaphores */
  88.  
  89. #ifdef _P1003_1B_VISIBLE
  90. /*
  91.  * Process memory locking
  92.  */
  93. #define MCL_CURRENT    0x0001    /* Lock only current memory */
  94. #define MCL_FUTURE    0x0002    /* Lock all future memory as well */
  95.  
  96. #endif /* _P1003_1B_VISIBLE */
  97.  
  98. /*
  99.  * Error return from mmap()
  100.  */
  101. #define MAP_FAILED    ((void *)-1)
  102.  
  103. /*
  104.  * msync() flags
  105.  */
  106. #define    MS_SYNC        0x0000    /* msync synchronously */
  107. #define MS_ASYNC    0x0001    /* return immediately */
  108. #define MS_INVALIDATE    0x0002    /* invalidate all cached data */
  109.  
  110. #ifndef _POSIX_SOURCE
  111. #define MS_KILLPAGES    0x0004  /* invalidate pages, leave mapped */
  112. #define MS_DEACTIVATE   0x0008  /* deactivate pages, leave mapped */
  113. #endif
  114.  
  115. /*
  116.  * Mapping type
  117.  */
  118. #define    MAP_FILE    0x0000    /* map from file (default) */
  119. #define    MAP_ANON    0x1000    /* allocated from memory, swap space */
  120.  
  121. /*
  122.  * Advice to madvise
  123.  */
  124. #define    MADV_NORMAL    0    /* no further special treatment */
  125. #define    MADV_RANDOM    1    /* expect random page references */
  126. #define    MADV_SEQUENTIAL    2    /* expect sequential page references */
  127. #define    MADV_WILLNEED    3    /* will need these pages */
  128. #define    MADV_DONTNEED    4    /* dont need these pages */
  129. #define    MADV_FREE    5    /* dont need these pages, and junk contents */
  130.  
  131. /*
  132.  * Return bits from mincore
  133.  */
  134. #define    MINCORE_INCORE          0x1 /* Page is incore */
  135. #define    MINCORE_REFERENCED     0x2 /* Page has been referenced by us */
  136. #define    MINCORE_MODIFIED     0x4 /* Page has been modified by us */
  137. #define    MINCORE_REFERENCED_OTHER 0x8 /* Page has been referenced */
  138. #define    MINCORE_MODIFIED_OTHER    0x10 /* Page has been modified */
  139.  
  140. #ifndef KERNEL
  141.  
  142. #include <sys/cdefs.h>
  143.  
  144. __BEGIN_DECLS
  145. #ifdef _P1003_1B_VISIBLE
  146. int    mlockall __P((int));
  147. int    munlockall __P((void));
  148. #endif /* _P1003_1B_VISIBLE */
  149. int    mlock __P((const void *, size_t));
  150. #ifndef _MMAP_DECLARED
  151. #define    _MMAP_DECLARED
  152. void *    mmap __P((void *, size_t, int, int, int, off_t));
  153. #endif
  154. int    mprotect __P((const void *, size_t, int));
  155. int    msync __P((void *, size_t, int));
  156. int    munlock __P((const void *, size_t));
  157. int    munmap __P((void *, size_t));
  158. int    shm_open __P((const char *, int, ...));
  159. int    shm_unlink __P((const char *));
  160. #ifndef _POSIX_SOURCE
  161. int    load_shared_file __P((char *, caddr_t, u_long, caddr_t *, int, sf_mapping_t *, int *));
  162. int    reset_shared_file __P((caddr_t *, int, sf_mapping_t *));
  163. int    madvise __P((void *, size_t, int));
  164. int    mincore __P((const void *, size_t, char *));
  165. int    minherit __P((void *, size_t, int));
  166. #endif
  167. __END_DECLS
  168.  
  169. #endif /* !KERNEL */
  170. #endif /* !_SYS_MMAN_H_ */
  171.