#ifndef __E_WIN32_SYS_MMAN_H__ #define __E_WIN32_SYS_MMAN_H__ #ifdef EAPI # undef EAPI #endif /* EAPI */ #ifdef _WIN32 # ifdef DLL_EXPORT # define EAPI __declspec(dllexport) # else # define EAPI __declspec(dllimport) # endif #endif /* _WIN32 */ #ifdef __cplusplus extern "C" { #endif /** * @def PROT_NONE * Data can not be accessed. */ /** * @def PROT_READ * Data can be read. */ /** * @def PROT_WRITE * Data can be written. */ /** * @def PROT_EXEC * Data can be executed. */ #define PROT_NONE 0x00 #define PROT_READ 0x01 #define PROT_WRITE 0x02 #define PROT_EXEC 0x04 /** * @def MAP_SHARED * Changes are shared. */ /** * @def MAP_PRIVATE * Changes are private. */ /** * @def MAP_FIXED * Interpret the address (addr) exactly. */ #define MAP_SHARED 0x0001 #define MAP_PRIVATE 0x0002 #define MAP_FIXED 0x0010 /** * @file mman.h * @brief The file that provides the memory map functions * @defgroup Mman Functions that manage memory mappping. * * This header provides the meomry map functions mmap and munmap. * */ /** * Creates or opens a named or unnamed file mapping object for a * specified file and maps a view of a file mapping into the * address space of a calling process. * * @param addr Unused * @param len Number of bytes to be mapped. * @param prot Protections. * @param flags Type of the mapped object. * @param fd File descriptor that describes the object to map. * @param offset Number of bytes from which to start the mapping. * @return The starting address of the mapped view on success, -1 otherwise. * * Create or open an unnamed file mapping object for a specified * file described by the file descriptor @p fd. The number of * bytes that are mapped is given by @p len and start after * @p offset bytes. The parameter @p addr is unused. * * The only type of the mapped object that is supported is * @c MAP_SHARED. If another value if given, -1 is returned. * * @p prot specifies the protection of the mapped region. If * PROT_EXEC is used, it set the execute access. If PROT_READ * is used, it sets the read access. If PROT_WRITE is used, it * sets the write access. * * If the map view of file can not be created, -1 is returned. * If the mappping can not be done, -1 is returned. * * If no error occured, the starting address of the mapped view * is returned. * * Conformity: None. * * Supported OS: Windows Vista, Windows XP or Windows 2000 * Professional. * * @ingroup Mman */ EAPI void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset); /** * Unmaps a mapped view of a file from the calling process's * address space. * * @param addr Pointer to the base address. * @param len Unused. * @return 0 on success, -1 otherwise. * * Unmaps a mapped view of a file from the calling process's * address space. @p addr is the pointer to the base address. * This value must be identical to the value returned by a * previous call to mmap(). The parameter @p len is unsed. * * Conformity: None. * * Supported OS: Windows Vista, Windows XP or Windows 2000 * Professional. * * @ingroup Mman */ EAPI int munmap(void *addr, size_t len); #ifdef __cplusplus } #endif #ifdef _WIN32 # undef EAPI # define EAPI #endif /* _WIN32 */ #endif /* __E_WIN32_SYS_MMAN_H__ */