X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=mutex.c;h=be3258df8347937a47bf68a99402283d2381b51a;hp=6ec5d573e8a30145f9c53801f560c7edc329acc7;hb=429f6675446eec26652b010b0c715d8bb6bc32e1;hpb=e53bd0b3eb06e02b991d4ee05e6d0c427bbc20a0;ds=inline diff --git a/mutex.c b/mutex.c index 6ec5d573..be3258df 100644 --- a/mutex.c +++ b/mutex.c @@ -10,18 +10,17 @@ void fio_sem_remove(struct fio_sem *sem) { - unlink(sem->sem_name); + close(sem->sem_fd); munmap(sem, sizeof(*sem)); } struct fio_sem *fio_sem_init(int value) { + char sem_name[] = "/tmp/.fio_sem.XXXXXX"; struct fio_sem *sem = NULL; pthread_mutexattr_t attr; - char sem_name[32]; int fd; - sprintf(sem_name, "/tmp/.fio_lock.XXXXXX"); fd = mkstemp(sem_name); if (fd < 0) { perror("open sem"); @@ -42,9 +41,9 @@ struct fio_sem *fio_sem_init(int value) goto err; } - close(fd); + unlink(sem_name); + sem->sem_fd = fd; sem->value = value; - strcpy(sem->sem_name, sem_name); if (pthread_mutexattr_init(&attr)) { perror("pthread_mutexattr_init"); @@ -62,7 +61,8 @@ struct fio_sem *fio_sem_init(int value) return sem; err: if (sem) - munmap(sem, sizeof(*sem)); + fio_sem_remove(sem); + unlink(sem_name); return NULL; }