[PATCH] Use mmap for mlocked memory
diff --git a/fio.c b/fio.c
index 09f40af..f98cd5b 100644
--- a/fio.c
+++ b/fio.c
@@ -2240,24 +2240,23 @@
printf("Starting %d thread%s\n", thread_number, thread_number > 1 ? "s" : "");
+ signal(SIGINT, sig_handler);
+ signal(SIGALRM, sig_handler);
+
if (mlock_size) {
- mlocked_mem = malloc(mlock_size);
+ mlocked_mem = mmap(NULL, mlock_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | OS_MAP_ANON, 0, 0);
if (!mlocked_mem) {
- perror("malloc locked mem");
+ perror("mmap locked mem");
return;
}
if (mlock(mlocked_mem, mlock_size) < 0) {
- free(mlocked_mem);
- perror("mlock");
+ munmap(mlocked_mem, mlock_size);
return;
}
}
fflush(stdout);
- signal(SIGINT, sig_handler);
- signal(SIGALRM, sig_handler);
-
todo = thread_number;
nr_running = 0;
nr_started = 0;
@@ -2368,7 +2367,7 @@
if (mlocked_mem) {
if (munlock(mlocked_mem, mlock_size) < 0)
perror("munlock");
- free(mlocked_mem);
+ munmap(mlocked_mem, mlock_size);
}
}