X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=lttng-statedump-impl.c;h=fc9dbf686aa67095195487c528fe15a56d927805;hb=refs%2Fheads%2Fstable-2.0;hp=eccf1de2dc405c9305619adef3a09e2cc89cd9b1;hpb=47faec4b566a89db6d3957bbd15ad06639d3dbaa;p=lttng-modules.git diff --git a/lttng-statedump-impl.c b/lttng-statedump-impl.c index eccf1de2..fc9dbf68 100644 --- a/lttng-statedump-impl.c +++ b/lttng-statedump-impl.c @@ -1,15 +1,29 @@ /* + * lttng-statedump.c + * * Linux Trace Toolkit Next Generation Kernel State Dump * * Copyright 2005 Jean-Hugues Deschenes * Copyright 2006-2012 Mathieu Desnoyers * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; only + * version 2.1 of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * * Changes: * Eric Clement: Add listing of network IP interface * 2006, 2007 Mathieu Desnoyers Fix kernel threads * Various updates - * - * Dual LGPL v2.1/GPL v2 license. */ #include @@ -172,6 +186,12 @@ int lttng_enumerate_file_descriptors(struct lttng_session *session) return 0; } +#if 0 +/* + * FIXME: we cannot take a mmap_sem while in a RCU read-side critical section + * (scheduling in atomic). Normally, the tasklist lock protects this kind of + * iteration, but it is not exported to modules. + */ static void lttng_enumerate_task_vm_maps(struct lttng_session *session, struct task_struct *p) @@ -212,6 +232,7 @@ int lttng_enumerate_vm_maps(struct lttng_session *session) rcu_read_unlock(); return 0; } +#endif #ifdef CONFIG_GENERIC_HARDIRQS @@ -327,7 +348,7 @@ int do_lttng_statedump(struct lttng_session *session) trace_lttng_statedump_start(session); lttng_enumerate_process_states(session); lttng_enumerate_file_descriptors(session); - lttng_enumerate_vm_maps(session); + /* FIXME lttng_enumerate_vm_maps(session); */ lttng_list_interrupts(session); lttng_enumerate_network_ip_interface(session); @@ -348,7 +369,7 @@ int do_lttng_statedump(struct lttng_session *session) schedule_delayed_work_on(cpu, &cpu_work[cpu], 0); } /* Wait for all threads to run */ - __wait_event(statedump_wq, (atomic_read(&kernel_threads_to_run) != 0)); + __wait_event(statedump_wq, (atomic_read(&kernel_threads_to_run) == 0)); put_online_cpus(); /* Our work is done */ printk(KERN_DEBUG "LTT state dump end\n");