blob: bc26bbe719a48d575a16575ad7755ca79b8f269c [file]
/*
* Separate out the two helper functions for fio_sem from "fio_sem.c".
* These two functions depend on fio shared memory. Other fio_sem
* functions in "fio_sem.c" are used for fio shared memory. This file
* separation is required to avoid build failures caused by circular
* dependency.
*/
#include <stdio.h>
#include "fio_sem.h"
#include "smalloc.h"
/*
* Allocate and initialize fio_sem lock object in the same manner as
* fio_sem_init(), except the lock object is allocated from the fio
* shared memory. This allows the parent process to free the lock
* allocated by child processes.
*/
struct fio_sem *fio_shared_sem_init(int value)
{
struct fio_sem *sem;
sem = smalloc(sizeof(struct fio_sem));
if (!sem)
return NULL;
if (!__fio_sem_init(sem, value))
return sem;
fio_shared_sem_remove(sem);
return NULL;
}
/*
* Free the fio_sem lock object allocated by fio_shared_sem_init().
*/
void fio_shared_sem_remove(struct fio_sem *sem)
{
__fio_sem_remove(sem);
sfree(sem);
}