+ mutex->value = value;
+ mutex->magic = FIO_MUTEX_MAGIC;
+
+ ret = mutex_cond_init_pshared(&mutex->lock, &mutex->cond);
+ if (ret)
+ return ret;
+
+ return 0;
+}
+
+struct fio_mutex *fio_mutex_init(int value)
+{
+ struct fio_mutex *mutex = NULL;
+
+ mutex = (void *) mmap(NULL, sizeof(struct fio_mutex),
+ PROT_READ | PROT_WRITE,
+ OS_MAP_ANON | MAP_SHARED, -1, 0);
+ if (mutex == MAP_FAILED) {
+ perror("mmap mutex");
+ return NULL;
+ }
+
+ if (!__fio_mutex_init(mutex, value))
+ return mutex;
+
+ fio_mutex_remove(mutex);