• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 ******************************************************************************
3 *
4 *   Copyright (C) 1999-2010, International Business Machines
5 *   Corporation and others.  All Rights Reserved.
6 *
7 ******************************************************************************/
8 
9 /*----------------------------------------------------------------------------------
10  *
11  *       Memory mapped file wrappers for use by the ICU Data Implementation
12  *
13  *           Porting note:  The implementation of these functions is very platform specific.
14  *             Not all platforms can do real memory mapping.  Those that can't
15  *             still must implement these functions, getting the data into memory using
16  *             whatever means are available.
17  *
18  *            These functions are part of the ICU internal implementation, and
19  *            are not inteded to be used directly by applications.
20  *
21  *----------------------------------------------------------------------------------*/
22 
23 #ifndef __UMAPFILE_H__
24 #define __UMAPFILE_H__
25 
26 #include "unicode/putil.h"
27 #include "unicode/udata.h"
28 
29 U_CFUNC UBool uprv_mapFile(UDataMemory *pdm, const char *path);
30 U_CFUNC void  uprv_unmapFile(UDataMemory *pData);
31 
32 /* MAP_NONE: no memory mapping, no file access at all */
33 #define MAP_NONE        0
34 #define MAP_WIN32       1
35 #define MAP_POSIX       2
36 #define MAP_STDIO       3
37 #define MAP_390DLL      4
38 
39 #if UCONFIG_NO_FILE_IO
40 #   define MAP_IMPLEMENTATION MAP_NONE
41 #elif defined(U_WINDOWS)
42 #   define MAP_IMPLEMENTATION MAP_WIN32
43 #elif U_HAVE_MMAP || defined(OS390)
44 #   if defined(OS390) && defined (OS390_STUBDATA)
45         /*   No memory mapping for 390 batch mode.  Fake it using dll loading.  */
46 #       define MAP_IMPLEMENTATION MAP_390DLL
47 #   else
48 #       define MAP_IMPLEMENTATION MAP_POSIX
49 #   endif
50 #else /* unknown platform, no memory map implementation: use stdio.h and uprv_malloc() instead */
51 #   define MAP_IMPLEMENTATION MAP_STDIO
52 #endif
53 
54 #endif
55