X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=idletime.c;h=c0bc0bfce19675e311fcbd7394540b02a7010eba;hp=244723f051791ab13881398f0eab470f2b1ce62d;hb=3d434057fd4c20c2b1216d9696c4fed9f7d8c4dd;hpb=95820b6e6c92025df8d89c0bf39b174e53137c41 diff --git a/idletime.c b/idletime.c index 244723f0..c0bc0bfc 100644 --- a/idletime.c +++ b/idletime.c @@ -43,6 +43,26 @@ static double calibrate_unit(unsigned char *data) return tunit / CALIBRATE_SCALE; } +static int set_cpu_affinity(struct idle_prof_thread *ipt) +{ +#if defined(FIO_HAVE_CPU_AFFINITY) + os_cpu_mask_t cpu_mask; + + memset(&cpu_mask, 0, sizeof(cpu_mask)); + fio_cpu_set(&cpu_mask, ipt->cpu); + + if (fio_setaffinity(gettid(), cpu_mask)) { + log_err("fio: fio_setaffinity failed\n"); + return -1; + } + + return 0; +#else + log_err("fio: fio_setaffinity not supported\n"); + return -1; +#endif +} + static void *idle_prof_thread_fn(void *data) { int retval; @@ -56,17 +76,7 @@ static void *idle_prof_thread_fn(void *data) if (ipc.status == IDLE_PROF_STATUS_ABORT) return NULL; -#if defined(FIO_HAVE_CPU_AFFINITY) - os_cpu_mask_t cpu_mask; - memset(&cpu_mask, 0, sizeof(cpu_mask)); - fio_cpu_set(&cpu_mask, ipt->cpu); - - if ((retval=fio_setaffinity(gettid(), cpu_mask)) == -1) - log_err("fio: fio_setaffinity failed\n"); -#else - retval = -1; - log_err("fio: fio_setaffinity not supported\n"); -#endif + retval = set_cpu_affinity(ipt); if (retval == -1) { ipt->state = TD_EXITED; pthread_mutex_unlock(&ipt->init_lock); @@ -369,7 +379,7 @@ static double fio_idle_prof_cpu_stat(int cpu) return p * 100.0; } -void fio_idle_prof_cleanup(void) +static void fio_idle_prof_cleanup(void) { if (ipc.ipts) { free(ipc.ipts); @@ -406,7 +416,7 @@ int fio_idle_prof_parse_opt(const char *args) ipc.opt = IDLE_PROF_OPT_PERCPU; return 0; } else { - log_err("fio: incorrect idle-prof option\n", args); + log_err("fio: incorrect idle-prof option: %s\n", args); return -1; } #else