* Clock functions
*/
-#include <unistd.h>
#include <math.h>
-#include <sys/time.h>
-#include <time.h>
#include "fio.h"
-#include "smalloc.h"
-
-#include "hash.h"
#include "os/os.h"
#if defined(ARCH_HAVE_CPU_CLOCK)
#endif // ARCH_HAVE_CPU_CLOCK
#ifndef CONFIG_TLS_THREAD
-void fio_local_clock_init(int is_thread)
+void fio_local_clock_init(void)
{
struct tv_valid *t;
free(data);
}
#else
-void fio_local_clock_init(int is_thread)
+void fio_local_clock_init(void)
{
}
#endif
pthread_t thread;
int cpu;
int debug;
- pthread_mutex_t lock;
- pthread_mutex_t started;
+ struct fio_sem lock;
unsigned long nr_entries;
uint32_t *seq;
struct clock_entry *entries;
goto err;
}
- pthread_mutex_lock(&t->lock);
- pthread_mutex_unlock(&t->started);
+ fio_sem_down(&t->lock);
first = get_cpu_clock();
c = &t->entries[0];
t->seq = &seq;
t->nr_entries = nr_entries;
t->entries = &entries[i * nr_entries];
- pthread_mutex_init(&t->lock, NULL);
- pthread_mutex_init(&t->started, NULL);
- pthread_mutex_lock(&t->lock);
+ __fio_sem_init(&t->lock, FIO_SEM_LOCKED);
if (pthread_create(&t->thread, NULL, clock_thread_fn, t)) {
failed++;
nr_cpus = i;
for (i = 0; i < nr_cpus; i++) {
struct clock_thread *t = &cthreads[i];
- pthread_mutex_lock(&t->started);
- }
-
- for (i = 0; i < nr_cpus; i++) {
- struct clock_thread *t = &cthreads[i];
-
- pthread_mutex_unlock(&t->lock);
+ fio_sem_up(&t->lock);
}
for (i = 0; i < nr_cpus; i++) {
pthread_join(t->thread, &ret);
if (ret)
failed++;
+ __fio_sem_remove(&t->lock);
}
free(cthreads);