1 /* $Id: access.h 222390 2020-04-10 12:44:01Z twu $ */ 2 #ifndef ACCESS_INCLUDED 3 #define ACCESS_INCLUDED 4 #ifdef HAVE_CONFIG_H 5 #include <config.h> /* For HAVE_UNISTD_H, HAVE_SYS_TYPES_H, HAVE_CADDR_T */ 6 #endif 7 8 #ifdef HAVE_UNISTD_H 9 #include <unistd.h> /* For size_t, and for mmap on Linux, lseek, and getpagesize */ 10 #endif 11 #ifdef HAVE_SYS_TYPES_H 12 #include <sys/types.h> /* For size_t, and for mmap and off_t */ 13 #endif 14 15 #include <sys/ipc.h> /* For key_t */ 16 17 #include "bool.h" 18 19 /* ALLOCATED implies bigendian conversion already done */ 20 typedef enum {USE_ALLOCATE, USE_MMAP_ONLY, USE_MMAP_PRELOAD, USE_FILEIO} Access_mode_T; 21 typedef enum {NOT_USED, ALLOCATED_PRIVATE, ALLOCATED_SHARED, MMAPPED, LOADED, FILEIO} Access_T; 22 #define MAX32BIT 4294967295U /* 2^32 - 1 */ 23 24 extern void 25 Access_setup (bool preload_shared_memory_p_in, bool unload_shared_memory_p_in); 26 27 extern bool 28 Access_file_exists_p (char *filename); 29 30 extern size_t 31 Access_filesize (char *filename); 32 33 extern size_t 34 Access_file_copy (char *dest_file, char *source_file); 35 36 extern bool 37 Access_file_equal (char *file1, char *file2); 38 39 extern int 40 Access_fileio (char *filename); 41 42 extern int 43 Access_fileio_rw (char *filename); 44 45 extern void 46 Access_controlled_cleanup (); 47 48 extern void 49 Access_emergency_cleanup (); 50 51 extern void 52 Access_shmem_remove (char *filename); 53 54 extern void 55 Access_deallocate (void *memory, int shmid, key_t key); 56 57 extern void * 58 Access_allocate_private (Access_T *access, size_t *len, double *seconds, char *filename, size_t eltsize); 59 extern void * 60 Access_allocate_shared (Access_T *access, int *shmid, key_t *key, int *fd, size_t *len, double *seconds, char *filename, size_t eltsize); 61 62 #ifdef HAVE_CADDR_T 63 extern caddr_t 64 #else 65 extern void * 66 #endif 67 Access_mmap (int *fd, size_t *len, double *seconds, char *filename, bool randomp); 68 69 #ifdef HAVE_CADDR_T 70 extern caddr_t 71 #else 72 extern void * 73 #endif 74 Access_mmap_offset (int *remainder, int fd, size_t offset, size_t length, bool randomp); 75 76 #ifdef HAVE_CADDR_T 77 extern caddr_t 78 #else 79 extern void * 80 #endif 81 Access_mmap_and_preload (int *fd, size_t *len, int *npages, double *seconds, 82 char *filename, size_t eltsize); 83 84 #endif 85