Home | History | Annotate | Download | only in minzip
      1 /*
      2  * Copyright 2006 The Android Open Source Project
      3  *
      4  * System utilities.
      5  */
      6 #ifndef _MINZIP_SYSUTIL
      7 #define _MINZIP_SYSUTIL
      8 
      9 #include <stdio.h>
     10 #include <sys/types.h>
     11 
     12 #ifdef __cplusplus
     13 extern "C" {
     14 #endif
     15 
     16 typedef struct MappedRange {
     17     void* addr;
     18     size_t length;
     19 } MappedRange;
     20 
     21 /*
     22  * Use this to keep track of mapped segments.
     23  */
     24 typedef struct MemMapping {
     25     unsigned char* addr;           /* start of data */
     26     size_t         length;         /* length of data */
     27 
     28     int            range_count;
     29     MappedRange*   ranges;
     30 } MemMapping;
     31 
     32 /*
     33  * Map a file into a private, read-only memory segment.  If 'fn'
     34  * begins with an '@' character, it is a map of blocks to be mapped,
     35  * otherwise it is treated as an ordinary file.
     36  *
     37  * On success, "pMap" is filled in, and zero is returned.
     38  */
     39 int sysMapFile(const char* fn, MemMapping* pMap);
     40 
     41 /*
     42  * Release the pages associated with a shared memory segment.
     43  *
     44  * This does not free "pMap"; it just releases the memory.
     45  */
     46 void sysReleaseMap(MemMapping* pMap);
     47 
     48 #ifdef __cplusplus
     49 }
     50 #endif
     51 
     52 #endif /*_MINZIP_SYSUTIL*/
     53