There's a semaphore implementation and option coming, so rename the
bits.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
int shm_id = 0;
int temp_stall_ts;
int shm_id = 0;
int temp_stall_ts;
-static struct fio_sem *startup_sem;
+static struct fio_mutex *startup_mutex;
static volatile int fio_abort;
static int exit_value;
static volatile int fio_abort;
static int exit_value;
td->io_hist_tree = RB_ROOT;
td_set_runstate(td, TD_INITIALIZED);
td->io_hist_tree = RB_ROOT;
td_set_runstate(td, TD_INITIALIZED);
- fio_sem_up(startup_sem);
- fio_sem_down(td->mutex);
+ fio_mutex_up(startup_mutex);
+ fio_mutex_down(td->mutex);
- * the ->mutex semaphore is now no longer used, close it to avoid
+ * the ->mutex mutex is now no longer used, close it to avoid
* eating a file descriptor
*/
* eating a file descriptor
*/
- fio_sem_remove(td->mutex);
+ fio_mutex_remove(td->mutex);
/*
* May alter parameters that init_io_u() will use, so we need to
/*
* May alter parameters that init_io_u() will use, so we need to
- fio_sem_down(startup_sem);
+ fio_mutex_down(startup_mutex);
m_rate += td->o.ratemin;
t_rate += td->o.rate;
todo--;
m_rate += td->o.ratemin;
t_rate += td->o.rate;
todo--;
+ fio_mutex_up(td->mutex);
}
reap_threads(&nr_running, &t_rate, &m_rate);
}
reap_threads(&nr_running, &t_rate, &m_rate);
setup_log(&agg_io_log[DDIR_WRITE]);
}
setup_log(&agg_io_log[DDIR_WRITE]);
}
- startup_sem = fio_sem_init(0);
+ startup_mutex = fio_mutex_init(0);
- fio_sem_remove(startup_sem);
+ fio_mutex_remove(startup_mutex);
unsigned long long io_skip_bytes;
unsigned long long this_io_bytes[2];
unsigned long long zone_bytes;
unsigned long long io_skip_bytes;
unsigned long long this_io_bytes[2];
unsigned long long zone_bytes;
+ struct fio_mutex *mutex;
/*
* State for random io, a bitmap of blocks done vs not done
/*
* State for random io, a bitmap of blocks done vs not done
f->real_file_size = -1ULL;
}
f->real_file_size = -1ULL;
}
- td->mutex = fio_sem_init(0);
+ td->mutex = fio_mutex_init(0);
td->ts.clat_stat[0].min_val = td->ts.clat_stat[1].min_val = ULONG_MAX;
td->ts.slat_stat[0].min_val = td->ts.slat_stat[1].min_val = ULONG_MAX;
td->ts.clat_stat[0].min_val = td->ts.clat_stat[1].min_val = ULONG_MAX;
td->ts.slat_stat[0].min_val = td->ts.slat_stat[1].min_val = ULONG_MAX;
-void fio_sem_remove(struct fio_sem *sem)
+void fio_mutex_remove(struct fio_mutex *mutex)
- close(sem->sem_fd);
- munmap(sem, sizeof(*sem));
+ close(mutex->mutex_fd);
+ munmap(mutex, sizeof(*mutex));
-struct fio_sem *fio_sem_init(int value)
+struct fio_mutex *fio_mutex_init(int value)
- char sem_name[] = "/tmp/.fio_sem.XXXXXX";
- struct fio_sem *sem = NULL;
+ char mutex_name[] = "/tmp/.fio_mutex.XXXXXX";
+ struct fio_mutex *mutex = NULL;
pthread_mutexattr_t attr;
pthread_condattr_t cond;
int fd;
pthread_mutexattr_t attr;
pthread_condattr_t cond;
int fd;
- fd = mkstemp(sem_name);
+ fd = mkstemp(mutex_name);
- if (ftruncate(fd, sizeof(struct fio_sem)) < 0) {
- perror("ftruncate sem");
+ if (ftruncate(fd, sizeof(struct fio_mutex)) < 0) {
+ perror("ftruncate mutex");
- sem = mmap(NULL, sizeof(struct fio_sem), PROT_READ | PROT_WRITE,
+ mutex = mmap(NULL, sizeof(struct fio_mutex), PROT_READ | PROT_WRITE,
- if (sem == MAP_FAILED) {
- perror("mmap sem");
+ if (mutex == MAP_FAILED) {
+ perror("mmap mutex");
- unlink(sem_name);
- sem->sem_fd = fd;
- sem->value = value;
+ unlink(mutex_name);
+ mutex->mutex_fd = fd;
+ mutex->value = value;
if (pthread_mutexattr_init(&attr)) {
perror("pthread_mutexattr_init");
if (pthread_mutexattr_init(&attr)) {
perror("pthread_mutexattr_init");
pthread_condattr_init(&cond);
pthread_condattr_setpshared(&cond, PTHREAD_PROCESS_SHARED);
pthread_condattr_init(&cond);
pthread_condattr_setpshared(&cond, PTHREAD_PROCESS_SHARED);
- pthread_cond_init(&sem->cond, &cond);
+ pthread_cond_init(&mutex->cond, &cond);
- if (pthread_mutex_init(&sem->lock, &attr)) {
+ if (pthread_mutex_init(&mutex->lock, &attr)) {
perror("pthread_mutex_init");
goto err;
}
perror("pthread_mutex_init");
goto err;
}
- if (sem)
- fio_sem_remove(sem);
+ if (mutex)
+ fio_mutex_remove(mutex);
-void fio_sem_down(struct fio_sem *sem)
+void fio_mutex_down(struct fio_mutex *mutex)
- pthread_mutex_lock(&sem->lock);
- while (sem->value == 0)
- pthread_cond_wait(&sem->cond, &sem->lock);
- sem->value--;
- pthread_mutex_unlock(&sem->lock);
+ pthread_mutex_lock(&mutex->lock);
+ while (mutex->value == 0)
+ pthread_cond_wait(&mutex->cond, &mutex->lock);
+ mutex->value--;
+ pthread_mutex_unlock(&mutex->lock);
-void fio_sem_up(struct fio_sem *sem)
+void fio_mutex_up(struct fio_mutex *mutex)
- pthread_mutex_lock(&sem->lock);
- if (!sem->value)
- pthread_cond_signal(&sem->cond);
- sem->value++;
- pthread_mutex_unlock(&sem->lock);
+ pthread_mutex_lock(&mutex->lock);
+ if (!mutex->value)
+ pthread_cond_signal(&mutex->cond);
+ mutex->value++;
+ pthread_mutex_unlock(&mutex->lock);
pthread_mutex_t lock;
pthread_cond_t cond;
unsigned int value;
pthread_mutex_t lock;
pthread_cond_t cond;
unsigned int value;
-extern struct fio_sem *fio_sem_init(int);
-extern void fio_sem_remove(struct fio_sem *);
-extern inline void fio_sem_down(struct fio_sem *);
-extern inline void fio_sem_up(struct fio_sem *sem);
+extern struct fio_mutex *fio_mutex_init(int);
+extern void fio_mutex_remove(struct fio_mutex *);
+extern inline void fio_mutex_down(struct fio_mutex *);
+extern inline void fio_mutex_up(struct fio_mutex *);