os_mman.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 
00003 //=============================================================================
00004 /**
00005  *  @file    os_mman.h
00006  *
00007  *  memory management declarations
00008  *
00009  *  os_mman.h,v 1.9 2006/05/19 20:27:08 shuston Exp
00010  *
00011  *  @author Don Hinton <dhinton@dresystems.com>
00012  *  @author This code was originally in various places including ace/OS.h.
00013  */
00014 //=============================================================================
00015 
00016 #ifndef ACE_OS_INCLUDE_SYS_OS_MMAN_H
00017 #define ACE_OS_INCLUDE_SYS_OS_MMAN_H
00018 
00019 #include /**/ "ace/pre.h"
00020 
00021 #include "ace/config-lite.h"
00022 
00023 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00024 # pragma once
00025 #endif /* ACE_LACKS_PRAGMA_ONCE */
00026 
00027 #include "ace/os_include/sys/os_types.h"
00028 
00029 #if defined (ACE_LACKS_MMAP)
00030 #  define ACE_LACKS_SYS_MMAN_H
00031 #endif /* ACE_LACKS_MMAP */
00032 
00033 #if !defined (ACE_LACKS_SYS_MMAN_H)
00034    // Fixes a problem with HP/UX.
00035 #  if defined (ACE_HAS_BROKEN_MMAP_H)
00036      extern "C" {
00037 #  endif /* ACE_HAS_BROKEN_MMAP_H */
00038 #  include /**/ <sys/mman.h>
00039 #  if defined (ACE_HAS_BROKEN_MMAP_H)
00040      }
00041 #  endif /* ACE_HAS_BROKEN_MMAP_H */
00042 #endif /* ACE_LACKS_SYS_MMAN_H */
00043 
00044 // Place all additions (especially function declarations) within extern "C" {}
00045 #ifdef __cplusplus
00046 extern "C"
00047 {
00048 #endif /* __cplusplus */
00049 
00050 #if defined (ACE_LACKS_SYS_MMAN_H) && !defined (ACE_WIN32)
00051 #  define PROT_READ 0
00052 #  define PROT_WRITE 0
00053 #  define PROT_EXEC 0
00054 #  define PROT_NONE 0
00055 #  define PROT_RDWR 0
00056 #  define MAP_PRIVATE 0
00057 #  define MAP_SHARED 0
00058 #  define MAP_FIXED 0
00059 #elif defined (ACE_WIN32)
00060    // These two may be used for internal flags soon:
00061 #  define MAP_PRIVATE 1
00062 #  define MAP_SHARED  2
00063 #  define MAP_FIXED   4
00064    // MMAP flags
00065 #  define PROT_READ PAGE_READONLY
00066 #  define PROT_WRITE PAGE_READWRITE
00067 #  define PROT_RDWR PAGE_READWRITE
00068 /* If we can find suitable use for these flags, here they are:
00069 PAGE_WRITECOPY
00070 PAGE_EXECUTE
00071 PAGE_EXECUTE_READ
00072 PAGE_EXECUTE_READWRITE
00073 PAGE_EXECUTE_WRITECOPY
00074 PAGE_GUARD
00075 PAGE_NOACCESS
00076 PAGE_NOCACHE  */
00077 #endif /* !ACE_LACKS_SYS_MMAN_H && !ACE_WIN32*/
00078 
00079 # if !defined (ACE_MAP_PRIVATE)
00080 #   define ACE_MAP_PRIVATE MAP_PRIVATE
00081 # endif /* ! ACE_MAP_PRIVATE */
00082 
00083 # if !defined (ACE_MAP_SHARED)
00084 #   define ACE_MAP_SHARED MAP_SHARED
00085 # endif /* ! ACE_MAP_SHARED */
00086 
00087 # if !defined (ACE_MAP_FIXED)
00088 #   define ACE_MAP_FIXED MAP_FIXED
00089 # endif /* ! ACE_MAP_FIXED */
00090 
00091 # if !defined (MAP_FAILED) || defined (ACE_HAS_BROKEN_MAP_FAILED)
00092 #   undef MAP_FAILED
00093 #   define MAP_FAILED ((void *) -1)
00094 # elif defined (ACE_HAS_LONG_MAP_FAILED)
00095 #   undef MAP_FAILED
00096 #   define MAP_FAILED ((void *) -1L)
00097 # endif /* !MAP_FAILED || ACE_HAS_BROKEN_MAP_FAILED */
00098 
00099 #if !defined (PROT_RDWR)
00100 #  define PROT_RDWR (PROT_READ|PROT_WRITE)
00101 #endif /* PROT_RDWR */
00102 
00103 # if defined (ACE_WIN32)
00104     // Needed to map calls to NT transparently.
00105 #   define MS_ASYNC 0
00106 #   define MS_INVALIDATE 0
00107 # endif /* ACE_WIN32 */
00108 
00109 # if !defined (MS_SYNC)
00110 #   define MS_SYNC 0x0
00111 # endif /* !MS_SYNC */
00112 
00113 #if !defined (ACE_LACKS_MADVISE) && defined (ACE_LACKS_MADVISE_PROTOTYPE)
00114   extern "C" int madvise(caddr_t, size_t, int);
00115 #endif /* !ACE_LACKS_MADVISE && ACE_LACKS_MADVISE_PROTOTYPE */
00116 
00117 #ifdef __cplusplus
00118 }
00119 #endif /* __cplusplus */
00120 
00121 #include /**/ "ace/post.h"
00122 #endif /* ACE_OS_INCLUDE_SYS_OS_MMAN_H */

Generated on Thu Nov 9 09:41:57 2006 for ACE by doxygen 1.3.6