Version 2.0.8
[lttng-modules.git] / lttng-statedump-impl.c
index eccf1de2dc405c9305619adef3a09e2cc89cd9b1..fc9dbf686aa67095195487c528fe15a56d927805 100644 (file)
@@ -1,15 +1,29 @@
 /*
+ * lttng-statedump.c
+ *
  * Linux Trace Toolkit Next Generation Kernel State Dump
  *
  * Copyright 2005 Jean-Hugues Deschenes <jean-hugues.deschenes@polymtl.ca>
  * Copyright 2006-2012 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
  *
+ * 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 <linux/init.h>
@@ -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");
This page took 0.024385 seconds and 4 git commands to generate.