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 29U_CFUNC UBool uprv_mapFile(UDataMemory *pdm, const char *path); 30U_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