X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=lttng-statedump-impl.c;h=0b7d66610e7297f7ba3b8a778d40f2d1ad4915d5;hb=42a03cb282877dbefbf7da733d71131fa0f83ae0;hp=3d9d12764afe967db0a590bc18fc440f8c129dc2;hpb=3bd6ac3e83874adf006a1bc46d94d8880fc197c8;p=lttng-modules.git diff --git a/lttng-statedump-impl.c b/lttng-statedump-impl.c index 3d9d1276..0b7d6661 100644 --- a/lttng-statedump-impl.c +++ b/lttng-statedump-impl.c @@ -23,18 +23,19 @@ #include #include #include -#include #include #include -#include #include #include #include #include #include +#include + #include #include +#include #include #include #include @@ -43,6 +44,7 @@ #include #include #include +#include #ifdef CONFIG_LTTNG_HAS_LIST_IRQ #include @@ -651,7 +653,7 @@ int lttng_enumerate_process_states(struct lttng_session *session) status = LTTNG_ZOMBIE; else if (p->exit_state == EXIT_DEAD) status = LTTNG_DEAD; - else if (p->state == TASK_RUNNING) { + else if (lttng_task_is_running(p)) { /* Is this a forked child that has not run yet? */ if (list_empty(&p->rt.run_list)) status = LTTNG_WAIT_FORK; @@ -662,7 +664,7 @@ int lttng_enumerate_process_states(struct lttng_session *session) * was really running at this time. */ status = LTTNG_WAIT_CPU; - } else if (p->state & + } else if (lttng_get_task_state(p) & (TASK_INTERRUPTIBLE | TASK_UNINTERRUPTIBLE)) { /* Task is waiting for something to complete */ status = LTTNG_WAIT; @@ -760,7 +762,7 @@ int do_lttng_statedump(struct lttng_session *session) * is to guarantee that each CPU has been in a state where is was in * syscall mode (i.e. not in a trap, an IRQ or a soft IRQ). */ - get_online_cpus(); + lttng_cpus_read_lock(); atomic_set(&kernel_threads_to_run, num_online_cpus()); for_each_online_cpu(cpu) { INIT_DELAYED_WORK(&cpu_work[cpu], lttng_statedump_work_func); @@ -768,7 +770,7 @@ int do_lttng_statedump(struct lttng_session *session) } /* Wait for all threads to run */ __wait_event(statedump_wq, (atomic_read(&kernel_threads_to_run) == 0)); - put_online_cpus(); + lttng_cpus_read_unlock(); /* Our work is done */ trace_lttng_statedump_end(session); return 0;