Lines Matching refs:task
240 get_new_event(struct task_desc *task, u64 timestamp) in get_new_event() argument
243 unsigned long idx = task->nr_events; in get_new_event()
249 task->nr_events++; in get_new_event()
250 size = sizeof(struct sched_atom *) * task->nr_events; in get_new_event()
251 task->atoms = realloc(task->atoms, size); in get_new_event()
252 BUG_ON(!task->atoms); in get_new_event()
254 task->atoms[idx] = event; in get_new_event()
259 static struct sched_atom *last_event(struct task_desc *task) in last_event() argument
261 if (!task->nr_events) in last_event()
264 return task->atoms[task->nr_events - 1]; in last_event()
267 static void add_sched_event_run(struct perf_sched *sched, struct task_desc *task, in add_sched_event_run() argument
270 struct sched_atom *event, *curr_event = last_event(task); in add_sched_event_run()
282 event = get_new_event(task, timestamp); in add_sched_event_run()
290 static void add_sched_event_wakeup(struct perf_sched *sched, struct task_desc *task, in add_sched_event_wakeup() argument
295 event = get_new_event(task, timestamp); in add_sched_event_wakeup()
317 static void add_sched_event_sleep(struct perf_sched *sched, struct task_desc *task, in add_sched_event_sleep() argument
320 struct sched_atom *event = get_new_event(task, timestamp); in add_sched_event_sleep()
330 struct task_desc *task; in register_pid() local
345 task = sched->pid_to_task[pid]; in register_pid()
347 if (task) in register_pid()
348 return task; in register_pid()
350 task = zalloc(sizeof(*task)); in register_pid()
351 task->pid = pid; in register_pid()
352 task->nr = sched->nr_tasks; in register_pid()
353 strcpy(task->comm, comm); in register_pid()
358 add_sched_event_sleep(sched, task, 0, 0); in register_pid()
360 sched->pid_to_task[pid] = task; in register_pid()
364 sched->tasks[task->nr] = task; in register_pid()
369 return task; in register_pid()
375 struct task_desc *task; in print_task_traces() local
379 task = sched->tasks[i]; in print_task_traces()
381 task->nr, task->comm, task->pid, task->nr_events); in print_task_traces()
495 struct task_desc *task; member
503 struct task_desc *this_task = parms->task; in thread_func()
546 struct task_desc *task; in create_tasks() local
563 parms->task = task = sched->tasks[i]; in create_tasks()
566 sem_init(&task->sleep_sem, 0, 0); in create_tasks()
567 sem_init(&task->ready_for_work, 0, 0); in create_tasks()
568 sem_init(&task->work_done_sem, 0, 0); in create_tasks()
569 task->curr_event = 0; in create_tasks()
570 err = pthread_create(&task->thread, &attr, thread_func, parms); in create_tasks()
578 struct task_desc *task; in wait_for_tasks() local
586 task = sched->tasks[i]; in wait_for_tasks()
587 ret = sem_wait(&task->ready_for_work); in wait_for_tasks()
589 sem_init(&task->ready_for_work, 0, 0); in wait_for_tasks()
599 task = sched->tasks[i]; in wait_for_tasks()
600 ret = sem_wait(&task->work_done_sem); in wait_for_tasks()
602 sem_init(&task->work_done_sem, 0, 0); in wait_for_tasks()
603 sched->cpu_usage += task->cpu_usage; in wait_for_tasks()
604 task->cpu_usage = 0; in wait_for_tasks()
622 task = sched->tasks[i]; in wait_for_tasks()
623 sem_init(&task->sleep_sem, 0, 0); in wait_for_tasks()
624 task->curr_event = 0; in wait_for_tasks()