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