static int alloc_mem_shm(struct thread_data *td, unsigned int total_mem)
{
+#ifndef CONFIG_NO_SHM
int flags = IPC_CREAT | S_IRUSR | S_IWUSR;
if (td->o.mem_type == MEM_SHMHUGE) {
}
return 0;
+#else
+ log_err("fio: shm not supported\n");
+ return 1;
+#endif
}
static void free_mem_shm(struct thread_data *td)
{
+#ifndef CONFIG_NO_SHM
struct shmid_ds sbuf;
dprint(FD_MEM, "shmdt/ctl %d %p\n", td->shm_id, td->orig_buffer);
shmdt(td->orig_buffer);
shmctl(td->shm_id, IPC_RMID, &sbuf);
+#endif
}
static int alloc_mem_mmap(struct thread_data *td, size_t total_mem)
if (td->orig_buffer == MAP_FAILED) {
td_verror(td, errno, "mmap");
td->orig_buffer = NULL;
- if (td->mmapfd != 1) {
+ if (td->mmapfd != 1 && td->mmapfd != -1) {
close(td->mmapfd);
if (td->o.mmapfile)
unlink(td->o.mmapfile);