Lines Matching defs:ipt
46 static void free_cpu_affinity(struct idle_prof_thread *ipt)
49 fio_cpuset_exit(&ipt->cpu_mask);
53 static int set_cpu_affinity(struct idle_prof_thread *ipt)
56 if (fio_cpuset_init(&ipt->cpu_mask)) {
61 fio_cpu_set(&ipt->cpu_mask, ipt->cpu);
63 if (fio_setaffinity(gettid(), ipt->cpu_mask)) {
65 fio_cpuset_exit(&ipt->cpu_mask);
80 struct idle_prof_thread *ipt = data;
83 pthread_mutex_lock(&ipt->init_lock);
87 pthread_mutex_unlock(&ipt->init_lock);
91 retval = set_cpu_affinity(ipt);
93 ipt->state = TD_EXITED;
94 pthread_mutex_unlock(&ipt->init_lock);
98 ipt->cali_time = calibrate_unit(ipt->data);
109 ipt->state = TD_EXITED;
110 pthread_mutex_unlock(&ipt->init_lock);
114 ipt->state = TD_INITIALIZED;
117 pthread_cond_signal(&ipt->cond);
118 pthread_mutex_unlock(&ipt->init_lock);
121 pthread_mutex_lock(&ipt->start_lock);
125 pthread_mutex_unlock(&ipt->start_lock);
131 pthread_mutex_unlock(&ipt->start_lock);
135 fio_gettime(&ipt->tps, NULL);
136 ipt->state = TD_RUNNING;
141 ipt->data[(k + j) % page_size] = k % 256;
143 fio_gettime(&ipt->tpe, NULL);
152 ipt->loops = j + (double) k / page_size;
153 ipt->state = TD_EXITED;
154 pthread_mutex_unlock(&ipt->start_lock);
157 free_cpu_affinity(ipt);
166 struct idle_prof_thread *ipt;
169 ipt = &ipc.ipts[i];
170 sum += ipt->cali_time;
176 ipt = &ipc.ipts[i];
177 var += pow(ipt->cali_time-ipc.cali_mean, 2);
189 struct idle_prof_thread *ipt;
224 ipt = &ipc.ipts[i];
226 ipt->cpu = i;
227 ipt->state = TD_NOT_CREATED;
228 ipt->data = (unsigned char *)(ipc.buf + page_size * i);
230 if ((ret = pthread_mutex_init(&ipt->init_lock, NULL))) {
236 if ((ret = pthread_mutex_init(&ipt->start_lock, NULL))) {
242 if ((ret = pthread_cond_init(&ipt->cond, NULL))) {
249 pthread_mutex_lock(&ipt->init_lock);
252 pthread_mutex_lock(&ipt->start_lock);
254 if ((ret = pthread_create(&ipt->thread, &tattr, idle_prof_thread_fn, ipt))) {
259 ipt->state = TD_CREATED;
261 if ((ret = pthread_detach(ipt->thread))) {
272 ipt = &ipc.ipts[i];
273 pthread_mutex_unlock(&ipt->init_lock);
281 ipt = &ipc.ipts[i];
282 pthread_mutex_lock(&ipt->init_lock);
283 while ((ipt->state != TD_EXITED) &&
284 (ipt->state!=TD_INITIALIZED)) {
288 pthread_cond_timedwait(&ipt->cond, &ipt->init_lock, &ts);
290 pthread_mutex_unlock(&ipt->init_lock);
296 if (ipt->state == TD_EXITED)
312 struct idle_prof_thread *ipt;
319 ipt = &ipc.ipts[i];
320 pthread_mutex_unlock(&ipt->start_lock);
330 struct idle_prof_thread *ipt;
342 ipt = &ipc.ipts[i];
343 pthread_mutex_lock(&ipt->start_lock);
344 while ((ipt->state != TD_EXITED) &&
345 (ipt->state!=TD_NOT_CREATED)) {
350 pthread_cond_timedwait(&ipt->cond, &ipt->start_lock, &ts);
352 pthread_mutex_unlock(&ipt->start_lock);
356 runt = utime_since(&ipt->tps, &ipt->tpe);
358 ipt->idleness = ipt->loops * ipc.cali_mean / runt;
360 ipt->idleness = 0.0;
362 ipt->idleness = 0.0;
378 struct idle_prof_thread *ipt;
391 ipt = &ipc.ipts[i];
392 p += ipt->idleness;
396 ipt = &ipc.ipts[cpu];
397 p = ipt->idleness;