68 if (init_values !=
NULL){
78 {0,
"mmap.madv_pattern",
"Use advise to indicate the pattern random/sequential",
OPTION_FLAG,
'd', & o->
madv_pattern},
82 memcpy(help, h,
sizeof(h));
95 ERR(
"transfer size must be aligned with PAGESIZE for MMAP with fsyncPerWrite");
101 int flags = PROT_READ;
111 ERR(
"mmap() failed");
114 flags = POSIX_MADV_RANDOM;
116 flags = POSIX_MADV_SEQUENTIAL;
119 if (posix_madvise(o->
mmap_ptr, size, flags) != 0)
120 ERR(
"madvise() failed");
124 if (posix_madvise(o->
mmap_ptr, size, POSIX_MADV_DONTNEED) != 0)
125 ERR(
"madvise() failed");
140 ERR(
"ftruncate() failed");
151 fd = (
int*)
POSIX_Open(testFileName, flags, param);
163 if (access ==
WRITE) {
164 memcpy(o->
mmap_ptr + offset, buffer, length);
166 memcpy(buffer, o->
mmap_ptr + offset, length);
170 if (msync(o->
mmap_ptr + offset, length, MS_SYNC) != 0)
171 ERR(
"msync() failed");
172 if (posix_madvise(o->
mmap_ptr + offset, length,
173 POSIX_MADV_DONTNEED) != 0)
174 ERR(
"madvise() failed");
186 EWARN(
"msync() failed");
196 ERR(
"munmap failed");
static aiori_fd_t * MMAP_Open(char *, int flags, aiori_mod_opt_t *)
static void ior_mmap_file(int *file, int mflags, void *param)
static void MMAP_xfer_hints(aiori_xfer_hint_t *params)
struct benchmark_options o
static option_help * MMAP_options(aiori_mod_opt_t **init_backend_options, aiori_mod_opt_t *init_values)
void POSIX_Close(aiori_fd_t *afd, aiori_mod_opt_t *param)
IOR_offset_t expectedAggFileSize
static IOR_offset_t MMAP_Xfer(int, aiori_fd_t *, IOR_size_t *, IOR_offset_t, IOR_offset_t, aiori_mod_opt_t *)
aiori_fd_t * POSIX_Open(char *testFileName, int flags, aiori_mod_opt_t *param)
char * aiori_get_version()
aiori_fd_t * POSIX_Create(char *testFileName, int flags, aiori_mod_opt_t *param)
static option_help options[]
void POSIX_Delete(char *testFileName, aiori_mod_opt_t *param)
static aiori_fd_t * MMAP_Create(char *, int flags, aiori_mod_opt_t *)
static void MMAP_Close(aiori_fd_t *, aiori_mod_opt_t *)
IOR_offset_t transferSize
static aiori_xfer_hint_t * hints
void POSIX_xfer_hints(aiori_xfer_hint_t *params)
static int MMAP_check_params(aiori_mod_opt_t *options)
long long int IOR_offset_t
IOR_offset_t POSIX_GetFileSize(aiori_mod_opt_t *test, char *testFileName)
static void MMAP_Fsync(aiori_fd_t *, aiori_mod_opt_t *)