* [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9
@ 2009-03-05 22:47 Mathieu Desnoyers
2009-03-05 22:47 ` [ltt-dev] [RFC patch 01/41] LTTng - core header Mathieu Desnoyers
` (42 more replies)
0 siblings, 43 replies; 141+ messages in thread
From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw)
Hi,
I spent the last 4-5 months working with the Fujitsu team at implementing the
tracer elements identified as goals at Kernel Summit 2008 and at the following
Plumber Conference. My idea was to incremententally adapt the LTTng tracer,
currently used in the industry and well tested, to those requirements.
I spent the last days rearranging/folding/inspecting the LTTng patchset
to prepare it for an LKML post. The version 0.105 in the LTTng git tree
corresponds to the patchset I am posting here. The said patchset will
only include the core features of LTTng, excluding the timestamping
infrastructure (trace clock) and excluding the instrumentation.
The corresponding git tree contains also the trace clock patches and the lttng
instrumentation. The trace clock is required to use the tracer, but it can be
used without the instrumentation : there is already a kprobes and userspace
event support included in this patchset.
This tracer exports binary data through buffers using splice(). The resulting
binary files can be parsed from userspace because the format string metadata is
exported in the files. The event set can be enhanced by adding tracepoints to
the kernel code and by creating probe modules, which connects callbacks to the
tracepoints and contain the format string metainformation. Those callbacks are
responsible for writing the data in the trace buffers. This separation between
the trace buffer format string and the tracepoints is done on purpose so the
core kernel instrumentation (tracepoints) is not exported to userspace, which
will make maintainance much easier.
The tree including the trace clock patches is available at :
git://git.kernel.org/pub/scm/linux/kernel/git/compudj/linux-2.6-lttng.git
branch : 2.6.29-rc7-lttng-0.105
Project website : http://www.lttng.org/
Information about how to install and use the tracer is available at :
http://ltt.polymtl.ca/svn/trunk/lttv/LTTngManual.html
The size of the LTTng core patchset is 41 patches. The diffstat details
as follow :
include/linux/ltt-core.h | 35
include/linux/ltt-relay.h | 161 +
include/linux/ltt-tracer.h | 43
include/linux/marker.h | 121
kernel/marker.c | 353 ++
kernel/module.c | 31
linux-2.6-lttng/Documentation/markers.txt | 17
linux-2.6-lttng/MAINTAINERS | 7
linux-2.6-lttng/Makefile | 2
linux-2.6-lttng/arch/powerpc/kernel/traps.c | 5
linux-2.6-lttng/arch/powerpc/platforms/cell/spufs/spufs.h | 6
linux-2.6-lttng/arch/sparc/Makefile | 2
linux-2.6-lttng/arch/x86/kernel/dumpstack.c | 5
linux-2.6-lttng/arch/x86/mm/fault.c | 1
linux-2.6-lttng/fs/ext4/fsync.c | 8
linux-2.6-lttng/fs/ext4/ialloc.c | 17
linux-2.6-lttng/fs/ext4/inode.c | 79
linux-2.6-lttng/fs/ext4/mballoc.c | 71
linux-2.6-lttng/fs/ext4/mballoc.h | 2
linux-2.6-lttng/fs/ext4/super.c | 6
linux-2.6-lttng/fs/jbd2/checkpoint.c | 7
linux-2.6-lttng/fs/jbd2/commit.c | 12
linux-2.6-lttng/fs/pipe.c | 5
linux-2.6-lttng/fs/select.c | 41
linux-2.6-lttng/fs/seq_file.c | 45
linux-2.6-lttng/fs/splice.c | 1
linux-2.6-lttng/include/linux/immediate.h | 94
linux-2.6-lttng/include/linux/kvm_host.h | 12
linux-2.6-lttng/include/linux/ltt-channels.h | 94
linux-2.6-lttng/include/linux/ltt-core.h | 47
linux-2.6-lttng/include/linux/ltt-relay.h | 186 +
linux-2.6-lttng/include/linux/ltt-tracer.h | 731 ++++++
linux-2.6-lttng/include/linux/ltt-type-serializer.h | 107
linux-2.6-lttng/include/linux/marker.h | 16
linux-2.6-lttng/include/linux/module.h | 6
linux-2.6-lttng/include/linux/poll.h | 2
linux-2.6-lttng/include/linux/seq_file.h | 20
linux-2.6-lttng/include/trace/ext4.h | 129 +
linux-2.6-lttng/include/trace/jbd2.h | 19
linux-2.6-lttng/init/Kconfig | 2
linux-2.6-lttng/kernel/kallsyms.c | 1
linux-2.6-lttng/kernel/marker.c | 12
linux-2.6-lttng/kernel/module.c | 32
linux-2.6-lttng/ltt/Kconfig | 130 +
linux-2.6-lttng/ltt/Makefile | 15
linux-2.6-lttng/ltt/ltt-channels.c | 338 ++
linux-2.6-lttng/ltt/ltt-core.c | 101
linux-2.6-lttng/ltt/ltt-filter.c | 66
linux-2.6-lttng/ltt/ltt-kprobes.c | 479 +++
linux-2.6-lttng/ltt/ltt-marker-control.c | 265 ++
linux-2.6-lttng/ltt/ltt-relay-alloc.c | 715 +++++
linux-2.6-lttng/ltt/ltt-relay-locked.c | 1704 ++++++++++++++
linux-2.6-lttng/ltt/ltt-serialize.c | 685 +++++
linux-2.6-lttng/ltt/ltt-trace-control.c | 1061 ++++++++
linux-2.6-lttng/ltt/ltt-tracer.c | 1210 +++++++++
linux-2.6-lttng/ltt/ltt-type-serializer.c | 96
linux-2.6-lttng/ltt/ltt-userspace-event.c | 131 +
linux-2.6-lttng/samples/markers/Makefile | 2
linux-2.6-lttng/samples/markers/marker-example.c | 4
linux-2.6-lttng/samples/markers/probe-example.c | 10
linux-2.6-lttng/samples/markers/test-multi.c | 120
linux-2.6-lttng/virt/kvm/kvm_trace.c | 12
ltt/Kconfig | 24
ltt/Makefile | 2
ltt/ltt-relay-alloc.c | 80
65 files changed, 9445 insertions(+), 398 deletions(-)
Comments are welcome.
Mathieu
--
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
^ permalink raw reply [flat|nested] 141+ messages in thread* [ltt-dev] [RFC patch 01/41] LTTng - core header 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers ` (2 more replies) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 02/41] LTTng - core data structures Mathieu Desnoyers ` (41 subsequent siblings) 42 siblings, 3 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-core-header.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/4e11a2c3/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 01/41] LTTng - core header 2009-03-05 22:47 ` [ltt-dev] [RFC patch 01/41] LTTng - core header Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-06 18:37 ` Steven Rostedt 2 siblings, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-core-header.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/4e11a2c3/attachment-0001.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 01/41] LTTng - core header 2009-03-05 22:47 ` [ltt-dev] [RFC patch 01/41] LTTng - core header Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-06 18:37 ` Steven Rostedt 2 siblings, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-core-header.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/4e11a2c3/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 01/41] LTTng - core header 2009-03-05 22:47 ` [ltt-dev] [RFC patch 01/41] LTTng - core header Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-06 18:37 ` Steven Rostedt 2 siblings, 0 replies; 141+ messages in thread From: Steven Rostedt @ 2009-03-06 18:37 UTC (permalink / raw) On Thu, 5 Mar 2009, Mathieu Desnoyers wrote: > Contains the structures required by the builtin part of the LTTng tracer. Also note, it is better to push the core changes needed first. This way if something comes up, you can make your changes to your code before it gets into the kernel. This has been the approach I try to use. I send out patch series that modify the core kernel first, see what the feed back is, get them accepted, before continuing with further patches. Thanks, -- Steve > > Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers at polymtl.ca> > --- > include/linux/ltt-core.h | 47 +++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 47 insertions(+) > > Index: linux-2.6-lttng/include/linux/ltt-core.h > =================================================================== > --- /dev/null 1970-01-01 00:00:00.000000000 +0000 > +++ linux-2.6-lttng/include/linux/ltt-core.h 2009-03-04 13:37:26.000000000 -0500 > @@ -0,0 +1,47 @@ > +/* > + * Copyright (C) 2005,2006 Mathieu Desnoyers (mathieu.desnoyers at polymtl.ca) > + * > + * This contains the core definitions for the Linux Trace Toolkit. > + */ > + > +#ifndef LTT_CORE_H > +#define LTT_CORE_H > + > +#include <linux/list.h> > +#include <linux/percpu.h> > + > +/* ltt's root dir in debugfs */ > +#define LTT_ROOT "ltt" > + > +/* > + * All modifications of ltt_traces must be done by ltt-tracer.c, while holding > + * the semaphore. Only reading of this information can be done elsewhere, with > + * the RCU mechanism : the preemption must be disabled while reading the > + * list. > + */ > +struct ltt_traces { > + struct list_head setup_head; /* Pre-allocated traces list */ > + struct list_head head; /* Allocated Traces list */ > + unsigned int num_active_traces; /* Number of active traces */ > +} ____cacheline_aligned; > + > +extern struct ltt_traces ltt_traces; > + > +/* > + * get dentry of ltt's root dir > + */ > +struct dentry *get_ltt_root(void); > + > +void put_ltt_root(void); > + > +/* Keep track of trap nesting inside LTT */ > +DECLARE_PER_CPU(unsigned int, ltt_nesting); > + > +typedef int (*ltt_run_filter_functor)(void *trace, uint16_t eID); > + > +extern ltt_run_filter_functor ltt_run_filter; > + > +extern void ltt_filter_register(ltt_run_filter_functor func); > +extern void ltt_filter_unregister(void); > + > +#endif /* LTT_CORE_H */ > > -- > Mathieu Desnoyers > OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 > ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 02/41] LTTng - core data structures 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 01/41] LTTng - core header Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers ` (2 more replies) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 03/41] LTTng core x86 Mathieu Desnoyers ` (40 subsequent siblings) 42 siblings, 3 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-core.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/f99458d6/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 02/41] LTTng - core data structures 2009-03-05 22:47 ` [ltt-dev] [RFC patch 02/41] LTTng - core data structures Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-06 18:41 ` Steven Rostedt 2 siblings, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-core.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/f99458d6/attachment-0001.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 02/41] LTTng - core data structures 2009-03-05 22:47 ` [ltt-dev] [RFC patch 02/41] LTTng - core data structures Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-06 18:41 ` Steven Rostedt 2 siblings, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-core.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/f99458d6/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 02/41] LTTng - core data structures 2009-03-05 22:47 ` [ltt-dev] [RFC patch 02/41] LTTng - core data structures Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-06 18:41 ` Steven Rostedt 2 siblings, 0 replies; 141+ messages in thread From: Steven Rostedt @ 2009-03-06 18:41 UTC (permalink / raw) On Thu, 5 Mar 2009, Mathieu Desnoyers wrote: > Home of the traces data structures. Needs to be built into the kernel. > > LTT heartbeat is a module specialized into firing periodical interrupts to > record events in traces (so cycle counter rollover can be detected) and to > update the 64 bits "synthetic TSC" (extended from the CPU 32 bits TSC on MIPS). > Also needs to be built into the kernel. Why is patch 1 and 2 separate. They look like they should be a single patch. Patch 1 is pretty useless by itself. This patch depends on patch 1. -- Steve > > Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers at polymtl.ca> > --- > MAINTAINERS | 7 +++ > include/linux/ltt-core.h | 10 ++++ > ltt/ltt-core.c | 101 +++++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 118 insertions(+) > > Index: linux-2.6-lttng/MAINTAINERS > =================================================================== > --- linux-2.6-lttng.orig/MAINTAINERS 2009-03-04 13:24:38.000000000 -0500 > +++ linux-2.6-lttng/MAINTAINERS 2009-03-04 13:24:59.000000000 -0500 > @@ -2766,6 +2766,13 @@ P: Eric Piel > M: eric.piel at tremplin-utc.net > S: Maintained > > +LINUX TRACE TOOLKIT NEXT GENERATION > +P: Mathieu Desnoyers > +M: mathieu.desnoyers at polymtl.ca > +L: ltt-dev at lttng.org > +W: http://ltt.polymtl.ca > +S: Maintained > + > LM83 HARDWARE MONITOR DRIVER > P: Jean Delvare > M: khali at linux-fr.org > Index: linux-2.6-lttng/ltt/ltt-core.c > =================================================================== > --- /dev/null 1970-01-01 00:00:00.000000000 +0000 > +++ linux-2.6-lttng/ltt/ltt-core.c 2009-03-04 13:36:17.000000000 -0500 > @@ -0,0 +1,101 @@ > +/* > + * LTT core in-kernel infrastructure. > + * > + * Copyright 2006 - Mathieu Desnoyers mathieu.desnoyers at polymtl.ca > + * > + * Distributed under the GPL license > + */ > + > +#include <linux/ltt-core.h> > +#include <linux/percpu.h> > +#include <linux/module.h> > +#include <linux/debugfs.h> > +#include <linux/kref.h> > + > +/* Traces structures */ > +struct ltt_traces ltt_traces = { > + .setup_head = LIST_HEAD_INIT(ltt_traces.setup_head), > + .head = LIST_HEAD_INIT(ltt_traces.head), > +}; > +EXPORT_SYMBOL(ltt_traces); > + > +/* Traces list writer locking */ > +static DEFINE_MUTEX(ltt_traces_mutex); > + > +/* root dentry mutex */ > +static DEFINE_MUTEX(ltt_root_mutex); > +/* dentry of ltt's root dir */ > +static struct dentry *ltt_root_dentry; > +static struct kref ltt_root_kref = { > + .refcount = ATOMIC_INIT(0), > +}; > + > +static void ltt_root_release(struct kref *ref) > +{ > + debugfs_remove(ltt_root_dentry); > + ltt_root_dentry = NULL; > +} > + > +void put_ltt_root(void) > +{ > + mutex_lock(<t_root_mutex); > + if (ltt_root_dentry) > + kref_put(<t_root_kref, ltt_root_release); > + mutex_unlock(<t_root_mutex); > +} > +EXPORT_SYMBOL_GPL(put_ltt_root); > + > +struct dentry *get_ltt_root(void) > +{ > + mutex_lock(<t_root_mutex); > + if (!ltt_root_dentry) { > + ltt_root_dentry = debugfs_create_dir(LTT_ROOT, NULL); > + if (!ltt_root_dentry) { > + printk(KERN_ERR "LTT : create ltt root dir failed\n"); > + goto out; > + } > + kref_init(<t_root_kref); > + goto out; > + } > + kref_get(<t_root_kref); > +out: > + mutex_unlock(<t_root_mutex); > + return ltt_root_dentry; > +} > +EXPORT_SYMBOL_GPL(get_ltt_root); > + > +void ltt_lock_traces(void) > +{ > + mutex_lock(<t_traces_mutex); > +} > +EXPORT_SYMBOL_GPL(ltt_lock_traces); > + > +void ltt_unlock_traces(void) > +{ > + mutex_unlock(<t_traces_mutex); > +} > +EXPORT_SYMBOL_GPL(ltt_unlock_traces); > + > +DEFINE_PER_CPU(unsigned int, ltt_nesting); > +EXPORT_PER_CPU_SYMBOL(ltt_nesting); > + > +int ltt_run_filter_default(void *trace, uint16_t eID) > +{ > + return 1; > +} > + > +/* This function pointer is protected by a trace activation check */ > +ltt_run_filter_functor ltt_run_filter = ltt_run_filter_default; > +EXPORT_SYMBOL_GPL(ltt_run_filter); > + > +void ltt_filter_register(ltt_run_filter_functor func) > +{ > + ltt_run_filter = func; > +} > +EXPORT_SYMBOL_GPL(ltt_filter_register); > + > +void ltt_filter_unregister(void) > +{ > + ltt_run_filter = ltt_run_filter_default; > +} > +EXPORT_SYMBOL_GPL(ltt_filter_unregister); > > -- > Mathieu Desnoyers > OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 > ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 03/41] LTTng core x86 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 01/41] LTTng - core header Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 02/41] LTTng - core data structures Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 04/41] LTTng core powerpc Mathieu Desnoyers ` (39 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-core-x86.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/ca50701d/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 03/41] LTTng core x86 2009-03-05 22:47 ` [ltt-dev] [RFC patch 03/41] LTTng core x86 Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-core-x86.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/ca50701d/attachment-0001.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 03/41] LTTng core x86 2009-03-05 22:47 ` [ltt-dev] [RFC patch 03/41] LTTng core x86 Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-core-x86.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/ca50701d/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 04/41] LTTng core powerpc 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (2 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 03/41] LTTng core x86 Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 05/41] LTTng relay buffer allocation, read, write Mathieu Desnoyers ` (38 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-core-powerpc.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/7ed44b0c/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 04/41] LTTng core powerpc 2009-03-05 22:47 ` [ltt-dev] [RFC patch 04/41] LTTng core powerpc Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-core-powerpc.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/7ed44b0c/attachment-0001.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 04/41] LTTng core powerpc 2009-03-05 22:47 ` [ltt-dev] [RFC patch 04/41] LTTng core powerpc Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-core-powerpc.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/7ed44b0c/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 05/41] LTTng relay buffer allocation, read, write 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (3 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 04/41] LTTng core powerpc Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers ` (2 more replies) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 06/41] LTTng optimize write to page function Mathieu Desnoyers ` (37 subsequent siblings) 42 siblings, 3 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-relay-alloc.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/daf7f4b0/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 05/41] LTTng relay buffer allocation, read, write 2009-03-05 22:47 ` [ltt-dev] [RFC patch 05/41] LTTng relay buffer allocation, read, write Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-06 19:19 ` Steven Rostedt 2 siblings, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-relay-alloc.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/daf7f4b0/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 05/41] LTTng relay buffer allocation, read, write 2009-03-05 22:47 ` [ltt-dev] [RFC patch 05/41] LTTng relay buffer allocation, read, write Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-06 19:19 ` Steven Rostedt 2 siblings, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-relay-alloc.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/daf7f4b0/attachment-0001.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 05/41] LTTng relay buffer allocation, read, write 2009-03-05 22:47 ` [ltt-dev] [RFC patch 05/41] LTTng relay buffer allocation, read, write Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-06 19:19 ` Steven Rostedt 2009-03-06 20:01 ` Mathieu Desnoyers 2 siblings, 1 reply; 141+ messages in thread From: Steven Rostedt @ 2009-03-06 19:19 UTC (permalink / raw) On Thu, 5 Mar 2009, Mathieu Desnoyers wrote: > As I told Martin, I was thinking about taking an axe and moving stuff around in > relay. Which I just did. > > This patch reimplements relay with a linked list of pages. Provides read/write > wrappers which should be used to read or write from the buffers. It's the core > of a layered approach to the design requirements expressed by Martin and > discussed earlier. > > It does not provide _any_ sort of locking on buffer data. Locking should be done > by the caller. Given that we might think of very lightweight locking schemes, it > makes sense to me that the underlying buffering infrastructure supports event > records larger than 1 page. You bring up two points. 1) lockless 2) larger than 1 page of data Soon the ring buffer will be lockless on the write side. On the read side we have locking. This could be changed to allow for a new API with specific requirements that does not need reader side locking. If the ring buffer is strictly produce/consumer without overwrite, then it would make sense to have a lockless system on both reader and writer. I have even expressed interest in implementing this. But right now my focus has been on getting other aspects working. Ftrace runs in overwrite mode so it must have the locking. > > A cache saving 4 pointers is used to keep track of current page used for the > buffer for write, current page read and two contiguous subbuffer header pointer > lookup. The offset of each page within the buffer is saved in a structure > containing the offset, linked list and page frame pointer to permit cache lookup > without extra locking. I'm also all for optimizations. Right now the focus has been on making sure the ring buffer can do all that is requested of it. I wanted it to be able to useful for all users, not focused on a select few. This actually includes ftrace. That is, I did not develop the ring buffer to have only ftrace as its only user. > > The offset and linked list are not placed in the page frame itself to allow > using the pages directly for disk I/O, network I/O or to mmap it to userspace > for live processing. > > Write and header address lookup tested through LTTng. This patch contains > self-test code which detects if a client is actually trying to use the > read/write/get header address API to do random buffer offset access. If such > behavior is detected, a warning message is issued and the random access is done > as requested. Hmm, if a warning message is done, it seems that the tracer should shut down. Either support the operation or do not support it. Do not give the user a "Oh, you really should not do that, but I'll let you anyway". Otherwise you will be pressured to make it a true feature. > > TODO : Currently, no splice file operations are implemented. Should come soon. > The idea is to splice the buffers directly into files or to the network. > We have to make sure the page frame fields used are not used by disk I/O or > network. > > Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers at polymtl.ca> > CC: Jens Axboe <jens.axboe at oracle.com> > CC: Martin Bligh <mbligh at google.com> > CC: Peter Zijlstra <a.p.zijlstra at chello.nl> > CC: Tom Zanussi <zanussi at comcast.net> > CC: prasad at linux.vnet.ibm.com > CC: Linus Torvalds <torvalds at linux-foundation.org> > CC: Thomas Gleixner <tglx at linutronix.de> > CC: Steven Rostedt <rostedt at goodmis.org> > CC: od at suse.com > CC: "Frank Ch. Eigler" <fche at redhat.com> > CC: Andrew Morton <akpm at linux-foundation.org> > CC: hch at lst.de > CC: David Wilder <dwilder at us.ibm.com> > --- > include/linux/ltt-relay.h | 182 +++++++++++ > ltt/ltt-relay-alloc.c | 705 ++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 887 insertions(+) > > Index: linux-2.6-lttng/ltt/ltt-relay-alloc.c > =================================================================== > --- /dev/null 1970-01-01 00:00:00.000000000 +0000 > +++ linux-2.6-lttng/ltt/ltt-relay-alloc.c 2009-03-05 15:05:56.000000000 -0500 > @@ -0,0 +1,705 @@ > +/* > + * Public API and common code for kernel->userspace relay file support. > + * > + * Copyright (C) 2002-2005 - Tom Zanussi (zanussi at us.ibm.com), IBM Corp > + * Copyright (C) 1999-2005 - Karim Yaghmour (karim at opersys.com) > + * Copyright (C) 2008 - Mathieu Desnoyers (mathieu.desnoyers at polymtl.ca) > + * > + * Moved to kernel/relay.c by Paul Mundt, 2006. > + * November 2006 - CPU hotplug support by Mathieu Desnoyers > + * (mathieu.desnoyers at polymtl.ca) > + * > + * This file is released under the GPL. > + */ > +#include <linux/errno.h> > +#include <linux/stddef.h> > +#include <linux/slab.h> > +#include <linux/module.h> > +#include <linux/string.h> > +#include <linux/ltt-relay.h> > +#include <linux/vmalloc.h> > +#include <linux/mm.h> > +#include <linux/cpu.h> > +#include <linux/splice.h> > +#include <linux/bitops.h> > + > +/* list of open channels, for cpu hotplug */ > +static DEFINE_MUTEX(relay_channels_mutex); > +static LIST_HEAD(relay_channels); > + > +/** > + * relay_alloc_buf - allocate a channel buffer > + * @buf: the buffer struct > + * @size: total size of the buffer > + */ > +static int relay_alloc_buf(struct rchan_buf *buf, size_t *size) > +{ > + unsigned int i, n_pages; > + struct buf_page *buf_page, *n; > + > + *size = PAGE_ALIGN(*size); > + n_pages = *size >> PAGE_SHIFT; > + > + INIT_LIST_HEAD(&buf->pages); > + > + for (i = 0; i < n_pages; i++) { > + buf_page = kmalloc_node(sizeof(*buf_page), GFP_KERNEL, > + cpu_to_node(buf->cpu)); > + if (unlikely(!buf_page)) > + goto depopulate; > + buf_page->page = alloc_pages_node(cpu_to_node(buf->cpu), > + GFP_KERNEL | __GFP_ZERO, 0); So these buffers allocate single pages? > + if (unlikely(!buf_page->page)) { > + kfree(buf_page); > + goto depopulate; > + } > + list_add_tail(&buf_page->list, &buf->pages); > + buf_page->offset = (size_t)i << PAGE_SHIFT; > + set_page_private(buf_page->page, (unsigned long)buf_page); > + if (i == 0) { > + buf->wpage = buf_page; > + buf->hpage[0] = buf_page; > + buf->hpage[1] = buf_page; > + buf->rpage = buf_page; > + } > + } > + buf->page_count = n_pages; > + return 0; > + > +depopulate: > + list_for_each_entry_safe(buf_page, n, &buf->pages, list) { > + list_del_init(&buf_page->list); > + __free_page(buf_page->page); > + kfree(buf_page); > + } > + return -ENOMEM; > +} > + > +/** > + * relay_create_buf - allocate and initialize a channel buffer > + * @chan: the relay channel > + * @cpu: cpu the buffer belongs to > + * > + * Returns channel buffer if successful, %NULL otherwise. > + */ > +static struct rchan_buf *relay_create_buf(struct rchan *chan, int cpu) > +{ > + int ret; > + struct rchan_buf *buf = kzalloc(sizeof(struct rchan_buf), GFP_KERNEL); > + if (!buf) > + return NULL; > + > + buf->cpu = cpu; > + ret = relay_alloc_buf(buf, &chan->alloc_size); > + if (ret) > + goto free_buf; > + > + buf->chan = chan; > + kref_get(&buf->chan->kref); > + return buf; > + > +free_buf: > + kfree(buf); > + return NULL; > +} > + > +/** > + * relay_destroy_channel - free the channel struct > + * @kref: target kernel reference that contains the relay channel > + * > + * Should only be called from kref_put(). > + */ > +static void relay_destroy_channel(struct kref *kref) > +{ > + struct rchan *chan = container_of(kref, struct rchan, kref); > + kfree(chan); > +} > + > +void ltt_relay_get_chan(struct rchan *chan) > +{ > + kref_get(&chan->kref); > +} > +EXPORT_SYMBOL_GPL(ltt_relay_get_chan); > + > +void ltt_relay_put_chan(struct rchan *chan) > +{ > + kref_put(&chan->kref, relay_destroy_channel); > +} > +EXPORT_SYMBOL_GPL(ltt_relay_put_chan); > + > +/** > + * relay_destroy_buf - destroy an rchan_buf struct and associated buffer > + * @buf: the buffer struct > + */ > +static void relay_destroy_buf(struct rchan_buf *buf) > +{ > + struct rchan *chan = buf->chan; > + struct buf_page *buf_page, *n; > + > + list_for_each_entry_safe(buf_page, n, &buf->pages, list) { > + list_del_init(&buf_page->list); > + __free_page(buf_page->page); > + kfree(buf_page); > + } > + chan->buf[buf->cpu] = NULL; > + kfree(buf); > + kref_put(&chan->kref, relay_destroy_channel); > +} > + > +/** > + * relay_remove_buf - remove a channel buffer > + * @kref: target kernel reference that contains the relay buffer > + * > + * Removes the file from the fileystem, which also frees the > + * rchan_buf_struct and the channel buffer. Should only be called from > + * kref_put(). > + */ > +static void relay_remove_buf(struct kref *kref) > +{ > + struct rchan_buf *buf = container_of(kref, struct rchan_buf, kref); > + buf->chan->cb->remove_buf_file(buf->dentry); > + relay_destroy_buf(buf); > +} > + > +void ltt_relay_get_chan_buf(struct rchan_buf *buf) > +{ > + kref_get(&buf->kref); > +} > +EXPORT_SYMBOL_GPL(ltt_relay_get_chan_buf); > + > +void ltt_relay_put_chan_buf(struct rchan_buf *buf) > +{ > + kref_put(&buf->kref, relay_remove_buf); > +} > +EXPORT_SYMBOL_GPL(ltt_relay_put_chan_buf); > + > +/* > + * High-level relay kernel API and associated functions. > + */ > + > +/* > + * rchan_callback implementations defining default channel behavior. Used > + * in place of corresponding NULL values in client callback struct. > + */ > + > +/* > + * create_buf_file_create() default callback. Does nothing. > + */ > +static struct dentry *create_buf_file_default_callback(const char *filename, > + struct dentry *parent, > + int mode, > + struct rchan_buf *buf) > +{ > + return NULL; > +} > + > +/* > + * remove_buf_file() default callback. Does nothing. > + */ > +static int remove_buf_file_default_callback(struct dentry *dentry) > +{ > + return -EINVAL; > +} > + > +/* relay channel default callbacks */ > +static struct rchan_callbacks default_channel_callbacks = { > + .create_buf_file = create_buf_file_default_callback, > + .remove_buf_file = remove_buf_file_default_callback, > +}; > + > +/** > + * __relay_reset - reset a channel buffer > + * @buf: the channel buffer > + * @init: 1 if this is a first-time initialization > + * > + * See relay_reset() for description of effect. > + */ > +static void __relay_reset(struct rchan_buf *buf, unsigned int init) > +{ > + if (init) > + kref_init(&buf->kref); > +} > + > +/* > + * relay_open_buf - create a new relay channel buffer > + * > + * used by relay_open() and CPU hotplug. > + */ > +static struct rchan_buf *relay_open_buf(struct rchan *chan, unsigned int cpu) > +{ > + struct rchan_buf *buf = NULL; > + struct dentry *dentry; > + char *tmpname; > + > + tmpname = kzalloc(NAME_MAX + 1, GFP_KERNEL); > + if (!tmpname) > + goto end; > + snprintf(tmpname, NAME_MAX, "%s%d", chan->base_filename, cpu); > + > + buf = relay_create_buf(chan, cpu); > + if (!buf) > + goto free_name; > + > + __relay_reset(buf, 1); > + > + /* Create file in fs */ > + dentry = chan->cb->create_buf_file(tmpname, chan->parent, S_IRUSR, > + buf); > + if (!dentry) > + goto free_buf; > + > + buf->dentry = dentry; > + > + goto free_name; > + > +free_buf: > + relay_destroy_buf(buf); > + buf = NULL; > +free_name: > + kfree(tmpname); > +end: > + return buf; > +} > + > +/** > + * relay_close_buf - close a channel buffer > + * @buf: channel buffer > + * > + * Restores the default callbacks. > + * The channel buffer and channel buffer data structure are then freed > + * automatically when the last reference is given up. > + */ > +static void relay_close_buf(struct rchan_buf *buf) > +{ > + kref_put(&buf->kref, relay_remove_buf); > +} > + > +static void setup_callbacks(struct rchan *chan, > + struct rchan_callbacks *cb) > +{ > + if (!cb) { > + chan->cb = &default_channel_callbacks; > + return; > + } > + > + if (!cb->create_buf_file) > + cb->create_buf_file = create_buf_file_default_callback; > + if (!cb->remove_buf_file) > + cb->remove_buf_file = remove_buf_file_default_callback; > + chan->cb = cb; > +} > + > +/** > + * relay_hotcpu_callback - CPU hotplug callback > + * @nb: notifier block > + * @action: hotplug action to take > + * @hcpu: CPU number > + * > + * Returns the success/failure of the operation. (%NOTIFY_OK, %NOTIFY_BAD) > + */ > +static int __cpuinit relay_hotcpu_callback(struct notifier_block *nb, > + unsigned long action, > + void *hcpu) > +{ > + unsigned int hotcpu = (unsigned long)hcpu; > + struct rchan *chan; > + > + switch (action) { > + case CPU_UP_PREPARE: > + case CPU_UP_PREPARE_FROZEN: > + mutex_lock(&relay_channels_mutex); > + list_for_each_entry(chan, &relay_channels, list) { > + if (chan->buf[hotcpu]) > + continue; > + chan->buf[hotcpu] = relay_open_buf(chan, hotcpu); > + if (!chan->buf[hotcpu]) { > + printk(KERN_ERR > + "relay_hotcpu_callback: cpu %d buffer " > + "creation failed\n", hotcpu); > + mutex_unlock(&relay_channels_mutex); > + return NOTIFY_BAD; > + } > + } > + mutex_unlock(&relay_channels_mutex); > + break; > + case CPU_DEAD: > + case CPU_DEAD_FROZEN: > + /* No need to flush the cpu : will be flushed upon > + * final relay_flush() call. */ > + break; > + } > + return NOTIFY_OK; > +} > + > +/** > + * ltt_relay_open - create a new relay channel > + * @base_filename: base name of files to create > + * @parent: dentry of parent directory, %NULL for root directory > + * @subbuf_size: size of sub-buffers > + * @n_subbufs: number of sub-buffers > + * @cb: client callback functions > + * @private_data: user-defined data > + * > + * Returns channel pointer if successful, %NULL otherwise. > + * > + * Creates a channel buffer for each cpu using the sizes and > + * attributes specified. The created channel buffer files > + * will be named base_filename0...base_filenameN-1. File > + * permissions will be %S_IRUSR. > + */ > +struct rchan *ltt_relay_open(const char *base_filename, > + struct dentry *parent, > + size_t subbuf_size, > + size_t n_subbufs, > + struct rchan_callbacks *cb, > + void *private_data) > +{ > + unsigned int i; > + struct rchan *chan; > + if (!base_filename) > + return NULL; > + > + if (!(subbuf_size && n_subbufs)) > + return NULL; > + > + chan = kzalloc(sizeof(struct rchan), GFP_KERNEL); > + if (!chan) > + return NULL; > + > + chan->version = LTT_RELAY_CHANNEL_VERSION; > + chan->n_subbufs = n_subbufs; > + chan->subbuf_size = subbuf_size; You declare the sub buf size here, but I do not see how it gets allocated. -- Steve > + chan->subbuf_size_order = get_count_order(subbuf_size); > + chan->alloc_size = FIX_SIZE(subbuf_size * n_subbufs); > + chan->parent = parent; > + chan->private_data = private_data; > + strlcpy(chan->base_filename, base_filename, NAME_MAX); > + setup_callbacks(chan, cb); > + kref_init(&chan->kref); > + > + mutex_lock(&relay_channels_mutex); > + for_each_online_cpu(i) { > + chan->buf[i] = relay_open_buf(chan, i); > + if (!chan->buf[i]) > + goto free_bufs; > + } > + list_add(&chan->list, &relay_channels); > + mutex_unlock(&relay_channels_mutex); > + > + return chan; > + > +free_bufs: > + for_each_possible_cpu(i) { > + if (!chan->buf[i]) > + break; > + relay_close_buf(chan->buf[i]); > + } > + > + kref_put(&chan->kref, relay_destroy_channel); > + mutex_unlock(&relay_channels_mutex); > + return NULL; > +} > +EXPORT_SYMBOL_GPL(ltt_relay_open); > + > +/** > + * ltt_relay_close - close the channel > + * @chan: the channel > + * > + * Closes all channel buffers and frees the channel. > + */ > +void ltt_relay_close(struct rchan *chan) > +{ > + unsigned int i; > + > + if (!chan) > + return; > + > + mutex_lock(&relay_channels_mutex); > + for_each_possible_cpu(i) > + if (chan->buf[i]) > + relay_close_buf(chan->buf[i]); > + > + list_del(&chan->list); > + kref_put(&chan->kref, relay_destroy_channel); > + mutex_unlock(&relay_channels_mutex); > +} > +EXPORT_SYMBOL_GPL(ltt_relay_close); > + > +/* > + * Start iteration at the previous element. Skip the real list head. > + */ > +static struct buf_page *ltt_relay_find_prev_page(struct rchan_buf *buf, > + struct buf_page *page, size_t offset, ssize_t diff_offset) > +{ > + struct buf_page *iter; > + size_t orig_iter_off; > + unsigned int i = 0; > + > + orig_iter_off = page->offset; > + list_for_each_entry_reverse(iter, &page->list, list) { > + /* > + * Skip the real list head. > + */ > + if (&iter->list == &buf->pages) > + continue; > + i++; > + if (offset >= iter->offset > + && offset < iter->offset + PAGE_SIZE) { > +#ifdef CONFIG_LTT_RELAY_CHECK_RANDOM_ACCESS > + if (i > 1) { > + printk(KERN_WARNING > + "Backward random access detected in " > + "ltt_relay. Iterations %u, " > + "offset %zu, orig iter->off %zu, " > + "iter->off %zu diff_offset %zd.\n", i, > + offset, orig_iter_off, iter->offset, > + diff_offset); > + WARN_ON(1); > + } > +#endif > + return iter; > + } > + } > + return NULL; > +} > + > +/* > + * Start iteration at the next element. Skip the real list head. > + */ > +static struct buf_page *ltt_relay_find_next_page(struct rchan_buf *buf, > + struct buf_page *page, size_t offset, ssize_t diff_offset) > +{ > + struct buf_page *iter; > + unsigned int i = 0; > + size_t orig_iter_off; > + > + orig_iter_off = page->offset; > + list_for_each_entry(iter, &page->list, list) { > + /* > + * Skip the real list head. > + */ > + if (&iter->list == &buf->pages) > + continue; > + i++; > + if (offset >= iter->offset > + && offset < iter->offset + PAGE_SIZE) { > +#ifdef CONFIG_LTT_RELAY_CHECK_RANDOM_ACCESS > + if (i > 1) { > + printk(KERN_WARNING > + "Forward random access detected in " > + "ltt_relay. Iterations %u, " > + "offset %zu, orig iter->off %zu, " > + "iter->off %zu diff_offset %zd.\n", i, > + offset, orig_iter_off, iter->offset, > + diff_offset); > + WARN_ON(1); > + } > +#endif > + return iter; > + } > + } > + return NULL; > +} > + > +/* > + * Find the page containing "offset". Cache it if it is after the currently > + * cached page. > + */ > +static struct buf_page *ltt_relay_cache_page(struct rchan_buf *buf, > + struct buf_page **page_cache, > + struct buf_page *page, size_t offset) > +{ > + ssize_t diff_offset; > + ssize_t half_buf_size = buf->chan->alloc_size >> 1; > + > + /* > + * Make sure this is the page we want to write into. The current > + * page is changed concurrently by other writers. [wrh]page are > + * used as a cache remembering the last page written > + * to/read/looked up for header address. No synchronization; > + * could have to find the previous page is a nested write > + * occured. Finding the right page is done by comparing the > + * dest_offset with the buf_page offsets. > + * When at the exact opposite of the buffer, bias towards forward search > + * because it will be cached. > + */ > + > + diff_offset = (ssize_t)offset - (ssize_t)page->offset; > + if (diff_offset <= -(ssize_t)half_buf_size) > + diff_offset += buf->chan->alloc_size; > + else if (diff_offset > half_buf_size) > + diff_offset -= buf->chan->alloc_size; > + > + if (unlikely(diff_offset >= (ssize_t)PAGE_SIZE)) { > + page = ltt_relay_find_next_page(buf, page, offset, diff_offset); > + WARN_ON(!page); > + *page_cache = page; > + } else if (unlikely(diff_offset < 0)) { > + page = ltt_relay_find_prev_page(buf, page, offset, diff_offset); > + WARN_ON(!page); > + } > + return page; > +} > + > +/** > + * ltt_relay_write - write data to a ltt_relay buffer. > + * @buf : buffer > + * @offset : offset within the buffer > + * @src : source address > + * @len : length to write > + */ > +int ltt_relay_write(struct rchan_buf *buf, size_t offset, > + const void *src, size_t len) > +{ > + struct buf_page *page; > + ssize_t pagecpy, orig_len; > + > + orig_len = len; > + offset &= buf->chan->alloc_size - 1; > + page = buf->wpage; > + if (unlikely(!len)) > + return 0; > + for (;;) { > + page = ltt_relay_cache_page(buf, &buf->wpage, page, offset); > + pagecpy = min_t(size_t, len, PAGE_SIZE - (offset & ~PAGE_MASK)); > + memcpy(page_address(page->page) > + + (offset & ~PAGE_MASK), src, pagecpy); > + len -= pagecpy; > + if (likely(!len)) > + break; > + src += pagecpy; > + offset += pagecpy; > + /* > + * Underlying layer should never ask for writes across > + * subbuffers. > + */ > + WARN_ON(offset >= buf->chan->alloc_size); > + } > + return orig_len; > +} > +EXPORT_SYMBOL_GPL(ltt_relay_write); > + > +/** > + * ltt_relay_read - read data from ltt_relay_buffer. > + * @buf : buffer > + * @offset : offset within the buffer > + * @dest : destination address > + * @len : length to write > + */ > +int ltt_relay_read(struct rchan_buf *buf, size_t offset, > + void *dest, size_t len) > +{ > + struct buf_page *page; > + ssize_t pagecpy, orig_len; > + > + orig_len = len; > + offset &= buf->chan->alloc_size - 1; > + page = buf->rpage; > + if (unlikely(!len)) > + return 0; > + for (;;) { > + page = ltt_relay_cache_page(buf, &buf->rpage, page, offset); > + pagecpy = min_t(size_t, len, PAGE_SIZE - (offset & ~PAGE_MASK)); > + memcpy(dest, page_address(page->page) + (offset & ~PAGE_MASK), > + pagecpy); > + len -= pagecpy; > + if (likely(!len)) > + break; > + dest += pagecpy; > + offset += pagecpy; > + /* > + * Underlying layer should never ask for reads across > + * subbuffers. > + */ > + WARN_ON(offset >= buf->chan->alloc_size); > + } > + return orig_len; > +} > +EXPORT_SYMBOL_GPL(ltt_relay_read); > + > +/** > + * ltt_relay_read_get_page - Get a whole page to read from > + * @buf : buffer > + * @offset : offset within the buffer > + */ > +struct buf_page *ltt_relay_read_get_page(struct rchan_buf *buf, size_t offset) > +{ > + struct buf_page *page; > + > + offset &= buf->chan->alloc_size - 1; > + page = buf->rpage; > + page = ltt_relay_cache_page(buf, &buf->rpage, page, offset); > + return page; > +} > +EXPORT_SYMBOL_GPL(ltt_relay_read_get_page); > + > +/** > + * ltt_relay_offset_address - get address of a location within the buffer > + * @buf : buffer > + * @offset : offset within the buffer. > + * > + * Return the address where a given offset is located. > + * Should be used to get the current subbuffer header pointer. Given we know > + * it's never on a page boundary, it's safe to write directly to this address, > + * as long as the write is never bigger than a page size. > + */ > +void *ltt_relay_offset_address(struct rchan_buf *buf, size_t offset) > +{ > + struct buf_page *page; > + unsigned int odd; > + > + offset &= buf->chan->alloc_size - 1; > + odd = !!(offset & buf->chan->subbuf_size); > + page = buf->hpage[odd]; > + if (offset < page->offset || offset >= page->offset + PAGE_SIZE) > + buf->hpage[odd] = page = buf->wpage; > + page = ltt_relay_cache_page(buf, &buf->hpage[odd], page, offset); > + return page_address(page->page) + (offset & ~PAGE_MASK); > +} > +EXPORT_SYMBOL_GPL(ltt_relay_offset_address); > + > +/** > + * relay_file_open - open file op for relay files > + * @inode: the inode > + * @filp: the file > + * > + * Increments the channel buffer refcount. > + */ > +static int relay_file_open(struct inode *inode, struct file *filp) > +{ > + struct rchan_buf *buf = inode->i_private; > + kref_get(&buf->kref); > + filp->private_data = buf; > + > + return nonseekable_open(inode, filp); > +} > + > +/** > + * relay_file_release - release file op for relay files > + * @inode: the inode > + * @filp: the file > + * > + * Decrements the channel refcount, as the filesystem is > + * no longer using it. > + */ > +static int relay_file_release(struct inode *inode, struct file *filp) > +{ > + struct rchan_buf *buf = filp->private_data; > + kref_put(&buf->kref, relay_remove_buf); > + > + return 0; > +} > + > +const struct file_operations ltt_relay_file_operations = { > + .open = relay_file_open, > + .release = relay_file_release, > +}; > +EXPORT_SYMBOL_GPL(ltt_relay_file_operations); > + > +static __init int relay_init(void) > +{ > + hotcpu_notifier(relay_hotcpu_callback, 5); > + return 0; > +} > + > +module_init(relay_init); > Index: linux-2.6-lttng/include/linux/ltt-relay.h > =================================================================== > --- /dev/null 1970-01-01 00:00:00.000000000 +0000 > +++ linux-2.6-lttng/include/linux/ltt-relay.h 2009-03-05 15:05:56.000000000 -0500 > @@ -0,0 +1,182 @@ > +/* > + * linux/include/linux/ltt-relay.h > + * > + * Copyright (C) 2002, 2003 - Tom Zanussi (zanussi at us.ibm.com), IBM Corp > + * Copyright (C) 1999, 2000, 2001, 2002 - Karim Yaghmour (karim at opersys.com) > + * Copyright (C) 2008 - Mathieu Desnoyers (mathieu.desnoyers at polymtl.ca) > + * > + * CONFIG_RELAY definitions and declarations > + */ > + > +#ifndef _LINUX_LTT_RELAY_H > +#define _LINUX_LTT_RELAY_H > + > +#include <linux/types.h> > +#include <linux/sched.h> > +#include <linux/timer.h> > +#include <linux/wait.h> > +#include <linux/list.h> > +#include <linux/fs.h> > +#include <linux/poll.h> > +#include <linux/kref.h> > +#include <linux/mm.h> > + > +/* Needs a _much_ better name... */ > +#define FIX_SIZE(x) ((((x) - 1) & PAGE_MASK) + PAGE_SIZE) > + > +/* > + * Tracks changes to rchan/rchan_buf structs > + */ > +#define LTT_RELAY_CHANNEL_VERSION 8 > + > +struct rchan_buf; > + > +struct buf_page { > + struct page *page; > + size_t offset; /* page offset in the buffer */ > + struct list_head list; /* buffer linked list */ > +}; > + > +/* > + * Per-cpu relay channel buffer > + */ > +struct rchan_buf { > + void *chan_private; /* private data for this buf */ > + struct rchan *chan; /* associated channel */ > + struct dentry *dentry; /* channel file dentry */ > + struct kref kref; /* channel buffer refcount */ > + struct list_head pages; /* list of buffer pages */ > + struct buf_page *wpage; /* current write page (cache) */ > + struct buf_page *hpage[2]; /* current subbuf header page (cache) */ > + struct buf_page *rpage; /* current subbuf read page (cache) */ > + unsigned int page_count; /* number of current buffer pages */ > + unsigned int cpu; /* this buf's cpu */ > +} ____cacheline_aligned; > + > +/* > + * Relay channel data structure > + */ > +struct rchan { > + u32 version; /* the version of this struct */ > + size_t subbuf_size; /* sub-buffer size */ > + size_t n_subbufs; /* number of sub-buffers per buffer */ > + size_t alloc_size; /* total buffer size allocated */ > + struct rchan_callbacks *cb; /* client callbacks */ > + struct kref kref; /* channel refcount */ > + void *private_data; /* for user-defined data */ > + struct rchan_buf *buf[NR_CPUS]; /* per-cpu channel buffers */ > + struct list_head list; /* for channel list */ > + struct dentry *parent; /* parent dentry passed to open */ > + int subbuf_size_order; /* order of sub-buffer size */ > + char base_filename[NAME_MAX]; /* saved base filename */ > +}; > + > +/* > + * Relay channel client callbacks > + */ > +struct rchan_callbacks { > + /* > + * subbuf_start - called on buffer-switch to a new sub-buffer > + * @buf: the channel buffer containing the new sub-buffer > + * @subbuf: the start of the new sub-buffer > + * @prev_subbuf: the start of the previous sub-buffer > + * @prev_padding: unused space at the end of previous sub-buffer > + * > + * The client should return 1 to continue logging, 0 to stop > + * logging. > + * > + * NOTE: subbuf_start will also be invoked when the buffer is > + * created, so that the first sub-buffer can be initialized > + * if necessary. In this case, prev_subbuf will be NULL. > + * > + * NOTE: the client can reserve bytes at the beginning of the new > + * sub-buffer by calling subbuf_start_reserve() in this callback. > + */ > + int (*subbuf_start) (struct rchan_buf *buf, > + void *subbuf, > + void *prev_subbuf, > + size_t prev_padding); > + > + /* > + * create_buf_file - create file to represent a relay channel buffer > + * @filename: the name of the file to create > + * @parent: the parent of the file to create > + * @mode: the mode of the file to create > + * @buf: the channel buffer > + * > + * Called during relay_open(), once for each per-cpu buffer, > + * to allow the client to create a file to be used to > + * represent the corresponding channel buffer. If the file is > + * created outside of relay, the parent must also exist in > + * that filesystem. > + * > + * The callback should return the dentry of the file created > + * to represent the relay buffer. > + * > + * Setting the is_global outparam to a non-zero value will > + * cause relay_open() to create a single global buffer rather > + * than the default set of per-cpu buffers. > + * > + * See Documentation/filesystems/relayfs.txt for more info. > + */ > + struct dentry *(*create_buf_file)(const char *filename, > + struct dentry *parent, > + int mode, > + struct rchan_buf *buf); > + > + /* > + * remove_buf_file - remove file representing a relay channel buffer > + * @dentry: the dentry of the file to remove > + * > + * Called during relay_close(), once for each per-cpu buffer, > + * to allow the client to remove a file used to represent a > + * channel buffer. > + * > + * The callback should return 0 if successful, negative if not. > + */ > + int (*remove_buf_file)(struct dentry *dentry); > +}; > + > +extern int ltt_relay_write(struct rchan_buf *buf, size_t offset, > + const void *src, size_t len); > + > +extern int ltt_relay_read(struct rchan_buf *buf, size_t offset, > + void *dest, size_t len); > + > +extern struct buf_page *ltt_relay_read_get_page(struct rchan_buf *buf, > + size_t offset); > + > +/* > + * Return the address where a given offset is located. > + * Should be used to get the current subbuffer header pointer. Given we know > + * it's never on a page boundary, it's safe to write directly to this address, > + * as long as the write is never bigger than a page size. > + */ > +extern void *ltt_relay_offset_address(struct rchan_buf *buf, > + size_t offset); > + > +/* > + * CONFIG_LTT_RELAY kernel API, ltt/ltt-relay-alloc.c > + */ > + > +struct rchan *ltt_relay_open(const char *base_filename, > + struct dentry *parent, > + size_t subbuf_size, > + size_t n_subbufs, > + struct rchan_callbacks *cb, > + void *private_data); > +extern void ltt_relay_close(struct rchan *chan); > + > +void ltt_relay_get_chan(struct rchan *chan); > +void ltt_relay_put_chan(struct rchan *chan); > + > +void ltt_relay_get_chan_buf(struct rchan_buf *buf); > +void ltt_relay_put_chan_buf(struct rchan_buf *buf); > + > +/* > + * exported ltt_relay file operations, ltt/ltt-relay-alloc.c > + */ > +extern const struct file_operations ltt_relay_file_operations; > + > +#endif /* _LINUX_LTT_RELAY_H */ > + > > -- > Mathieu Desnoyers > OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 > ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 05/41] LTTng relay buffer allocation, read, write 2009-03-06 19:19 ` Steven Rostedt @ 2009-03-06 20:01 ` Mathieu Desnoyers 0 siblings, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-06 20:01 UTC (permalink / raw) * Steven Rostedt (rostedt at goodmis.org) wrote: > > On Thu, 5 Mar 2009, Mathieu Desnoyers wrote: > > > As I told Martin, I was thinking about taking an axe and moving stuff around in > > relay. Which I just did. > > > > This patch reimplements relay with a linked list of pages. Provides read/write > > wrappers which should be used to read or write from the buffers. It's the core > > of a layered approach to the design requirements expressed by Martin and > > discussed earlier. > > > > It does not provide _any_ sort of locking on buffer data. Locking should be done > > by the caller. Given that we might think of very lightweight locking schemes, it > > makes sense to me that the underlying buffering infrastructure supports event > > records larger than 1 page. > > You bring up two points. > > 1) lockless > > 2) larger than 1 page of data > > Soon the ring buffer will be lockless on the write side. On the read side > we have locking. This could be changed to allow for a new API with > specific requirements that does not need reader side locking. If the ring > buffer is strictly produce/consumer without overwrite, then it would make > sense to have a lockless system on both reader and writer. > > I have even expressed interest in implementing this. But right now my > focus has been on getting other aspects working. Ftrace runs in overwrite > mode so it must have the locking. > Note that this "buffer allocation" is not lockless in the sense that it deals with concurrent writers in a lockless manner. It just _does not provide_ any protection for the write side nor the read-side. The layer over this provides this. In this patchset, it's called "ltt-relay-locked" for the irq off/spinlock version of the concurrency management. I did not post the lockless version in this post, it is further down in my patchset and will probably require a bit more discussion. I really like to have the allocation and "locking management" layers separated, because we can then easily mix and match each of those. For allocation : - Page-based backend - Static array-based backend - Video memory based backend (useful for crash trace extraction, because this storage survives a hot reboot) For locking : - lockless - irq off/spinlock > > > > > A cache saving 4 pointers is used to keep track of current page used for the > > buffer for write, current page read and two contiguous subbuffer header pointer > > lookup. The offset of each page within the buffer is saved in a structure > > containing the offset, linked list and page frame pointer to permit cache lookup > > without extra locking. > > I'm also all for optimizations. Right now the focus has been on making > sure the ring buffer can do all that is requested of it. I wanted it to be > able to useful for all users, not focused on a select few. This actually > includes ftrace. That is, I did not develop the ring buffer to have only > ftrace as its only user. > I think we both agree that it's good to make the buffering infrastructure usable by all. > > > > The offset and linked list are not placed in the page frame itself to allow > > using the pages directly for disk I/O, network I/O or to mmap it to userspace > > for live processing. > > > > Write and header address lookup tested through LTTng. This patch contains > > self-test code which detects if a client is actually trying to use the > > read/write/get header address API to do random buffer offset access. If such > > behavior is detected, a warning message is issued and the random access is done > > as requested. > > Hmm, if a warning message is done, it seems that the tracer should shut > down. Either support the operation or do not support it. Do not give the > user a "Oh, you really should not do that, but I'll let you anyway". > Otherwise you will be pressured to make it a true feature. > It is _possible_ that such scenario occurs, and it is supported. It's just very unlikely. With the lockless tracer, if the tracing code is interrupted for a long time and still holds a reference to a previous page while the current write offset went too far away, then it's OK to do a backward-multiple-pages-walk. But it's very, very unlikely. And this debugging option helps pinpointing ill uses of the buffers in the "likely" path very quickly. So I would never consider it a "failure" per se. It's one of those useful tracer-debug-only options. > > > > TODO : Currently, no splice file operations are implemented. Should come soon. > > The idea is to splice the buffers directly into files or to the network. > > We have to make sure the page frame fields used are not used by disk I/O or > > network. > > > > Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers at polymtl.ca> > > CC: Jens Axboe <jens.axboe at oracle.com> > > CC: Martin Bligh <mbligh at google.com> > > CC: Peter Zijlstra <a.p.zijlstra at chello.nl> > > CC: Tom Zanussi <zanussi at comcast.net> > > CC: prasad at linux.vnet.ibm.com > > CC: Linus Torvalds <torvalds at linux-foundation.org> > > CC: Thomas Gleixner <tglx at linutronix.de> > > CC: Steven Rostedt <rostedt at goodmis.org> > > CC: od at suse.com > > CC: "Frank Ch. Eigler" <fche at redhat.com> > > CC: Andrew Morton <akpm at linux-foundation.org> > > CC: hch at lst.de > > CC: David Wilder <dwilder at us.ibm.com> > > --- > > include/linux/ltt-relay.h | 182 +++++++++++ > > ltt/ltt-relay-alloc.c | 705 ++++++++++++++++++++++++++++++++++++++++++++++ > > 2 files changed, 887 insertions(+) > > > > Index: linux-2.6-lttng/ltt/ltt-relay-alloc.c > > =================================================================== > > --- /dev/null 1970-01-01 00:00:00.000000000 +0000 > > +++ linux-2.6-lttng/ltt/ltt-relay-alloc.c 2009-03-05 15:05:56.000000000 -0500 > > @@ -0,0 +1,705 @@ > > +/* > > + * Public API and common code for kernel->userspace relay file support. > > + * > > + * Copyright (C) 2002-2005 - Tom Zanussi (zanussi at us.ibm.com), IBM Corp > > + * Copyright (C) 1999-2005 - Karim Yaghmour (karim at opersys.com) > > + * Copyright (C) 2008 - Mathieu Desnoyers (mathieu.desnoyers at polymtl.ca) > > + * > > + * Moved to kernel/relay.c by Paul Mundt, 2006. > > + * November 2006 - CPU hotplug support by Mathieu Desnoyers > > + * (mathieu.desnoyers at polymtl.ca) > > + * > > + * This file is released under the GPL. > > + */ > > +#include <linux/errno.h> > > +#include <linux/stddef.h> > > +#include <linux/slab.h> > > +#include <linux/module.h> > > +#include <linux/string.h> > > +#include <linux/ltt-relay.h> > > +#include <linux/vmalloc.h> > > +#include <linux/mm.h> > > +#include <linux/cpu.h> > > +#include <linux/splice.h> > > +#include <linux/bitops.h> > > + > > +/* list of open channels, for cpu hotplug */ > > +static DEFINE_MUTEX(relay_channels_mutex); > > +static LIST_HEAD(relay_channels); > > + > > +/** > > + * relay_alloc_buf - allocate a channel buffer > > + * @buf: the buffer struct > > + * @size: total size of the buffer > > + */ > > +static int relay_alloc_buf(struct rchan_buf *buf, size_t *size) > > +{ > > + unsigned int i, n_pages; > > + struct buf_page *buf_page, *n; > > + > > + *size = PAGE_ALIGN(*size); > > + n_pages = *size >> PAGE_SHIFT; > > + > > + INIT_LIST_HEAD(&buf->pages); > > + > > + for (i = 0; i < n_pages; i++) { > > + buf_page = kmalloc_node(sizeof(*buf_page), GFP_KERNEL, > > + cpu_to_node(buf->cpu)); > > + if (unlikely(!buf_page)) > > + goto depopulate; > > + buf_page->page = alloc_pages_node(cpu_to_node(buf->cpu), > > + GFP_KERNEL | __GFP_ZERO, 0); > > So these buffers allocate single pages? > Each buffer allocate n_pages. Each of these pages are allocated with alloc_pages_node(), and linked together in a linked list. I use a linked list of pages rather than a page pointer array to make sure I never depend on vmalloc if the page pointer array grows too large. vmalloc'd data can trigger page faults, which I don't want. Note that an alternate option to this would be to use vmalloc_sync_all() after the pages have been allocated, but I prefer not to use vmalloc at all unless there is a clear advantage. Note that the tracer calls vmalloc_sync_all() for each tracer module registered. Actually, the probe modules should also call vmalloc_sync_all() before their callback gets registered. This would ensure the module code and data would never trigger a page fault. I actually wonder why we don't add a vmalloc_sync_all() call in module.c ? this is a slow path anyway... > > + if (unlikely(!buf_page->page)) { > > + kfree(buf_page); > > + goto depopulate; > > + } > > + list_add_tail(&buf_page->list, &buf->pages); > > + buf_page->offset = (size_t)i << PAGE_SHIFT; > > + set_page_private(buf_page->page, (unsigned long)buf_page); > > + if (i == 0) { > > + buf->wpage = buf_page; > > + buf->hpage[0] = buf_page; > > + buf->hpage[1] = buf_page; > > + buf->rpage = buf_page; > > + } > > + } > > + buf->page_count = n_pages; > > + return 0; > > + > > +depopulate: > > + list_for_each_entry_safe(buf_page, n, &buf->pages, list) { > > + list_del_init(&buf_page->list); > > + __free_page(buf_page->page); > > + kfree(buf_page); > > + } > > + return -ENOMEM; > > +} > > + > > +/** > > + * relay_create_buf - allocate and initialize a channel buffer > > + * @chan: the relay channel > > + * @cpu: cpu the buffer belongs to > > + * > > + * Returns channel buffer if successful, %NULL otherwise. > > + */ > > +static struct rchan_buf *relay_create_buf(struct rchan *chan, int cpu) > > +{ > > + int ret; > > + struct rchan_buf *buf = kzalloc(sizeof(struct rchan_buf), GFP_KERNEL); > > + if (!buf) > > + return NULL; > > + > > + buf->cpu = cpu; > > + ret = relay_alloc_buf(buf, &chan->alloc_size); > > + if (ret) > > + goto free_buf; > > + > > + buf->chan = chan; > > + kref_get(&buf->chan->kref); > > + return buf; > > + > > +free_buf: > > + kfree(buf); > > + return NULL; > > +} > > + > > +/** > > + * relay_destroy_channel - free the channel struct > > + * @kref: target kernel reference that contains the relay channel > > + * > > + * Should only be called from kref_put(). > > + */ > > +static void relay_destroy_channel(struct kref *kref) > > +{ > > + struct rchan *chan = container_of(kref, struct rchan, kref); > > + kfree(chan); > > +} > > + > > +void ltt_relay_get_chan(struct rchan *chan) > > +{ > > + kref_get(&chan->kref); > > +} > > +EXPORT_SYMBOL_GPL(ltt_relay_get_chan); > > + > > +void ltt_relay_put_chan(struct rchan *chan) > > +{ > > + kref_put(&chan->kref, relay_destroy_channel); > > +} > > +EXPORT_SYMBOL_GPL(ltt_relay_put_chan); > > + > > +/** > > + * relay_destroy_buf - destroy an rchan_buf struct and associated buffer > > + * @buf: the buffer struct > > + */ > > +static void relay_destroy_buf(struct rchan_buf *buf) > > +{ > > + struct rchan *chan = buf->chan; > > + struct buf_page *buf_page, *n; > > + > > + list_for_each_entry_safe(buf_page, n, &buf->pages, list) { > > + list_del_init(&buf_page->list); > > + __free_page(buf_page->page); > > + kfree(buf_page); > > + } > > + chan->buf[buf->cpu] = NULL; > > + kfree(buf); > > + kref_put(&chan->kref, relay_destroy_channel); > > +} > > + > > +/** > > + * relay_remove_buf - remove a channel buffer > > + * @kref: target kernel reference that contains the relay buffer > > + * > > + * Removes the file from the fileystem, which also frees the > > + * rchan_buf_struct and the channel buffer. Should only be called from > > + * kref_put(). > > + */ > > +static void relay_remove_buf(struct kref *kref) > > +{ > > + struct rchan_buf *buf = container_of(kref, struct rchan_buf, kref); > > + buf->chan->cb->remove_buf_file(buf->dentry); > > + relay_destroy_buf(buf); > > +} > > + > > +void ltt_relay_get_chan_buf(struct rchan_buf *buf) > > +{ > > + kref_get(&buf->kref); > > +} > > +EXPORT_SYMBOL_GPL(ltt_relay_get_chan_buf); > > + > > +void ltt_relay_put_chan_buf(struct rchan_buf *buf) > > +{ > > + kref_put(&buf->kref, relay_remove_buf); > > +} > > +EXPORT_SYMBOL_GPL(ltt_relay_put_chan_buf); > > + > > +/* > > + * High-level relay kernel API and associated functions. > > + */ > > + > > +/* > > + * rchan_callback implementations defining default channel behavior. Used > > + * in place of corresponding NULL values in client callback struct. > > + */ > > + > > +/* > > + * create_buf_file_create() default callback. Does nothing. > > + */ > > +static struct dentry *create_buf_file_default_callback(const char *filename, > > + struct dentry *parent, > > + int mode, > > + struct rchan_buf *buf) > > +{ > > + return NULL; > > +} > > + > > +/* > > + * remove_buf_file() default callback. Does nothing. > > + */ > > +static int remove_buf_file_default_callback(struct dentry *dentry) > > +{ > > + return -EINVAL; > > +} > > + > > +/* relay channel default callbacks */ > > +static struct rchan_callbacks default_channel_callbacks = { > > + .create_buf_file = create_buf_file_default_callback, > > + .remove_buf_file = remove_buf_file_default_callback, > > +}; > > + > > +/** > > + * __relay_reset - reset a channel buffer > > + * @buf: the channel buffer > > + * @init: 1 if this is a first-time initialization > > + * > > + * See relay_reset() for description of effect. > > + */ > > +static void __relay_reset(struct rchan_buf *buf, unsigned int init) > > +{ > > + if (init) > > + kref_init(&buf->kref); > > +} > > + > > +/* > > + * relay_open_buf - create a new relay channel buffer > > + * > > + * used by relay_open() and CPU hotplug. > > + */ > > +static struct rchan_buf *relay_open_buf(struct rchan *chan, unsigned int cpu) > > +{ > > + struct rchan_buf *buf = NULL; > > + struct dentry *dentry; > > + char *tmpname; > > + > > + tmpname = kzalloc(NAME_MAX + 1, GFP_KERNEL); > > + if (!tmpname) > > + goto end; > > + snprintf(tmpname, NAME_MAX, "%s%d", chan->base_filename, cpu); > > + > > + buf = relay_create_buf(chan, cpu); > > + if (!buf) > > + goto free_name; > > + > > + __relay_reset(buf, 1); > > + > > + /* Create file in fs */ > > + dentry = chan->cb->create_buf_file(tmpname, chan->parent, S_IRUSR, > > + buf); > > + if (!dentry) > > + goto free_buf; > > + > > + buf->dentry = dentry; > > + > > + goto free_name; > > + > > +free_buf: > > + relay_destroy_buf(buf); > > + buf = NULL; > > +free_name: > > + kfree(tmpname); > > +end: > > + return buf; > > +} > > + > > +/** > > + * relay_close_buf - close a channel buffer > > + * @buf: channel buffer > > + * > > + * Restores the default callbacks. > > + * The channel buffer and channel buffer data structure are then freed > > + * automatically when the last reference is given up. > > + */ > > +static void relay_close_buf(struct rchan_buf *buf) > > +{ > > + kref_put(&buf->kref, relay_remove_buf); > > +} > > + > > +static void setup_callbacks(struct rchan *chan, > > + struct rchan_callbacks *cb) > > +{ > > + if (!cb) { > > + chan->cb = &default_channel_callbacks; > > + return; > > + } > > + > > + if (!cb->create_buf_file) > > + cb->create_buf_file = create_buf_file_default_callback; > > + if (!cb->remove_buf_file) > > + cb->remove_buf_file = remove_buf_file_default_callback; > > + chan->cb = cb; > > +} > > + > > +/** > > + * relay_hotcpu_callback - CPU hotplug callback > > + * @nb: notifier block > > + * @action: hotplug action to take > > + * @hcpu: CPU number > > + * > > + * Returns the success/failure of the operation. (%NOTIFY_OK, %NOTIFY_BAD) > > + */ > > +static int __cpuinit relay_hotcpu_callback(struct notifier_block *nb, > > + unsigned long action, > > + void *hcpu) > > +{ > > + unsigned int hotcpu = (unsigned long)hcpu; > > + struct rchan *chan; > > + > > + switch (action) { > > + case CPU_UP_PREPARE: > > + case CPU_UP_PREPARE_FROZEN: > > + mutex_lock(&relay_channels_mutex); > > + list_for_each_entry(chan, &relay_channels, list) { > > + if (chan->buf[hotcpu]) > > + continue; > > + chan->buf[hotcpu] = relay_open_buf(chan, hotcpu); > > + if (!chan->buf[hotcpu]) { > > + printk(KERN_ERR > > + "relay_hotcpu_callback: cpu %d buffer " > > + "creation failed\n", hotcpu); > > + mutex_unlock(&relay_channels_mutex); > > + return NOTIFY_BAD; > > + } > > + } > > + mutex_unlock(&relay_channels_mutex); > > + break; > > + case CPU_DEAD: > > + case CPU_DEAD_FROZEN: > > + /* No need to flush the cpu : will be flushed upon > > + * final relay_flush() call. */ > > + break; > > + } > > + return NOTIFY_OK; > > +} > > + > > +/** > > + * ltt_relay_open - create a new relay channel > > + * @base_filename: base name of files to create > > + * @parent: dentry of parent directory, %NULL for root directory > > + * @subbuf_size: size of sub-buffers > > + * @n_subbufs: number of sub-buffers > > + * @cb: client callback functions > > + * @private_data: user-defined data > > + * > > + * Returns channel pointer if successful, %NULL otherwise. > > + * > > + * Creates a channel buffer for each cpu using the sizes and > > + * attributes specified. The created channel buffer files > > + * will be named base_filename0...base_filenameN-1. File > > + * permissions will be %S_IRUSR. > > + */ > > +struct rchan *ltt_relay_open(const char *base_filename, > > + struct dentry *parent, > > + size_t subbuf_size, > > + size_t n_subbufs, > > + struct rchan_callbacks *cb, > > + void *private_data) > > +{ > > + unsigned int i; > > + struct rchan *chan; > > + if (!base_filename) > > + return NULL; > > + > > + if (!(subbuf_size && n_subbufs)) > > + return NULL; > > + > > + chan = kzalloc(sizeof(struct rchan), GFP_KERNEL); > > + if (!chan) > > + return NULL; > > + > > + chan->version = LTT_RELAY_CHANNEL_VERSION; > > + chan->n_subbufs = n_subbufs; > > + chan->subbuf_size = subbuf_size; > > You declare the sub buf size here, but I do not see how it gets allocated. > below : chan->alloc_size = FIX_SIZE(subbuf_size * n_subbufs); Then : relay_open_buf() relay_create_buf() relay_alloc_buf(buf, &chan->alloc_size); And there we iterate on n_pages, this is PAGE_ALIGN(*size) >> PAGE_SHIFT > > +static int relay_alloc_buf(struct rchan_buf *buf, size_t *size) > > +{ > > + unsigned int i, n_pages; > > + struct buf_page *buf_page, *n; > > + > > + *size = PAGE_ALIGN(*size); > > + n_pages = *size >> PAGE_SHIFT; > > + > > + INIT_LIST_HEAD(&buf->pages); > > + > > + for (i = 0; i < n_pages; i++) { Mathieu > -- Steve > > > + chan->subbuf_size_order = get_count_order(subbuf_size); > > + chan->alloc_size = FIX_SIZE(subbuf_size * n_subbufs); > > + chan->parent = parent; > > + chan->private_data = private_data; > > + strlcpy(chan->base_filename, base_filename, NAME_MAX); > > + setup_callbacks(chan, cb); > > + kref_init(&chan->kref); > > + > > + mutex_lock(&relay_channels_mutex); > > + for_each_online_cpu(i) { > > + chan->buf[i] = relay_open_buf(chan, i); > > + if (!chan->buf[i]) > > + goto free_bufs; > > + } > > + list_add(&chan->list, &relay_channels); > > + mutex_unlock(&relay_channels_mutex); > > + > > + return chan; > > + > > +free_bufs: > > + for_each_possible_cpu(i) { > > + if (!chan->buf[i]) > > + break; > > + relay_close_buf(chan->buf[i]); > > + } > > + > > + kref_put(&chan->kref, relay_destroy_channel); > > + mutex_unlock(&relay_channels_mutex); > > + return NULL; > > +} > > +EXPORT_SYMBOL_GPL(ltt_relay_open); > > + > > +/** > > + * ltt_relay_close - close the channel > > + * @chan: the channel > > + * > > + * Closes all channel buffers and frees the channel. > > + */ > > +void ltt_relay_close(struct rchan *chan) > > +{ > > + unsigned int i; > > + > > + if (!chan) > > + return; > > + > > + mutex_lock(&relay_channels_mutex); > > + for_each_possible_cpu(i) > > + if (chan->buf[i]) > > + relay_close_buf(chan->buf[i]); > > + > > + list_del(&chan->list); > > + kref_put(&chan->kref, relay_destroy_channel); > > + mutex_unlock(&relay_channels_mutex); > > +} > > +EXPORT_SYMBOL_GPL(ltt_relay_close); > > + > > +/* > > + * Start iteration at the previous element. Skip the real list head. > > + */ > > +static struct buf_page *ltt_relay_find_prev_page(struct rchan_buf *buf, > > + struct buf_page *page, size_t offset, ssize_t diff_offset) > > +{ > > + struct buf_page *iter; > > + size_t orig_iter_off; > > + unsigned int i = 0; > > + > > + orig_iter_off = page->offset; > > + list_for_each_entry_reverse(iter, &page->list, list) { > > + /* > > + * Skip the real list head. > > + */ > > + if (&iter->list == &buf->pages) > > + continue; > > + i++; > > + if (offset >= iter->offset > > + && offset < iter->offset + PAGE_SIZE) { > > +#ifdef CONFIG_LTT_RELAY_CHECK_RANDOM_ACCESS > > + if (i > 1) { > > + printk(KERN_WARNING > > + "Backward random access detected in " > > + "ltt_relay. Iterations %u, " > > + "offset %zu, orig iter->off %zu, " > > + "iter->off %zu diff_offset %zd.\n", i, > > + offset, orig_iter_off, iter->offset, > > + diff_offset); > > + WARN_ON(1); > > + } > > +#endif > > + return iter; > > + } > > + } > > + return NULL; > > +} > > + > > +/* > > + * Start iteration at the next element. Skip the real list head. > > + */ > > +static struct buf_page *ltt_relay_find_next_page(struct rchan_buf *buf, > > + struct buf_page *page, size_t offset, ssize_t diff_offset) > > +{ > > + struct buf_page *iter; > > + unsigned int i = 0; > > + size_t orig_iter_off; > > + > > + orig_iter_off = page->offset; > > + list_for_each_entry(iter, &page->list, list) { > > + /* > > + * Skip the real list head. > > + */ > > + if (&iter->list == &buf->pages) > > + continue; > > + i++; > > + if (offset >= iter->offset > > + && offset < iter->offset + PAGE_SIZE) { > > +#ifdef CONFIG_LTT_RELAY_CHECK_RANDOM_ACCESS > > + if (i > 1) { > > + printk(KERN_WARNING > > + "Forward random access detected in " > > + "ltt_relay. Iterations %u, " > > + "offset %zu, orig iter->off %zu, " > > + "iter->off %zu diff_offset %zd.\n", i, > > + offset, orig_iter_off, iter->offset, > > + diff_offset); > > + WARN_ON(1); > > + } > > +#endif > > + return iter; > > + } > > + } > > + return NULL; > > +} > > + > > +/* > > + * Find the page containing "offset". Cache it if it is after the currently > > + * cached page. > > + */ > > +static struct buf_page *ltt_relay_cache_page(struct rchan_buf *buf, > > + struct buf_page **page_cache, > > + struct buf_page *page, size_t offset) > > +{ > > + ssize_t diff_offset; > > + ssize_t half_buf_size = buf->chan->alloc_size >> 1; > > + > > + /* > > + * Make sure this is the page we want to write into. The current > > + * page is changed concurrently by other writers. [wrh]page are > > + * used as a cache remembering the last page written > > + * to/read/looked up for header address. No synchronization; > > + * could have to find the previous page is a nested write > > + * occured. Finding the right page is done by comparing the > > + * dest_offset with the buf_page offsets. > > + * When at the exact opposite of the buffer, bias towards forward search > > + * because it will be cached. > > + */ > > + > > + diff_offset = (ssize_t)offset - (ssize_t)page->offset; > > + if (diff_offset <= -(ssize_t)half_buf_size) > > + diff_offset += buf->chan->alloc_size; > > + else if (diff_offset > half_buf_size) > > + diff_offset -= buf->chan->alloc_size; > > + > > + if (unlikely(diff_offset >= (ssize_t)PAGE_SIZE)) { > > + page = ltt_relay_find_next_page(buf, page, offset, diff_offset); > > + WARN_ON(!page); > > + *page_cache = page; > > + } else if (unlikely(diff_offset < 0)) { > > + page = ltt_relay_find_prev_page(buf, page, offset, diff_offset); > > + WARN_ON(!page); > > + } > > + return page; > > +} > > + > > +/** > > + * ltt_relay_write - write data to a ltt_relay buffer. > > + * @buf : buffer > > + * @offset : offset within the buffer > > + * @src : source address > > + * @len : length to write > > + */ > > +int ltt_relay_write(struct rchan_buf *buf, size_t offset, > > + const void *src, size_t len) > > +{ > > + struct buf_page *page; > > + ssize_t pagecpy, orig_len; > > + > > + orig_len = len; > > + offset &= buf->chan->alloc_size - 1; > > + page = buf->wpage; > > + if (unlikely(!len)) > > + return 0; > > + for (;;) { > > + page = ltt_relay_cache_page(buf, &buf->wpage, page, offset); > > + pagecpy = min_t(size_t, len, PAGE_SIZE - (offset & ~PAGE_MASK)); > > + memcpy(page_address(page->page) > > + + (offset & ~PAGE_MASK), src, pagecpy); > > + len -= pagecpy; > > + if (likely(!len)) > > + break; > > + src += pagecpy; > > + offset += pagecpy; > > + /* > > + * Underlying layer should never ask for writes across > > + * subbuffers. > > + */ > > + WARN_ON(offset >= buf->chan->alloc_size); > > + } > > + return orig_len; > > +} > > +EXPORT_SYMBOL_GPL(ltt_relay_write); > > + > > +/** > > + * ltt_relay_read - read data from ltt_relay_buffer. > > + * @buf : buffer > > + * @offset : offset within the buffer > > + * @dest : destination address > > + * @len : length to write > > + */ > > +int ltt_relay_read(struct rchan_buf *buf, size_t offset, > > + void *dest, size_t len) > > +{ > > + struct buf_page *page; > > + ssize_t pagecpy, orig_len; > > + > > + orig_len = len; > > + offset &= buf->chan->alloc_size - 1; > > + page = buf->rpage; > > + if (unlikely(!len)) > > + return 0; > > + for (;;) { > > + page = ltt_relay_cache_page(buf, &buf->rpage, page, offset); > > + pagecpy = min_t(size_t, len, PAGE_SIZE - (offset & ~PAGE_MASK)); > > + memcpy(dest, page_address(page->page) + (offset & ~PAGE_MASK), > > + pagecpy); > > + len -= pagecpy; > > + if (likely(!len)) > > + break; > > + dest += pagecpy; > > + offset += pagecpy; > > + /* > > + * Underlying layer should never ask for reads across > > + * subbuffers. > > + */ > > + WARN_ON(offset >= buf->chan->alloc_size); > > + } > > + return orig_len; > > +} > > +EXPORT_SYMBOL_GPL(ltt_relay_read); > > + > > +/** > > + * ltt_relay_read_get_page - Get a whole page to read from > > + * @buf : buffer > > + * @offset : offset within the buffer > > + */ > > +struct buf_page *ltt_relay_read_get_page(struct rchan_buf *buf, size_t offset) > > +{ > > + struct buf_page *page; > > + > > + offset &= buf->chan->alloc_size - 1; > > + page = buf->rpage; > > + page = ltt_relay_cache_page(buf, &buf->rpage, page, offset); > > + return page; > > +} > > +EXPORT_SYMBOL_GPL(ltt_relay_read_get_page); > > + > > +/** > > + * ltt_relay_offset_address - get address of a location within the buffer > > + * @buf : buffer > > + * @offset : offset within the buffer. > > + * > > + * Return the address where a given offset is located. > > + * Should be used to get the current subbuffer header pointer. Given we know > > + * it's never on a page boundary, it's safe to write directly to this address, > > + * as long as the write is never bigger than a page size. > > + */ > > +void *ltt_relay_offset_address(struct rchan_buf *buf, size_t offset) > > +{ > > + struct buf_page *page; > > + unsigned int odd; > > + > > + offset &= buf->chan->alloc_size - 1; > > + odd = !!(offset & buf->chan->subbuf_size); > > + page = buf->hpage[odd]; > > + if (offset < page->offset || offset >= page->offset + PAGE_SIZE) > > + buf->hpage[odd] = page = buf->wpage; > > + page = ltt_relay_cache_page(buf, &buf->hpage[odd], page, offset); > > + return page_address(page->page) + (offset & ~PAGE_MASK); > > +} > > +EXPORT_SYMBOL_GPL(ltt_relay_offset_address); > > + > > +/** > > + * relay_file_open - open file op for relay files > > + * @inode: the inode > > + * @filp: the file > > + * > > + * Increments the channel buffer refcount. > > + */ > > +static int relay_file_open(struct inode *inode, struct file *filp) > > +{ > > + struct rchan_buf *buf = inode->i_private; > > + kref_get(&buf->kref); > > + filp->private_data = buf; > > + > > + return nonseekable_open(inode, filp); > > +} > > + > > +/** > > + * relay_file_release - release file op for relay files > > + * @inode: the inode > > + * @filp: the file > > + * > > + * Decrements the channel refcount, as the filesystem is > > + * no longer using it. > > + */ > > +static int relay_file_release(struct inode *inode, struct file *filp) > > +{ > > + struct rchan_buf *buf = filp->private_data; > > + kref_put(&buf->kref, relay_remove_buf); > > + > > + return 0; > > +} > > + > > +const struct file_operations ltt_relay_file_operations = { > > + .open = relay_file_open, > > + .release = relay_file_release, > > +}; > > +EXPORT_SYMBOL_GPL(ltt_relay_file_operations); > > + > > +static __init int relay_init(void) > > +{ > > + hotcpu_notifier(relay_hotcpu_callback, 5); > > + return 0; > > +} > > + > > +module_init(relay_init); > > Index: linux-2.6-lttng/include/linux/ltt-relay.h > > =================================================================== > > --- /dev/null 1970-01-01 00:00:00.000000000 +0000 > > +++ linux-2.6-lttng/include/linux/ltt-relay.h 2009-03-05 15:05:56.000000000 -0500 > > @@ -0,0 +1,182 @@ > > +/* > > + * linux/include/linux/ltt-relay.h > > + * > > + * Copyright (C) 2002, 2003 - Tom Zanussi (zanussi at us.ibm.com), IBM Corp > > + * Copyright (C) 1999, 2000, 2001, 2002 - Karim Yaghmour (karim at opersys.com) > > + * Copyright (C) 2008 - Mathieu Desnoyers (mathieu.desnoyers at polymtl.ca) > > + * > > + * CONFIG_RELAY definitions and declarations > > + */ > > + > > +#ifndef _LINUX_LTT_RELAY_H > > +#define _LINUX_LTT_RELAY_H > > + > > +#include <linux/types.h> > > +#include <linux/sched.h> > > +#include <linux/timer.h> > > +#include <linux/wait.h> > > +#include <linux/list.h> > > +#include <linux/fs.h> > > +#include <linux/poll.h> > > +#include <linux/kref.h> > > +#include <linux/mm.h> > > + > > +/* Needs a _much_ better name... */ > > +#define FIX_SIZE(x) ((((x) - 1) & PAGE_MASK) + PAGE_SIZE) > > + > > +/* > > + * Tracks changes to rchan/rchan_buf structs > > + */ > > +#define LTT_RELAY_CHANNEL_VERSION 8 > > + > > +struct rchan_buf; > > + > > +struct buf_page { > > + struct page *page; > > + size_t offset; /* page offset in the buffer */ > > + struct list_head list; /* buffer linked list */ > > +}; > > + > > +/* > > + * Per-cpu relay channel buffer > > + */ > > +struct rchan_buf { > > + void *chan_private; /* private data for this buf */ > > + struct rchan *chan; /* associated channel */ > > + struct dentry *dentry; /* channel file dentry */ > > + struct kref kref; /* channel buffer refcount */ > > + struct list_head pages; /* list of buffer pages */ > > + struct buf_page *wpage; /* current write page (cache) */ > > + struct buf_page *hpage[2]; /* current subbuf header page (cache) */ > > + struct buf_page *rpage; /* current subbuf read page (cache) */ > > + unsigned int page_count; /* number of current buffer pages */ > > + unsigned int cpu; /* this buf's cpu */ > > +} ____cacheline_aligned; > > + > > +/* > > + * Relay channel data structure > > + */ > > +struct rchan { > > + u32 version; /* the version of this struct */ > > + size_t subbuf_size; /* sub-buffer size */ > > + size_t n_subbufs; /* number of sub-buffers per buffer */ > > + size_t alloc_size; /* total buffer size allocated */ > > + struct rchan_callbacks *cb; /* client callbacks */ > > + struct kref kref; /* channel refcount */ > > + void *private_data; /* for user-defined data */ > > + struct rchan_buf *buf[NR_CPUS]; /* per-cpu channel buffers */ > > + struct list_head list; /* for channel list */ > > + struct dentry *parent; /* parent dentry passed to open */ > > + int subbuf_size_order; /* order of sub-buffer size */ > > + char base_filename[NAME_MAX]; /* saved base filename */ > > +}; > > + > > +/* > > + * Relay channel client callbacks > > + */ > > +struct rchan_callbacks { > > + /* > > + * subbuf_start - called on buffer-switch to a new sub-buffer > > + * @buf: the channel buffer containing the new sub-buffer > > + * @subbuf: the start of the new sub-buffer > > + * @prev_subbuf: the start of the previous sub-buffer > > + * @prev_padding: unused space at the end of previous sub-buffer > > + * > > + * The client should return 1 to continue logging, 0 to stop > > + * logging. > > + * > > + * NOTE: subbuf_start will also be invoked when the buffer is > > + * created, so that the first sub-buffer can be initialized > > + * if necessary. In this case, prev_subbuf will be NULL. > > + * > > + * NOTE: the client can reserve bytes at the beginning of the new > > + * sub-buffer by calling subbuf_start_reserve() in this callback. > > + */ > > + int (*subbuf_start) (struct rchan_buf *buf, > > + void *subbuf, > > + void *prev_subbuf, > > + size_t prev_padding); > > + > > + /* > > + * create_buf_file - create file to represent a relay channel buffer > > + * @filename: the name of the file to create > > + * @parent: the parent of the file to create > > + * @mode: the mode of the file to create > > + * @buf: the channel buffer > > + * > > + * Called during relay_open(), once for each per-cpu buffer, > > + * to allow the client to create a file to be used to > > + * represent the corresponding channel buffer. If the file is > > + * created outside of relay, the parent must also exist in > > + * that filesystem. > > + * > > + * The callback should return the dentry of the file created > > + * to represent the relay buffer. > > + * > > + * Setting the is_global outparam to a non-zero value will > > + * cause relay_open() to create a single global buffer rather > > + * than the default set of per-cpu buffers. > > + * > > + * See Documentation/filesystems/relayfs.txt for more info. > > + */ > > + struct dentry *(*create_buf_file)(const char *filename, > > + struct dentry *parent, > > + int mode, > > + struct rchan_buf *buf); > > + > > + /* > > + * remove_buf_file - remove file representing a relay channel buffer > > + * @dentry: the dentry of the file to remove > > + * > > + * Called during relay_close(), once for each per-cpu buffer, > > + * to allow the client to remove a file used to represent a > > + * channel buffer. > > + * > > + * The callback should return 0 if successful, negative if not. > > + */ > > + int (*remove_buf_file)(struct dentry *dentry); > > +}; > > + > > +extern int ltt_relay_write(struct rchan_buf *buf, size_t offset, > > + const void *src, size_t len); > > + > > +extern int ltt_relay_read(struct rchan_buf *buf, size_t offset, > > + void *dest, size_t len); > > + > > +extern struct buf_page *ltt_relay_read_get_page(struct rchan_buf *buf, > > + size_t offset); > > + > > +/* > > + * Return the address where a given offset is located. > > + * Should be used to get the current subbuffer header pointer. Given we know > > + * it's never on a page boundary, it's safe to write directly to this address, > > + * as long as the write is never bigger than a page size. > > + */ > > +extern void *ltt_relay_offset_address(struct rchan_buf *buf, > > + size_t offset); > > + > > +/* > > + * CONFIG_LTT_RELAY kernel API, ltt/ltt-relay-alloc.c > > + */ > > + > > +struct rchan *ltt_relay_open(const char *base_filename, > > + struct dentry *parent, > > + size_t subbuf_size, > > + size_t n_subbufs, > > + struct rchan_callbacks *cb, > > + void *private_data); > > +extern void ltt_relay_close(struct rchan *chan); > > + > > +void ltt_relay_get_chan(struct rchan *chan); > > +void ltt_relay_put_chan(struct rchan *chan); > > + > > +void ltt_relay_get_chan_buf(struct rchan_buf *buf); > > +void ltt_relay_put_chan_buf(struct rchan_buf *buf); > > + > > +/* > > + * exported ltt_relay file operations, ltt/ltt-relay-alloc.c > > + */ > > +extern const struct file_operations ltt_relay_file_operations; > > + > > +#endif /* _LINUX_LTT_RELAY_H */ > > + > > > > -- > > Mathieu Desnoyers > > OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 > > -- Mathieu Desnoyers OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 06/41] LTTng optimize write to page function 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (4 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 05/41] LTTng relay buffer allocation, read, write Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 07/41] LTTng dynamic channels Mathieu Desnoyers ` (36 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-optimize-write-to-page-function.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/e1ac5b24/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 06/41] LTTng optimize write to page function 2009-03-05 22:47 ` [ltt-dev] [RFC patch 06/41] LTTng optimize write to page function Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-optimize-write-to-page-function.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/e1ac5b24/attachment-0001.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 06/41] LTTng optimize write to page function 2009-03-05 22:47 ` [ltt-dev] [RFC patch 06/41] LTTng optimize write to page function Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-optimize-write-to-page-function.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/e1ac5b24/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 07/41] LTTng dynamic channels 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (5 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 06/41] LTTng optimize write to page function Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 08/41] LTTng - tracer header Mathieu Desnoyers ` (35 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-dynamic-channels.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/57ae5d7c/attachment-0001.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 07/41] LTTng dynamic channels 2009-03-05 22:47 ` [ltt-dev] [RFC patch 07/41] LTTng dynamic channels Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-dynamic-channels.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/57ae5d7c/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 07/41] LTTng dynamic channels 2009-03-05 22:47 ` [ltt-dev] [RFC patch 07/41] LTTng dynamic channels Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-dynamic-channels.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/57ae5d7c/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 08/41] LTTng - tracer header 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (6 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 07/41] LTTng dynamic channels Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 09/41] LTTng optimize write to page function deal with unaligned access Mathieu Desnoyers ` (34 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-tracer-header.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/94d12417/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 08/41] LTTng - tracer header 2009-03-05 22:47 ` [ltt-dev] [RFC patch 08/41] LTTng - tracer header Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-tracer-header.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/94d12417/attachment-0001.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 08/41] LTTng - tracer header 2009-03-05 22:47 ` [ltt-dev] [RFC patch 08/41] LTTng - tracer header Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-tracer-header.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/94d12417/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 09/41] LTTng optimize write to page function deal with unaligned access 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (7 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 08/41] LTTng - tracer header Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 10/41] lttng-optimize-write-to-page-function-remove-some-memcpy-calls Mathieu Desnoyers ` (33 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-optimize-write-to-page-function-deal-with-unaligned.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/4b2b7917/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 09/41] LTTng optimize write to page function deal with unaligned access 2009-03-05 22:47 ` [ltt-dev] [RFC patch 09/41] LTTng optimize write to page function deal with unaligned access Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-optimize-write-to-page-function-deal-with-unaligned.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/4b2b7917/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 09/41] LTTng optimize write to page function deal with unaligned access 2009-03-05 22:47 ` [ltt-dev] [RFC patch 09/41] LTTng optimize write to page function deal with unaligned access Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-optimize-write-to-page-function-deal-with-unaligned.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/4b2b7917/attachment-0001.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 10/41] lttng-optimize-write-to-page-function-remove-some-memcpy-calls 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (8 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 09/41] LTTng optimize write to page function deal with unaligned access Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 11/41] ltt-relay: cache pages address Mathieu Desnoyers ` (32 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-optimize-write-to-page-function-remove-some-memcpy-calls.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/64dde8f4/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 10/41] lttng-optimize-write-to-page-function-remove-some-memcpy-calls 2009-03-05 22:47 ` [ltt-dev] [RFC patch 10/41] lttng-optimize-write-to-page-function-remove-some-memcpy-calls Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-optimize-write-to-page-function-remove-some-memcpy-calls.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/64dde8f4/attachment-0001.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 10/41] lttng-optimize-write-to-page-function-remove-some-memcpy-calls 2009-03-05 22:47 ` [ltt-dev] [RFC patch 10/41] lttng-optimize-write-to-page-function-remove-some-memcpy-calls Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-optimize-write-to-page-function-remove-some-memcpy-calls.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/64dde8f4/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 11/41] ltt-relay: cache pages address 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (9 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 10/41] lttng-optimize-write-to-page-function-remove-some-memcpy-calls Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 12/41] x86 : export vmalloc_sync_all() Mathieu Desnoyers ` (31 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-optimize-write-to-page-function-cache-page-address.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/eea5edb8/attachment-0001.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 11/41] ltt-relay: cache pages address 2009-03-05 22:47 ` [ltt-dev] [RFC patch 11/41] ltt-relay: cache pages address Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-optimize-write-to-page-function-cache-page-address.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/eea5edb8/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 11/41] ltt-relay: cache pages address 2009-03-05 22:47 ` [ltt-dev] [RFC patch 11/41] ltt-relay: cache pages address Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-optimize-write-to-page-function-cache-page-address.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/eea5edb8/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 12/41] x86 : export vmalloc_sync_all() 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (10 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 11/41] ltt-relay: cache pages address Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 13/41] LTTng - tracer code Mathieu Desnoyers ` (30 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: export-vmalloc-sync-all-symbol.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/76074d2e/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 12/41] x86 : export vmalloc_sync_all() 2009-03-05 22:47 ` [ltt-dev] [RFC patch 12/41] x86 : export vmalloc_sync_all() Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: export-vmalloc-sync-all-symbol.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/76074d2e/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 12/41] x86 : export vmalloc_sync_all() 2009-03-05 22:47 ` [ltt-dev] [RFC patch 12/41] x86 : export vmalloc_sync_all() Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: export-vmalloc-sync-all-symbol.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/76074d2e/attachment-0001.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 13/41] LTTng - tracer code 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (11 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 12/41] x86 : export vmalloc_sync_all() Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 14/41] Splice and pipe : export pipe buf operations for GPL modules Mathieu Desnoyers ` (29 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-tracer.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/4ea4bfd5/attachment-0001.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 13/41] LTTng - tracer code 2009-03-05 22:47 ` [ltt-dev] [RFC patch 13/41] LTTng - tracer code Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-tracer.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/4ea4bfd5/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 13/41] LTTng - tracer code 2009-03-05 22:47 ` [ltt-dev] [RFC patch 13/41] LTTng - tracer code Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-tracer.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/4ea4bfd5/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 14/41] Splice and pipe : export pipe buf operations for GPL modules 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (12 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 13/41] LTTng - tracer code Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 15/41] Poll : add poll_wait_set_exclusive Mathieu Desnoyers ` (28 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: splice-support-modules.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/61e3df9b/attachment-0001.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 14/41] Splice and pipe : export pipe buf operations for GPL modules 2009-03-05 22:47 ` [ltt-dev] [RFC patch 14/41] Splice and pipe : export pipe buf operations for GPL modules Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: splice-support-modules.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/61e3df9b/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 14/41] Splice and pipe : export pipe buf operations for GPL modules 2009-03-05 22:47 ` [ltt-dev] [RFC patch 14/41] Splice and pipe : export pipe buf operations for GPL modules Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: splice-support-modules.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/61e3df9b/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 15/41] Poll : add poll_wait_set_exclusive 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (13 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 14/41] Splice and pipe : export pipe buf operations for GPL modules Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 16/41] LTTng Transport Locked Mathieu Desnoyers ` (27 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: poll-wait-exclusive.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/b928e014/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 15/41] Poll : add poll_wait_set_exclusive 2009-03-05 22:47 ` [ltt-dev] [RFC patch 15/41] Poll : add poll_wait_set_exclusive Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: poll-wait-exclusive.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/b928e014/attachment-0001.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 15/41] Poll : add poll_wait_set_exclusive 2009-03-05 22:47 ` [ltt-dev] [RFC patch 15/41] Poll : add poll_wait_set_exclusive Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: poll-wait-exclusive.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/b928e014/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 16/41] LTTng Transport Locked 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (14 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 15/41] Poll : add poll_wait_set_exclusive Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 17/41] LTTng - serialization Mathieu Desnoyers ` (26 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-transport-locked.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/921f4ecf/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 16/41] LTTng Transport Locked 2009-03-05 22:47 ` [ltt-dev] [RFC patch 16/41] LTTng Transport Locked Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-transport-locked.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/921f4ecf/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 16/41] LTTng Transport Locked 2009-03-05 22:47 ` [ltt-dev] [RFC patch 16/41] LTTng Transport Locked Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-transport-locked.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/921f4ecf/attachment-0001.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 17/41] LTTng - serialization 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (15 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 16/41] LTTng Transport Locked Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 18/41] Seq_file add support for sorted list Mathieu Desnoyers ` (25 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-serialize.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/6bc3312e/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 17/41] LTTng - serialization 2009-03-05 22:47 ` [ltt-dev] [RFC patch 17/41] LTTng - serialization Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-serialize.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/6bc3312e/attachment-0001.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 17/41] LTTng - serialization 2009-03-05 22:47 ` [ltt-dev] [RFC patch 17/41] LTTng - serialization Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-serialize.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/6bc3312e/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 18/41] Seq_file add support for sorted list 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (16 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 17/41] LTTng - serialization Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 19/41] Sort module list by pointer address to get coherent sleepable seq_file iterators Mathieu Desnoyers ` (24 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: seq_file_sorted.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/f36601f2/attachment-0001.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 18/41] Seq_file add support for sorted list 2009-03-05 22:47 ` [ltt-dev] [RFC patch 18/41] Seq_file add support for sorted list Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: seq_file_sorted.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/f36601f2/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 18/41] Seq_file add support for sorted list 2009-03-05 22:47 ` [ltt-dev] [RFC patch 18/41] Seq_file add support for sorted list Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: seq_file_sorted.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/f36601f2/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 19/41] Sort module list by pointer address to get coherent sleepable seq_file iterators 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (17 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 18/41] Seq_file add support for sorted list Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 20/41] Linux Kernel Markers - Iterator Mathieu Desnoyers ` (23 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: module.c-sort-module-list.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/e0313512/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 19/41] Sort module list by pointer address to get coherent sleepable seq_file iterators 2009-03-05 22:47 ` [ltt-dev] [RFC patch 19/41] Sort module list by pointer address to get coherent sleepable seq_file iterators Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: module.c-sort-module-list.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/e0313512/attachment-0001.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 19/41] Sort module list by pointer address to get coherent sleepable seq_file iterators 2009-03-05 22:47 ` [ltt-dev] [RFC patch 19/41] Sort module list by pointer address to get coherent sleepable seq_file iterators Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: module.c-sort-module-list.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/e0313512/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 20/41] Linux Kernel Markers - Iterator 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (18 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 19/41] Sort module list by pointer address to get coherent sleepable seq_file iterators Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 21/41] LTTng probes specialized tracepoints Mathieu Desnoyers ` (22 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: linux-kernel-markers-iterator.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/16b20619/attachment-0001.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 20/41] Linux Kernel Markers - Iterator 2009-03-05 22:47 ` [ltt-dev] [RFC patch 20/41] Linux Kernel Markers - Iterator Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: linux-kernel-markers-iterator.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/16b20619/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 20/41] Linux Kernel Markers - Iterator 2009-03-05 22:47 ` [ltt-dev] [RFC patch 20/41] Linux Kernel Markers - Iterator Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: linux-kernel-markers-iterator.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/16b20619/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 21/41] LTTng probes specialized tracepoints 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (19 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 20/41] Linux Kernel Markers - Iterator Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 22/41] LTTng marker control Mathieu Desnoyers ` (21 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-type-serializer.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/a7e773bc/attachment-0001.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 21/41] LTTng probes specialized tracepoints 2009-03-05 22:47 ` [ltt-dev] [RFC patch 21/41] LTTng probes specialized tracepoints Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-type-serializer.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/a7e773bc/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 21/41] LTTng probes specialized tracepoints 2009-03-05 22:47 ` [ltt-dev] [RFC patch 21/41] LTTng probes specialized tracepoints Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-type-serializer.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/a7e773bc/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 22/41] LTTng marker control 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (20 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 21/41] LTTng probes specialized tracepoints Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 23/41] Immediate Values Stub header Mathieu Desnoyers ` (20 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-marker-control.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/f7c93149/attachment-0001.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 22/41] LTTng marker control 2009-03-05 22:47 ` [ltt-dev] [RFC patch 22/41] LTTng marker control Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-marker-control.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/f7c93149/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 22/41] LTTng marker control 2009-03-05 22:47 ` [ltt-dev] [RFC patch 22/41] LTTng marker control Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-marker-control.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/f7c93149/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 23/41] Immediate Values Stub header 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (21 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 22/41] LTTng marker control Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 24/41] Linux Kernel Markers - Use Immediate Values Mathieu Desnoyers ` (19 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: immediate-value-stub-header.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/c237b0f8/attachment-0001.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 23/41] Immediate Values Stub header 2009-03-05 22:47 ` [ltt-dev] [RFC patch 23/41] Immediate Values Stub header Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: immediate-value-stub-header.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/c237b0f8/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 23/41] Immediate Values Stub header 2009-03-05 22:47 ` [ltt-dev] [RFC patch 23/41] Immediate Values Stub header Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: immediate-value-stub-header.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/c237b0f8/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 24/41] Linux Kernel Markers - Use Immediate Values 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (22 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 23/41] Immediate Values Stub header Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 25/41] Markers Support for Proprierary Modules Mathieu Desnoyers ` (18 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: linux-kernel-markers-immediate-values.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/190c137e/attachment-0001.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 24/41] Linux Kernel Markers - Use Immediate Values 2009-03-05 22:47 ` [ltt-dev] [RFC patch 24/41] Linux Kernel Markers - Use Immediate Values Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: linux-kernel-markers-immediate-values.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/190c137e/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 24/41] Linux Kernel Markers - Use Immediate Values 2009-03-05 22:47 ` [ltt-dev] [RFC patch 24/41] Linux Kernel Markers - Use Immediate Values Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: linux-kernel-markers-immediate-values.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/190c137e/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 25/41] Markers Support for Proprierary Modules 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (23 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 24/41] Linux Kernel Markers - Use Immediate Values Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 26/41] Marers remove old comment Mathieu Desnoyers ` (17 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: markers-support-for-proprietary-modules.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/25a6c3f7/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 25/41] Markers Support for Proprierary Modules 2009-03-05 22:47 ` [ltt-dev] [RFC patch 25/41] Markers Support for Proprierary Modules Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: markers-support-for-proprietary-modules.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/25a6c3f7/attachment-0001.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 25/41] Markers Support for Proprierary Modules 2009-03-05 22:47 ` [ltt-dev] [RFC patch 25/41] Markers Support for Proprierary Modules Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: markers-support-for-proprietary-modules.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/25a6c3f7/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 26/41] Marers remove old comment 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (24 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 25/41] Markers Support for Proprierary Modules Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 27/41] Markers use dynamic channels Mathieu Desnoyers ` (16 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: markers-remove-old-comment.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/bf3a8f56/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 26/41] Marers remove old comment 2009-03-05 22:47 ` [ltt-dev] [RFC patch 26/41] Marers remove old comment Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: markers-remove-old-comment.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/bf3a8f56/attachment-0001.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 26/41] Marers remove old comment 2009-03-05 22:47 ` [ltt-dev] [RFC patch 26/41] Marers remove old comment Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: markers-remove-old-comment.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/bf3a8f56/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 27/41] Markers use dynamic channels 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (25 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 26/41] Marers remove old comment Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 28/41] LTT trace control Mathieu Desnoyers ` (15 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: markers-use-dynamic-channels.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/1a8baba2/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 27/41] Markers use dynamic channels 2009-03-05 22:47 ` [ltt-dev] [RFC patch 27/41] Markers use dynamic channels Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: markers-use-dynamic-channels.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/1a8baba2/attachment-0001.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 27/41] Markers use dynamic channels 2009-03-05 22:47 ` [ltt-dev] [RFC patch 27/41] Markers use dynamic channels Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: markers-use-dynamic-channels.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/1a8baba2/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 28/41] LTT trace control 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (26 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 27/41] Markers use dynamic channels Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 29/41] LTTng menus Mathieu Desnoyers ` (14 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: ltt-trace-control.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/70d390d7/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 28/41] LTT trace control 2009-03-05 22:47 ` [ltt-dev] [RFC patch 28/41] LTT trace control Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: ltt-trace-control.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/70d390d7/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 28/41] LTT trace control 2009-03-05 22:47 ` [ltt-dev] [RFC patch 28/41] LTT trace control Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: ltt-trace-control.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/70d390d7/attachment-0001.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 29/41] LTTng menus 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (27 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 28/41] LTT trace control Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers ` (2 more replies) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 30/41] LTTng build Mathieu Desnoyers ` (13 subsequent siblings) 42 siblings, 3 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-menus.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/f1d0d016/attachment-0001.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 29/41] LTTng menus 2009-03-05 22:47 ` [ltt-dev] [RFC patch 29/41] LTTng menus Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 23:35 ` Randy Dunlap 2 siblings, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-menus.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/f1d0d016/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 29/41] LTTng menus 2009-03-05 22:47 ` [ltt-dev] [RFC patch 29/41] LTTng menus Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 23:35 ` Randy Dunlap 2 siblings, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-menus.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/f1d0d016/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 29/41] LTTng menus 2009-03-05 22:47 ` [ltt-dev] [RFC patch 29/41] LTTng menus Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 23:35 ` Randy Dunlap 2009-03-05 23:47 ` Mathieu Desnoyers 2 siblings, 1 reply; 141+ messages in thread From: Randy Dunlap @ 2009-03-05 23:35 UTC (permalink / raw) Mathieu Desnoyers wrote: <<attachment :(>> +menuconfig LTT + bool "Linux Trace Toolkit Next Generation (LTTng)" + depends on EXPERIMENTAL + select MARKERS + select TRACEPOINTS + default y Not default 'y', please. -- ~Randy ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 29/41] LTTng menus 2009-03-05 23:35 ` Randy Dunlap @ 2009-03-05 23:47 ` Mathieu Desnoyers 2009-03-05 23:51 ` Randy Dunlap 0 siblings, 1 reply; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 23:47 UTC (permalink / raw) * Randy Dunlap (randy.dunlap at oracle.com) wrote: > Mathieu Desnoyers wrote: > > <<attachment :(>> > > > +menuconfig LTT > + bool "Linux Trace Toolkit Next Generation (LTTng)" > + depends on EXPERIMENTAL > + select MARKERS > + select TRACEPOINTS > + default y > > Not default 'y', please. > OK, so default n it is. But I plan to leave the main menu "sub-features" as default y, given that people get the standard features when they choose to enable the tracer. Hopefully this is ok ? Mathieu > -- > ~Randy -- Mathieu Desnoyers OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 29/41] LTTng menus 2009-03-05 23:47 ` Mathieu Desnoyers @ 2009-03-05 23:51 ` Randy Dunlap 2009-03-06 0:01 ` Mathieu Desnoyers 0 siblings, 1 reply; 141+ messages in thread From: Randy Dunlap @ 2009-03-05 23:51 UTC (permalink / raw) Mathieu Desnoyers wrote: > * Randy Dunlap (randy.dunlap at oracle.com) wrote: >> Mathieu Desnoyers wrote: >> >> <<attachment :(>> >> >> >> +menuconfig LTT >> + bool "Linux Trace Toolkit Next Generation (LTTng)" >> + depends on EXPERIMENTAL >> + select MARKERS >> + select TRACEPOINTS >> + default y >> >> Not default 'y', please. >> > > OK, so default n it is. But I plan to leave the main menu "sub-features" as > default y, given that people get the standard features when they choose > to enable the tracer. Hopefully this is ok ? Sure, as long as it just enables viewing the menu and not adding code to a growing kernel. -- ~Randy ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 29/41] LTTng menus 2009-03-05 23:51 ` Randy Dunlap @ 2009-03-06 0:01 ` Mathieu Desnoyers 2009-03-06 0:12 ` Randy Dunlap 0 siblings, 1 reply; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-06 0:01 UTC (permalink / raw) * Randy Dunlap (randy.dunlap at oracle.com) wrote: > Mathieu Desnoyers wrote: > > * Randy Dunlap (randy.dunlap at oracle.com) wrote: > >> Mathieu Desnoyers wrote: > >> > >> <<attachment :(>> > >> > >> > >> +menuconfig LTT > >> + bool "Linux Trace Toolkit Next Generation (LTTng)" > >> + depends on EXPERIMENTAL > >> + select MARKERS > >> + select TRACEPOINTS > >> + default y > >> > >> Not default 'y', please. > >> > > > > OK, so default n it is. But I plan to leave the main menu "sub-features" as > > default y, given that people get the standard features when they choose > > to enable the tracer. Hopefully this is ok ? > > Sure, as long as it just enables viewing the menu and not adding > code to a growing kernel. > I want to be sure to understand your point. Would be following be OK ? Menu [ ] Linux Trace Toolkit Next Generation (LTTng) ---> (default n) Within this menu, the following options enable various tracer modules, some of which are typically needed, except in some very specific tracer use : < > Linux Trace Toolkit Lock-Protected Data Relay (default n) (default y is planned to be used for the lockless data relay module, which is not posted as part of this patchset) [ ] Debug check for random access in ltt relay buffers (default n) <*> Linux Trace Toolkit Serializer (default y) -*- Linux Trace Toolkit Custom Serializer (default y) -*- Linux Trace Toolkit Trace Controller (default m) <*> Linux Trace Toolkit Tracer (default y) [ ] Align Linux Trace Toolkit Traces (default n, selected of !HAVE_EFFICIENT_UNALIGNED_ACCESS) [ ] Add event size field to LTT events for tracer debugging (default n) <M> Support logging events from userspace (default m) [*] Support trace extraction from crash dump (default y) [*] Linux Trace Toolkit Kprobes Support (default y) I understand from your answer above that just enabling the "LTTng" submenu should not activate any of these items, am I correct ? Mathieu -- Mathieu Desnoyers OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 29/41] LTTng menus 2009-03-06 0:01 ` Mathieu Desnoyers @ 2009-03-06 0:12 ` Randy Dunlap 0 siblings, 0 replies; 141+ messages in thread From: Randy Dunlap @ 2009-03-06 0:12 UTC (permalink / raw) Mathieu Desnoyers wrote: > * Randy Dunlap (randy.dunlap at oracle.com) wrote: >> Mathieu Desnoyers wrote: >>> * Randy Dunlap (randy.dunlap at oracle.com) wrote: >>>> Mathieu Desnoyers wrote: >>>> >>>> <<attachment :(>> >>>> >>>> >>>> +menuconfig LTT >>>> + bool "Linux Trace Toolkit Next Generation (LTTng)" >>>> + depends on EXPERIMENTAL >>>> + select MARKERS >>>> + select TRACEPOINTS >>>> + default y >>>> >>>> Not default 'y', please. >>>> >>> OK, so default n it is. But I plan to leave the main menu "sub-features" as >>> default y, given that people get the standard features when they choose >>> to enable the tracer. Hopefully this is ok ? >> Sure, as long as it just enables viewing the menu and not adding >> code to a growing kernel. >> I see what you mean now. Thanks for the details. > > I want to be sure to understand your point. Would be following be OK ? > > Menu [ ] Linux Trace Toolkit Next Generation (LTTng) ---> (default n) > > Within this menu, the following options enable various tracer modules, > some of which are typically needed, except in some very specific tracer > use : > > < > Linux Trace Toolkit Lock-Protected Data Relay (default n) > (default y is planned to be used for the lockless data > relay module, which is not posted as part of this patchset) > [ ] Debug check for random access in ltt relay buffers (default n) > <*> Linux Trace Toolkit Serializer (default y) > -*- Linux Trace Toolkit Custom Serializer (default y) > -*- Linux Trace Toolkit Trace Controller (default m) > <*> Linux Trace Toolkit Tracer (default y) > [ ] Align Linux Trace Toolkit Traces (default n, selected of > !HAVE_EFFICIENT_UNALIGNED_ACCESS) > [ ] Add event size field to LTT events for tracer debugging (default n) > <M> Support logging events from userspace (default m) > [*] Support trace extraction from crash dump (default y) > [*] Linux Trace Toolkit Kprobes Support (default y) > > I understand from your answer above that just enabling the "LTTng" > submenu should not activate any of these items, am I correct ? Ideally one wouldn't add bloat to the kernel, but if someone enables the top-level menu item, I'm OK with enabling others under it. (not that we all consider the same things to be bloat ;) -- ~Randy ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 30/41] LTTng build 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (28 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 29/41] LTTng menus Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 31/41] LTTng userspace event v2 Mathieu Desnoyers ` (12 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-build-instrumentation-menu.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/72e2b25d/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 30/41] LTTng build 2009-03-05 22:47 ` [ltt-dev] [RFC patch 30/41] LTTng build Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-build-instrumentation-menu.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/72e2b25d/attachment-0001.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 30/41] LTTng build 2009-03-05 22:47 ` [ltt-dev] [RFC patch 30/41] LTTng build Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-build-instrumentation-menu.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/72e2b25d/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 31/41] LTTng userspace event v2 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (29 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 30/41] LTTng build Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:48 ` [ltt-dev] [RFC patch 32/41] LTTng filter Mathieu Desnoyers ` (11 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-userspace-write-event.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/b367d2af/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 31/41] LTTng userspace event v2 2009-03-05 22:47 ` [ltt-dev] [RFC patch 31/41] LTTng userspace event v2 Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-userspace-write-event.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/b367d2af/attachment-0001.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 31/41] LTTng userspace event v2 2009-03-05 22:47 ` [ltt-dev] [RFC patch 31/41] LTTng userspace event v2 Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers @ 2009-03-05 22:47 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:47 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-userspace-write-event.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/b367d2af/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 32/41] LTTng filter 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (30 preceding siblings ...) 2009-03-05 22:47 ` [ltt-dev] [RFC patch 31/41] LTTng userspace event v2 Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` [ltt-dev] [RFC patch 33/41] LTTng dynamic tracing support with kprobes Mathieu Desnoyers ` (10 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-filter.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/780348c3/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 32/41] LTTng filter 2009-03-05 22:48 ` [ltt-dev] [RFC patch 32/41] LTTng filter Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-filter.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/780348c3/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 32/41] LTTng filter 2009-03-05 22:48 ` [ltt-dev] [RFC patch 32/41] LTTng filter Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-filter.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/780348c3/attachment-0001.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 33/41] LTTng dynamic tracing support with kprobes 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (31 preceding siblings ...) 2009-03-05 22:48 ` [ltt-dev] [RFC patch 32/41] LTTng filter Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` [ltt-dev] [RFC patch 34/41] Marker header API update Mathieu Desnoyers ` (9 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-kprobes-support.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/9ef4f8af/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 33/41] LTTng dynamic tracing support with kprobes 2009-03-05 22:48 ` [ltt-dev] [RFC patch 33/41] LTTng dynamic tracing support with kprobes Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-kprobes-support.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/9ef4f8af/attachment-0001.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 33/41] LTTng dynamic tracing support with kprobes 2009-03-05 22:48 ` [ltt-dev] [RFC patch 33/41] LTTng dynamic tracing support with kprobes Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: lttng-kprobes-support.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/9ef4f8af/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 34/41] Marker header API update 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (32 preceding siblings ...) 2009-03-05 22:48 ` [ltt-dev] [RFC patch 33/41] LTTng dynamic tracing support with kprobes Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` [ltt-dev] [RFC patch 35/41] Marker " Mathieu Desnoyers ` (8 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: marker.h-api-update.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/2fc4cd88/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 34/41] Marker header API update 2009-03-05 22:48 ` [ltt-dev] [RFC patch 34/41] Marker header API update Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: marker.h-api-update.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/2fc4cd88/attachment-0001.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 34/41] Marker header API update 2009-03-05 22:48 ` [ltt-dev] [RFC patch 34/41] Marker header API update Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: marker.h-api-update.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/2fc4cd88/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 35/41] Marker API update 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (33 preceding siblings ...) 2009-03-05 22:48 ` [ltt-dev] [RFC patch 34/41] Marker header API update Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` [ltt-dev] [RFC patch 36/41] kvm markers " Mathieu Desnoyers ` (7 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: marker.c-api-update.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/2d7aac0e/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 35/41] Marker API update 2009-03-05 22:48 ` [ltt-dev] [RFC patch 35/41] Marker " Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: marker.c-api-update.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/2d7aac0e/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 35/41] Marker API update 2009-03-05 22:48 ` [ltt-dev] [RFC patch 35/41] Marker " Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: marker.c-api-update.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/2d7aac0e/attachment-0001.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 36/41] kvm markers API update 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (34 preceding siblings ...) 2009-03-05 22:48 ` [ltt-dev] [RFC patch 35/41] Marker " Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` [ltt-dev] [RFC patch 37/41] Markers : multi-probes test Mathieu Desnoyers ` (6 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: kvm-markers-api-update.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/b946d541/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 36/41] kvm markers API update 2009-03-05 22:48 ` [ltt-dev] [RFC patch 36/41] kvm markers " Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: kvm-markers-api-update.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/b946d541/attachment-0001.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 36/41] kvm markers API update 2009-03-05 22:48 ` [ltt-dev] [RFC patch 36/41] kvm markers " Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: kvm-markers-api-update.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/b946d541/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 37/41] Markers : multi-probes test 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (35 preceding siblings ...) 2009-03-05 22:48 ` [ltt-dev] [RFC patch 36/41] kvm markers " Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` [ltt-dev] [RFC patch 38/41] Markers examples API update Mathieu Desnoyers ` (5 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: markers-multi-probes-test.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/738ae989/attachment-0001.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 37/41] Markers : multi-probes test 2009-03-05 22:48 ` [ltt-dev] [RFC patch 37/41] Markers : multi-probes test Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: markers-multi-probes-test.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/738ae989/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 37/41] Markers : multi-probes test 2009-03-05 22:48 ` [ltt-dev] [RFC patch 37/41] Markers : multi-probes test Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: markers-multi-probes-test.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/738ae989/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 38/41] Markers examples API update 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (36 preceding siblings ...) 2009-03-05 22:48 ` [ltt-dev] [RFC patch 37/41] Markers : multi-probes test Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` [ltt-dev] [RFC patch 39/41] SPUFS markers " Mathieu Desnoyers ` (4 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: markers-examples-api-update.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/163563b6/attachment-0001.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 38/41] Markers examples API update 2009-03-05 22:48 ` [ltt-dev] [RFC patch 38/41] Markers examples API update Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: markers-examples-api-update.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/163563b6/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 38/41] Markers examples API update 2009-03-05 22:48 ` [ltt-dev] [RFC patch 38/41] Markers examples API update Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: markers-examples-api-update.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/163563b6/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 39/41] SPUFS markers API update 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (37 preceding siblings ...) 2009-03-05 22:48 ` [ltt-dev] [RFC patch 38/41] Markers examples API update Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` [ltt-dev] [RFC patch 40/41] EXT4: instrumentation with tracepoints Mathieu Desnoyers ` (3 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: spufs-markers-api-update.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/253381ff/attachment-0001.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 39/41] SPUFS markers API update 2009-03-05 22:48 ` [ltt-dev] [RFC patch 39/41] SPUFS markers " Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: spufs-markers-api-update.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/253381ff/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 39/41] SPUFS markers API update 2009-03-05 22:48 ` [ltt-dev] [RFC patch 39/41] SPUFS markers " Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: spufs-markers-api-update.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/253381ff/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 40/41] EXT4: instrumentation with tracepoints 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (38 preceding siblings ...) 2009-03-05 22:48 ` [ltt-dev] [RFC patch 39/41] SPUFS markers " Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` [ltt-dev] [RFC patch 41/41] JBD2: use tracepoints for instrumentation Mathieu Desnoyers ` (2 subsequent siblings) 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: ext4-move-from-markers-to-tracepoints.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/1be91ddb/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 40/41] EXT4: instrumentation with tracepoints 2009-03-05 22:48 ` [ltt-dev] [RFC patch 40/41] EXT4: instrumentation with tracepoints Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: ext4-move-from-markers-to-tracepoints.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/1be91ddb/attachment-0001.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 40/41] EXT4: instrumentation with tracepoints 2009-03-05 22:48 ` [ltt-dev] [RFC patch 40/41] EXT4: instrumentation with tracepoints Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: ext4-move-from-markers-to-tracepoints.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/1be91ddb/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 41/41] JBD2: use tracepoints for instrumentation 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (39 preceding siblings ...) 2009-03-05 22:48 ` [ltt-dev] [RFC patch 40/41] EXT4: instrumentation with tracepoints Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-06 10:11 ` [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Ingo Molnar 2009-03-06 18:34 ` Steven Rostedt 42 siblings, 2 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: jbd2-instrumentation-move-to-tracepoints.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/f9e03d32/attachment.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 41/41] JBD2: use tracepoints for instrumentation 2009-03-05 22:48 ` [ltt-dev] [RFC patch 41/41] JBD2: use tracepoints for instrumentation Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: jbd2-instrumentation-move-to-tracepoints.patch URL: <http://lists.casi.polymtl.ca/pipermail/ltt-dev/attachments/20090305/f9e03d32/attachment.asc> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 41/41] JBD2: use tracepoints for instrumentation 2009-03-05 22:48 ` [ltt-dev] [RFC patch 41/41] JBD2: use tracepoints for instrumentation Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers @ 2009-03-05 22:48 ` Mathieu Desnoyers 1 sibling, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-05 22:48 UTC (permalink / raw) An embedded and charset-unspecified text was scrubbed... Name: jbd2-instrumentation-move-to-tracepoints.patch URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20090305/f9e03d32/attachment-0001.txt> ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (40 preceding siblings ...) 2009-03-05 22:48 ` [ltt-dev] [RFC patch 41/41] JBD2: use tracepoints for instrumentation Mathieu Desnoyers @ 2009-03-06 10:11 ` Ingo Molnar 2009-03-06 19:02 ` Mathieu Desnoyers 2009-03-06 18:34 ` Steven Rostedt 42 siblings, 1 reply; 141+ messages in thread From: Ingo Molnar @ 2009-03-06 10:11 UTC (permalink / raw) * Mathieu Desnoyers <mathieu.desnoyers at polymtl.ca> wrote: > Hi, > > I spent the last 4-5 months working with the Fujitsu team at > implementing the tracer elements identified as goals at Kernel > Summit 2008 and at the following Plumber Conference. My idea > was to incremententally adapt the LTTng tracer, currently used > in the industry and well tested, to those requirements. > > I spent the last days rearranging/folding/inspecting the LTTng > patchset to prepare it for an LKML post. The version 0.105 in > the LTTng git tree corresponds to the patchset I am posting > here. The said patchset will only include the core features of > LTTng, excluding the timestamping infrastructure (trace clock) > and excluding the instrumentation. I'd like to merge the good bits into the tracing tree. Looking at the patches you submitted there's a lot of avoidable overlap with existing tracing features either present upstream already or queued up for v2.6.30 - and we need to work more on eliminating that overlap. I dont think there's much fundamental disagreement just different implementations - so we should evaluate each of those details one by one, iteratively. The first step would be to split the patches up into three logical buckets: - Unique features not present in the tracing infracture, in the event tracer or other tracing plugins - those should be structured as feature additions. - Features that you consider superior to existing tracing features of the kernel. For those, please iterate the existing code with your enhancements - instead of a parallel implementation. - Items which offer nothing new and are not superior to existing features, those should be dropped probably. This too is a case by case thing. Would you be interested in working with us on that? I know that both Steve and me would be very much interested in that. If you have time/interest to work on that then we can go through each patch one by one and categorize them and map out the way to go. Let me give you a few examples of existing areas of overlap: > The corresponding git tree contains also the trace clock > patches and the lttng instrumentation. The trace clock is > required to use the tracer, but it can be used without the > instrumentation : there is already a kprobes and userspace > event support included in this patchset. The latest tracing tree includes kernel/tracing/trace_clock.c which offers three trace clock variants, with different performance/precision tradeoffs: trace_clock_local() [ for pure CPU-local tracers with no idle events. This is the fastest but least coherent tracing clock. ] trace_clock() [ intermediate, scalable clock with usable but imprecise global coherency. ] trace_clock_global() [ globally serialized, coherent clock. It is the slowest but most accurate variant. ] Tracing plugins can pick their choice. (This is relatively new code but you get the idea.) > This tracer exports binary data through buffers using > splice(). The resulting binary files can be parsed from > userspace because the format string metadata is exported in > the files. The event set can be enhanced by adding tracepoints > to the kernel code and by creating probe modules, which > connects callbacks to the tracepoints and contain the format > string metainformation. Those callbacks are responsible for > writing the data in the trace buffers. This separation between > the trace buffer format string and the tracepoints is done on > purpose so the core kernel instrumentation (tracepoints) is > not exported to userspace, which will make maintainance much > easier. A tracepoint format specification mechanism plus working (and fast!) zero-copy splice() support of the ring-buffer exists in the latest tracing tree already - as you are probably aware of because you commented on those patches a few days ago. There are 3 good ways to go from here regarding the trace buffering and splice code: 1- we end up switching to the lttng version in essence 2- we end up keeping the tracing tree version 3- we end up somewhere inbetween Which point in the above spectrum we will settle down on depends on the technical details. Note, whichever path we choose a gradual, iterative workflow is still needed, so that we improve the existing upstream code with lttng enhancements gradually. This approach works for all your other patches as well. A direct, constructive comparison and active work on unifying them is required. Thanks, Ingo ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 2009-03-06 10:11 ` [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Ingo Molnar @ 2009-03-06 19:02 ` Mathieu Desnoyers 2009-03-11 18:32 ` Ingo Molnar 0 siblings, 1 reply; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-06 19:02 UTC (permalink / raw) * Ingo Molnar (mingo at elte.hu) wrote: > > * Mathieu Desnoyers <mathieu.desnoyers at polymtl.ca> wrote: > > > Hi, > > > > I spent the last 4-5 months working with the Fujitsu team at > > implementing the tracer elements identified as goals at Kernel > > Summit 2008 and at the following Plumber Conference. My idea > > was to incremententally adapt the LTTng tracer, currently used > > in the industry and well tested, to those requirements. > > > > I spent the last days rearranging/folding/inspecting the LTTng > > patchset to prepare it for an LKML post. The version 0.105 in > > the LTTng git tree corresponds to the patchset I am posting > > here. The said patchset will only include the core features of > > LTTng, excluding the timestamping infrastructure (trace clock) > > and excluding the instrumentation. > > I'd like to merge the good bits into the tracing tree. Looking > at the patches you submitted there's a lot of avoidable overlap > with existing tracing features either present upstream already > or queued up for v2.6.30 - and we need to work more on > eliminating that overlap. > > I dont think there's much fundamental disagreement just > different implementations - so we should evaluate each of those > details one by one, iteratively. > > The first step would be to split the patches up into three > logical buckets: > > - Unique features not present in the tracing infracture, in the > event tracer or other tracing plugins - those should be > structured as feature additions. > > - Features that you consider superior to existing tracing > features of the kernel. For those, please iterate the > existing code with your enhancements - instead of a parallel > implementation. > > - Items which offer nothing new and are not superior to > existing features, those should be dropped probably. This too > is a case by case thing. > > Would you be interested in working with us on that? I know that > both Steve and me would be very much interested in that. If you > have time/interest to work on that then we can go through each > patch one by one and categorize them and map out the way to go. > Hi Ingo, Yes, I think an incremental inclusion is the way to go in the current context. If we do it correctly, the resulting discussion will end up putting the best features of both tracers in the resulting one. The only problem is that I have less time at the moment (I should be writing my Ph.D. thesis full time), but I think it's very important at this stage to interact with the kernel community so everyone can benefit of the work done in the past years. I guess that identifying the good parts in each tracer will be a first step towards integration. If you want, I could start by replying to my own patchset post and do a ftrace-lttng comparison on each important item. I don't know how much time I'll be able to put into refactoring all this though : I just spent 4 years developing LTTng and making sure every nuts and bolts fits together fine. Hopefully we'll be able to keep the modifications as lightweight and as iterative as possible. > Let me give you a few examples of existing areas of overlap: > > > The corresponding git tree contains also the trace clock > > patches and the lttng instrumentation. The trace clock is > > required to use the tracer, but it can be used without the > > instrumentation : there is already a kprobes and userspace > > event support included in this patchset. > > The latest tracing tree includes kernel/tracing/trace_clock.c > which offers three trace clock variants, with different > performance/precision tradeoffs: > > trace_clock_local() [ for pure CPU-local tracers with no idle > events. This is the fastest but least > coherent tracing clock. ] > > trace_clock() [ intermediate, scalable clock with > usable but imprecise global coherency. ] > > trace_clock_global() [ globally serialized, coherent clock. > It is the slowest but most accurate variant. ] > > Tracing plugins can pick their choice. (This is relatively new > code but you get the idea.) > Hehe this reminds me of the trace clock thread I started a few months ago on LKML. So you guys took over that work ? Nice :) Is it based on the trace-clock patches I proposed back then ? Ah, no. Well I guess we'll have to discuss this too. I agree on the trace_clock_local/trace_clock/trace_clock_global interface, it looks nice. The underlying implementation will have to be discussed though. > > This tracer exports binary data through buffers using > > splice(). The resulting binary files can be parsed from > > userspace because the format string metadata is exported in > > the files. The event set can be enhanced by adding tracepoints > > to the kernel code and by creating probe modules, which > > connects callbacks to the tracepoints and contain the format > > string metainformation. Those callbacks are responsible for > > writing the data in the trace buffers. This separation between > > the trace buffer format string and the tracepoints is done on > > purpose so the core kernel instrumentation (tracepoints) is > > not exported to userspace, which will make maintainance much > > easier. > > A tracepoint format specification mechanism plus working (and > fast!) zero-copy splice() support of the ring-buffer exists in > the latest tracing tree already - as you are probably aware of > because you commented on those patches a few days ago. Yep, I know. :) > > There are 3 good ways to go from here regarding the trace > buffering and splice code: > > 1- we end up switching to the lttng version in essence > 2- we end up keeping the tracing tree version > 3- we end up somewhere inbetween > > Which point in the above spectrum we will settle down on depends > on the technical details. > > Note, whichever path we choose a gradual, iterative workflow is > still needed, so that we improve the existing upstream code with > lttng enhancements gradually. > > This approach works for all your other patches as well. A > direct, constructive comparison and active work on unifying them > is required. > Yes, let's try to do it. Maybe it's better to start a new thread with less CCs for this type of work ? Mathieu > Thanks, > > Ingo -- Mathieu Desnoyers OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 2009-03-06 19:02 ` Mathieu Desnoyers @ 2009-03-11 18:32 ` Ingo Molnar 2009-03-13 16:18 ` Mathieu Desnoyers 0 siblings, 1 reply; 141+ messages in thread From: Ingo Molnar @ 2009-03-11 18:32 UTC (permalink / raw) * Mathieu Desnoyers <mathieu.desnoyers at polymtl.ca> wrote: > > Let me give you a few examples of existing areas of overlap: > > > > > The corresponding git tree contains also the trace clock > > > patches and the lttng instrumentation. The trace clock is > > > required to use the tracer, but it can be used without the > > > instrumentation : there is already a kprobes and userspace > > > event support included in this patchset. > > > > The latest tracing tree includes > > kernel/tracing/trace_clock.c which offers three trace clock > > variants, with different performance/precision tradeoffs: > > > > trace_clock_local() [ for pure CPU-local tracers with no idle > > events. This is the fastest but least > > coherent tracing clock. ] > > > > trace_clock() [ intermediate, scalable clock with > > usable but imprecise global coherency. ] > > > > trace_clock_global() [ globally serialized, coherent clock. > > It is the slowest but most accurate variant. ] > > > > Tracing plugins can pick their choice. (This is relatively new > > code but you get the idea.) > > > > Hehe this reminds me of the trace clock thread I started a few > months ago on LKML. So you guys took over that work ? Nice :) > Is it based on the trace-clock patches I proposed back then ? > Ah, no. Well I guess we'll have to discuss this too. I agree > on the trace_clock_local/trace_clock/trace_clock_global > interface, it looks nice. The underlying implementation will > have to be discussed though. Beware: i found the assembly trace_clock() stuff you did back then rather ugly ;-) I dont think there's any easy solutions here, so i went for this palette of clocks. > > This approach works for all your other patches as well. A > > direct, constructive comparison and active work on unifying > > them is required. > > Yes, let's try to do it. Maybe it's better to start a new > thread with less CCs for this type of work ? Yeah. More finegrained steps are really needed. The least controversial bits would be the many tracepoints you identified in LTTng as interesting. Mind sending them separately so that we can make some progress? In the latest tracing code all tracepoints will show up automatically under /debug/tracing/events/ and can be used by user-space tools. Ingo ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 2009-03-11 18:32 ` Ingo Molnar @ 2009-03-13 16:18 ` Mathieu Desnoyers 2009-03-14 16:43 ` Ingo Molnar 0 siblings, 1 reply; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-13 16:18 UTC (permalink / raw) * Ingo Molnar (mingo at elte.hu) wrote: > > * Mathieu Desnoyers <mathieu.desnoyers at polymtl.ca> wrote: > > > > Let me give you a few examples of existing areas of overlap: > > > > > > > The corresponding git tree contains also the trace clock > > > > patches and the lttng instrumentation. The trace clock is > > > > required to use the tracer, but it can be used without the > > > > instrumentation : there is already a kprobes and userspace > > > > event support included in this patchset. > > > > > > The latest tracing tree includes > > > kernel/tracing/trace_clock.c which offers three trace clock > > > variants, with different performance/precision tradeoffs: > > > > > > trace_clock_local() [ for pure CPU-local tracers with no idle > > > events. This is the fastest but least > > > coherent tracing clock. ] > > > > > > trace_clock() [ intermediate, scalable clock with > > > usable but imprecise global coherency. ] > > > > > > trace_clock_global() [ globally serialized, coherent clock. > > > It is the slowest but most accurate variant. ] > > > > > > Tracing plugins can pick their choice. (This is relatively new > > > code but you get the idea.) > > > > > > > Hehe this reminds me of the trace clock thread I started a few > > months ago on LKML. So you guys took over that work ? Nice :) > > Is it based on the trace-clock patches I proposed back then ? > > Ah, no. Well I guess we'll have to discuss this too. I agree > > on the trace_clock_local/trace_clock/trace_clock_global > > interface, it looks nice. The underlying implementation will > > have to be discussed though. > > Beware: i found the assembly trace_clock() stuff you did back > then rather ugly ;-) I dont think there's any easy solutions > here, so i went for this palette of clocks. > Hi Ingo, I agree for the palette of clocks to fit all needs. I wonder what exactly you found ugly in the approach I took with my trace_clock() implementation ? Maybe you could refresh my memory, I do not recall writing any part of it in assembly.. ? But this is a whole different topic. We can discuss this later. > > > This approach works for all your other patches as well. A > > > direct, constructive comparison and active work on unifying > > > them is required. > > > > Yes, let's try to do it. Maybe it's better to start a new > > thread with less CCs for this type of work ? > > Yeah. More finegrained steps are really needed. > > The least controversial bits would be the many tracepoints you > identified in LTTng as interesting. Mind sending them separately > so that we can make some progress? > OK, I'll work on it. Note however that I flipped my patchset around in the past months : thinking that the tracer acceptance would be easier than tracepoints. And now we are back at square one. Is it just me or I have the funny feeling of acting like a dog running in circles after his tail ? :) > In the latest tracing code all tracepoints will show up > automatically under /debug/tracing/events/ and can be used by > user-space tools. > Hrm, the thing is : I strongly disagree with showing tracepoints to userspace and with the fact that you embed the data serialization "pseudo-callbacks" into the tracepoint headers. Here is why. Peter Zijlstra convinced me that putting format strings directly in tracepoint headers was a bad idea. First off, you end up requiring all tracers which connect on the tracepoints to choose your event format description if they ever want to benefit from it. It's a "all included" formula : either the tracers use them or they cannot output "standard" trace information. Second point : the tracepoints are meant to be tied to the kernel source. Putting those event descriptions in global headers seems like the people responsible for writing the kernel code surrounding the tracepoints will end up being responsible for updating those tracepoint event format descriptions. I think this is an unacceptable maintainance burden for the whole community. Only tracer-specific modules should refuse to build whenever it does not match the inner kernel structures anymore. Third point : it's plainly ugly. If we look at your tracepoint example : /* * Tracepoint for task switches, performed by the scheduler: * * (NOTE: the 'rq' argument is not used by generic trace events, * but used by the latency tracer plugin. ) */ TRACE_EVENT(sched_switch, TP_PROTO(struct rq *rq, struct task_struct *prev, struct task_struct *next), TP_ARGS(rq, prev, next), TP_STRUCT__entry( __array( char, prev_comm, TASK_COMM_LEN ) __field( pid_t, prev_pid ) __field( int, prev_prio ) __array( char, next_comm, TASK_COMM_LEN ) __field( pid_t, next_pid ) __field( int, next_prio ) ), TP_printk("task %s:%d [%d] ==> %s:%d [%d]", __entry->prev_comm, __entry->prev_pid, __entry->prev_prio, __entry->next_comm, __entry->next_pid, __entry->next_prio), TP_fast_assign( memcpy(__entry->next_comm, next->comm, TASK_COMM_LEN); __entry->prev_pid = prev->pid; __entry->prev_prio = prev->prio; memcpy(__entry->prev_comm, prev->comm, TASK_COMM_LEN); __entry->next_pid = next->pid; __entry->next_prio = next->prio; ) ); I notice that you actually embed the "function" that converts between the format string into a header macro declaration. Why don't we write this in plain C ? in include/trace/sched.h : DECLARE_TRACE(sched_switch, TPPROTO(struct rq *rq, struct task_struct *prev, struct task_struct *next), TPARGS(rq, prev, next)); in ltt/probes/kernel-trace.c : void probe_sched_switch(struct rq *rq, struct task_struct *prev, struct task_struct *next); DEFINE_MARKER_TP(kernel, sched_schedule, sched_switch, probe_sched_switch, "prev_pid %d next_pid %d prev_state #2d%ld"); notrace void probe_sched_switch(struct rq *rq, struct task_struct *prev, struct task_struct *next) { struct marker *marker; struct serialize_int_int_short data; data.f1 = prev->pid; data.f2 = next->pid; data.f3 = prev->state; marker = &GET_MARKER(kernel, sched_schedule); ltt_specialized_trace(marker, marker->single.probe_private, &data, serialize_sizeof(data), sizeof(int)); } This way, if the content of task_struct ever changes, only the tracer module will break, not code touching a global header. Mathieu -- Mathieu Desnoyers OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 2009-03-13 16:18 ` Mathieu Desnoyers @ 2009-03-14 16:43 ` Ingo Molnar 2009-03-14 16:59 ` Mathieu Desnoyers 0 siblings, 1 reply; 141+ messages in thread From: Ingo Molnar @ 2009-03-14 16:43 UTC (permalink / raw) * Mathieu Desnoyers <mathieu.desnoyers at polymtl.ca> wrote: > * Ingo Molnar (mingo at elte.hu) wrote: > > > > * Mathieu Desnoyers <mathieu.desnoyers at polymtl.ca> wrote: > > > > > > Let me give you a few examples of existing areas of overlap: > > > > > > > > > The corresponding git tree contains also the trace clock > > > > > patches and the lttng instrumentation. The trace clock is > > > > > required to use the tracer, but it can be used without the > > > > > instrumentation : there is already a kprobes and userspace > > > > > event support included in this patchset. > > > > > > > > The latest tracing tree includes > > > > kernel/tracing/trace_clock.c which offers three trace clock > > > > variants, with different performance/precision tradeoffs: > > > > > > > > trace_clock_local() [ for pure CPU-local tracers with no idle > > > > events. This is the fastest but least > > > > coherent tracing clock. ] > > > > > > > > trace_clock() [ intermediate, scalable clock with > > > > usable but imprecise global coherency. ] > > > > > > > > trace_clock_global() [ globally serialized, coherent clock. > > > > It is the slowest but most accurate variant. ] > > > > > > > > Tracing plugins can pick their choice. (This is relatively new > > > > code but you get the idea.) > > > > > > > > > > Hehe this reminds me of the trace clock thread I started a few > > > months ago on LKML. So you guys took over that work ? Nice :) > > > Is it based on the trace-clock patches I proposed back then ? > > > Ah, no. Well I guess we'll have to discuss this too. I agree > > > on the trace_clock_local/trace_clock/trace_clock_global > > > interface, it looks nice. The underlying implementation will > > > have to be discussed though. > > > > Beware: i found the assembly trace_clock() stuff you did back > > then rather ugly ;-) I dont think there's any easy solutions > > here, so i went for this palette of clocks. > > > > Hi Ingo, > > I agree for the palette of clocks to fit all needs. I wonder > what exactly you found ugly in the approach I took with my > trace_clock() implementation ? Maybe you could refresh my > memory, I do not recall writing any part of it in assembly.. ? > But this is a whole different topic. We can discuss this > later. hm, it was months ago. Ok, it must have been this one: http://lkml.org/lkml/2008/11/7/21 http://lkml.org/lkml/2008/11/7/23 indeed no assembly but almost ;-) What i found rather ugly were the cnt32_to_63() complications. Ingo ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 2009-03-14 16:43 ` Ingo Molnar @ 2009-03-14 16:59 ` Mathieu Desnoyers 0 siblings, 0 replies; 141+ messages in thread From: Mathieu Desnoyers @ 2009-03-14 16:59 UTC (permalink / raw) * Ingo Molnar (mingo at elte.hu) wrote: > > * Mathieu Desnoyers <mathieu.desnoyers at polymtl.ca> wrote: > > > * Ingo Molnar (mingo at elte.hu) wrote: > > > > > > * Mathieu Desnoyers <mathieu.desnoyers at polymtl.ca> wrote: > > > > > > > > Let me give you a few examples of existing areas of overlap: > > > > > > > > > > > The corresponding git tree contains also the trace clock > > > > > > patches and the lttng instrumentation. The trace clock is > > > > > > required to use the tracer, but it can be used without the > > > > > > instrumentation : there is already a kprobes and userspace > > > > > > event support included in this patchset. > > > > > > > > > > The latest tracing tree includes > > > > > kernel/tracing/trace_clock.c which offers three trace clock > > > > > variants, with different performance/precision tradeoffs: > > > > > > > > > > trace_clock_local() [ for pure CPU-local tracers with no idle > > > > > events. This is the fastest but least > > > > > coherent tracing clock. ] > > > > > > > > > > trace_clock() [ intermediate, scalable clock with > > > > > usable but imprecise global coherency. ] > > > > > > > > > > trace_clock_global() [ globally serialized, coherent clock. > > > > > It is the slowest but most accurate variant. ] > > > > > > > > > > Tracing plugins can pick their choice. (This is relatively new > > > > > code but you get the idea.) > > > > > > > > > > > > > Hehe this reminds me of the trace clock thread I started a few > > > > months ago on LKML. So you guys took over that work ? Nice :) > > > > Is it based on the trace-clock patches I proposed back then ? > > > > Ah, no. Well I guess we'll have to discuss this too. I agree > > > > on the trace_clock_local/trace_clock/trace_clock_global > > > > interface, it looks nice. The underlying implementation will > > > > have to be discussed though. > > > > > > Beware: i found the assembly trace_clock() stuff you did back > > > then rather ugly ;-) I dont think there's any easy solutions > > > here, so i went for this palette of clocks. > > > > > > > Hi Ingo, > > > > I agree for the palette of clocks to fit all needs. I wonder > > what exactly you found ugly in the approach I took with my > > trace_clock() implementation ? Maybe you could refresh my > > memory, I do not recall writing any part of it in assembly.. ? > > But this is a whole different topic. We can discuss this > > later. > > hm, it was months ago. Ok, it must have been this one: > > http://lkml.org/lkml/2008/11/7/21 > http://lkml.org/lkml/2008/11/7/23 > > indeed no assembly but almost ;-) What i found rather ugly were > the cnt32_to_63() complications. > The fact that I put a patch touching cnt32_to_63 back then was just a way to point out how the current cnt32_to_63 implementation is broken for SMP and should stay in UP-only architecture-specific code (that was an answer to Peter Zijlstra's reuse concerns). Once I got agreement that tracers should not be expected to use cnt32_to_63, I dropped any patch touching this piece of infrastructure and stayed with my trace-clock-32-to-64.c implementation, which is SMP-safe, scalable and basically extends atomically (through a rcu-like algorithm) a N bit clock to a full 64-bits clock. This is very, very useful for lots of architectures. Is it that code you find ugly ? Mathieu > Ingo > > _______________________________________________ > ltt-dev mailing list > ltt-dev at lists.casi.polymtl.ca > http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev > -- Mathieu Desnoyers OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers ` (41 preceding siblings ...) 2009-03-06 10:11 ` [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Ingo Molnar @ 2009-03-06 18:34 ` Steven Rostedt 2009-03-06 19:01 ` Frederic Weisbecker 42 siblings, 1 reply; 141+ messages in thread From: Steven Rostedt @ 2009-03-06 18:34 UTC (permalink / raw) Hi Mathieu, Thanks for posting this. But it might be better to post in much smaller chunks. Lets work out the little things first. Posting 41 patches is a bit overwhelming. Took me a few hours to look at them all, and when I got to the end, I forgot what was at the beginning. There's also minor changes to core kernel infrastructure code. seq_file, exporting functions, and such. These really need to be packaged separately, and sent to the proper maintainers. Having them in a patch bomb does not get the proper focus that they need. On Thu, 5 Mar 2009, Mathieu Desnoyers wrote: > Hi, > > I spent the last 4-5 months working with the Fujitsu team at implementing the > tracer elements identified as goals at Kernel Summit 2008 and at the following > Plumber Conference. My idea was to incremententally adapt the LTTng tracer, > currently used in the industry and well tested, to those requirements. We really need to work together on this too. The biggest requirement that came out of that conference was to have a "single unified buffering system". And this was discussed quite heavily on LKML afterwards. All development was done incrementally and publicly. > > I spent the last days rearranging/folding/inspecting the LTTng patchset > to prepare it for an LKML post. The version 0.105 in the LTTng git tree > corresponds to the patchset I am posting here. The said patchset will > only include the core features of LTTng, excluding the timestamping > infrastructure (trace clock) and excluding the instrumentation. > > The corresponding git tree contains also the trace clock patches and the lttng > instrumentation. The trace clock is required to use the tracer, but it can be > used without the instrumentation : there is already a kprobes and userspace > event support included in this patchset. > > This tracer exports binary data through buffers using splice(). The resulting > binary files can be parsed from userspace because the format string metadata is > exported in the files. The event set can be enhanced by adding tracepoints to > the kernel code and by creating probe modules, which connects callbacks to the > tracepoints and contain the format string metainformation. Those callbacks are > responsible for writing the data in the trace buffers. This separation between > the trace buffer format string and the tracepoints is done on purpose so the > core kernel instrumentation (tracepoints) is not exported to userspace, which > will make maintainance much easier. I've discussed this in my previous email. There is still a separation with the TRACE_EVENT_FORMAT and the maintainers code. The format sting is "hint" only and may change without notice. LTTng could use it or ignore it, it is up to the tracer to actually export that string. ftrace chose to export it because it was a simple way to extract that information. My utility will need to do a bit more work when the events get more complex, but the way it is set up, we can do that on a case by case basis. > > The tree including the trace clock patches is available at : > > git://git.kernel.org/pub/scm/linux/kernel/git/compudj/linux-2.6-lttng.git > branch : 2.6.29-rc7-lttng-0.105 > > Project website : http://www.lttng.org/ > > Information about how to install and use the tracer is available at : > > http://ltt.polymtl.ca/svn/trunk/lttv/LTTngManual.html > > The size of the LTTng core patchset is 41 patches. The diffstat details > as follow : Again, this is overwhelming. This needs to be broken up into a small subsets that can be examined piece by piece. > > include/linux/ltt-core.h | 35 > include/linux/ltt-relay.h | 161 + > include/linux/ltt-tracer.h | 43 > include/linux/marker.h | 121 > kernel/marker.c | 353 ++ > kernel/module.c | 31 > linux-2.6-lttng/Documentation/markers.txt | 17 > linux-2.6-lttng/MAINTAINERS | 7 > linux-2.6-lttng/Makefile | 2 > linux-2.6-lttng/arch/powerpc/kernel/traps.c | 5 > linux-2.6-lttng/arch/powerpc/platforms/cell/spufs/spufs.h | 6 > linux-2.6-lttng/arch/sparc/Makefile | 2 > linux-2.6-lttng/arch/x86/kernel/dumpstack.c | 5 > linux-2.6-lttng/arch/x86/mm/fault.c | 1 > linux-2.6-lttng/fs/ext4/fsync.c | 8 > linux-2.6-lttng/fs/ext4/ialloc.c | 17 > linux-2.6-lttng/fs/ext4/inode.c | 79 > linux-2.6-lttng/fs/ext4/mballoc.c | 71 > linux-2.6-lttng/fs/ext4/mballoc.h | 2 > linux-2.6-lttng/fs/ext4/super.c | 6 > linux-2.6-lttng/fs/jbd2/checkpoint.c | 7 > linux-2.6-lttng/fs/jbd2/commit.c | 12 > linux-2.6-lttng/fs/pipe.c | 5 > linux-2.6-lttng/fs/select.c | 41 > linux-2.6-lttng/fs/seq_file.c | 45 > linux-2.6-lttng/fs/splice.c | 1 There is a lot of code above that needs to be in their own patch series. Maintainers do not have the time to pick through 41 patches to find out which patch might deal with their code. Thanks, -- Steve > linux-2.6-lttng/include/linux/immediate.h | 94 > linux-2.6-lttng/include/linux/kvm_host.h | 12 > linux-2.6-lttng/include/linux/ltt-channels.h | 94 > linux-2.6-lttng/include/linux/ltt-core.h | 47 > linux-2.6-lttng/include/linux/ltt-relay.h | 186 + > linux-2.6-lttng/include/linux/ltt-tracer.h | 731 ++++++ > linux-2.6-lttng/include/linux/ltt-type-serializer.h | 107 > linux-2.6-lttng/include/linux/marker.h | 16 > linux-2.6-lttng/include/linux/module.h | 6 > linux-2.6-lttng/include/linux/poll.h | 2 > linux-2.6-lttng/include/linux/seq_file.h | 20 > linux-2.6-lttng/include/trace/ext4.h | 129 + > linux-2.6-lttng/include/trace/jbd2.h | 19 > linux-2.6-lttng/init/Kconfig | 2 > linux-2.6-lttng/kernel/kallsyms.c | 1 > linux-2.6-lttng/kernel/marker.c | 12 > linux-2.6-lttng/kernel/module.c | 32 > linux-2.6-lttng/ltt/Kconfig | 130 + > linux-2.6-lttng/ltt/Makefile | 15 > linux-2.6-lttng/ltt/ltt-channels.c | 338 ++ > linux-2.6-lttng/ltt/ltt-core.c | 101 > linux-2.6-lttng/ltt/ltt-filter.c | 66 > linux-2.6-lttng/ltt/ltt-kprobes.c | 479 +++ > linux-2.6-lttng/ltt/ltt-marker-control.c | 265 ++ > linux-2.6-lttng/ltt/ltt-relay-alloc.c | 715 +++++ > linux-2.6-lttng/ltt/ltt-relay-locked.c | 1704 ++++++++++++++ > linux-2.6-lttng/ltt/ltt-serialize.c | 685 +++++ > linux-2.6-lttng/ltt/ltt-trace-control.c | 1061 ++++++++ > linux-2.6-lttng/ltt/ltt-tracer.c | 1210 +++++++++ > linux-2.6-lttng/ltt/ltt-type-serializer.c | 96 > linux-2.6-lttng/ltt/ltt-userspace-event.c | 131 + > linux-2.6-lttng/samples/markers/Makefile | 2 > linux-2.6-lttng/samples/markers/marker-example.c | 4 > linux-2.6-lttng/samples/markers/probe-example.c | 10 > linux-2.6-lttng/samples/markers/test-multi.c | 120 > linux-2.6-lttng/virt/kvm/kvm_trace.c | 12 > ltt/Kconfig | 24 > ltt/Makefile | 2 > ltt/ltt-relay-alloc.c | 80 > 65 files changed, 9445 insertions(+), 398 deletions(-) > > > Comments are welcome. > > Mathieu > > > -- > Mathieu Desnoyers > OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 > ^ permalink raw reply [flat|nested] 141+ messages in thread
* [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 2009-03-06 18:34 ` Steven Rostedt @ 2009-03-06 19:01 ` Frederic Weisbecker 0 siblings, 0 replies; 141+ messages in thread From: Frederic Weisbecker @ 2009-03-06 19:01 UTC (permalink / raw) On Fri, Mar 06, 2009 at 01:34:43PM -0500, Steven Rostedt wrote: > > Hi Mathieu, > > Thanks for posting this. But it might be better to post in much smaller > chunks. Lets work out the little things first. Posting 41 patches is a bit > overwhelming. Took me a few hours to look at them all, and when I got to > the end, I forgot what was at the beginning. > > There's also minor changes to core kernel infrastructure code. seq_file, > exporting functions, and such. These really need to be packaged > separately, and sent to the proper maintainers. Having them in a patch > bomb does not get the proper focus that they need. > Yes, I must confess I tried to review some of them but I have been discouraged by the high volume and the multiple subjects that come with. Iterating with smaller topics at a time, more focused subjects would help us to bring the attention it deserves. Frederic. > On Thu, 5 Mar 2009, Mathieu Desnoyers wrote: > > > Hi, > > > > I spent the last 4-5 months working with the Fujitsu team at implementing the > > tracer elements identified as goals at Kernel Summit 2008 and at the following > > Plumber Conference. My idea was to incremententally adapt the LTTng tracer, > > currently used in the industry and well tested, to those requirements. > > We really need to work together on this too. The biggest requirement that > came out of that conference was to have a "single unified buffering > system". And this was discussed quite heavily on LKML afterwards. All > development was done incrementally and publicly. > > > > I spent the last days rearranging/folding/inspecting the LTTng patchset > > to prepare it for an LKML post. The version 0.105 in the LTTng git tree > > corresponds to the patchset I am posting here. The said patchset will > > only include the core features of LTTng, excluding the timestamping > > infrastructure (trace clock) and excluding the instrumentation. > > > > The corresponding git tree contains also the trace clock patches and the lttng > > instrumentation. The trace clock is required to use the tracer, but it can be > > used without the instrumentation : there is already a kprobes and userspace > > event support included in this patchset. > > > > This tracer exports binary data through buffers using splice(). The resulting > > binary files can be parsed from userspace because the format string metadata is > > exported in the files. The event set can be enhanced by adding tracepoints to > > the kernel code and by creating probe modules, which connects callbacks to the > > tracepoints and contain the format string metainformation. Those callbacks are > > responsible for writing the data in the trace buffers. This separation between > > the trace buffer format string and the tracepoints is done on purpose so the > > core kernel instrumentation (tracepoints) is not exported to userspace, which > > will make maintainance much easier. > > I've discussed this in my previous email. There is still a separation with > the TRACE_EVENT_FORMAT and the maintainers code. The format sting is > "hint" only and may change without notice. LTTng could use it or ignore > it, it is up to the tracer to actually export that string. ftrace chose to > export it because it was a simple way to extract that information. My > utility will need to do a bit more work when the events get more complex, > but the way it is set up, we can do that on a case by case basis. > > > > > > The tree including the trace clock patches is available at : > > > > git://git.kernel.org/pub/scm/linux/kernel/git/compudj/linux-2.6-lttng.git > > branch : 2.6.29-rc7-lttng-0.105 > > > > Project website : http://www.lttng.org/ > > > > Information about how to install and use the tracer is available at : > > > > http://ltt.polymtl.ca/svn/trunk/lttv/LTTngManual.html > > > > The size of the LTTng core patchset is 41 patches. The diffstat details > > as follow : > > > Again, this is overwhelming. This needs to be broken up into a small > subsets that can be examined piece by piece. > > > > > include/linux/ltt-core.h | 35 > > include/linux/ltt-relay.h | 161 + > > include/linux/ltt-tracer.h | 43 > > include/linux/marker.h | 121 > > kernel/marker.c | 353 ++ > > kernel/module.c | 31 > > linux-2.6-lttng/Documentation/markers.txt | 17 > > linux-2.6-lttng/MAINTAINERS | 7 > > linux-2.6-lttng/Makefile | 2 > > linux-2.6-lttng/arch/powerpc/kernel/traps.c | 5 > > linux-2.6-lttng/arch/powerpc/platforms/cell/spufs/spufs.h | 6 > > linux-2.6-lttng/arch/sparc/Makefile | 2 > > linux-2.6-lttng/arch/x86/kernel/dumpstack.c | 5 > > linux-2.6-lttng/arch/x86/mm/fault.c | 1 > > linux-2.6-lttng/fs/ext4/fsync.c | 8 > > linux-2.6-lttng/fs/ext4/ialloc.c | 17 > > linux-2.6-lttng/fs/ext4/inode.c | 79 > > linux-2.6-lttng/fs/ext4/mballoc.c | 71 > > linux-2.6-lttng/fs/ext4/mballoc.h | 2 > > linux-2.6-lttng/fs/ext4/super.c | 6 > > linux-2.6-lttng/fs/jbd2/checkpoint.c | 7 > > linux-2.6-lttng/fs/jbd2/commit.c | 12 > > linux-2.6-lttng/fs/pipe.c | 5 > > linux-2.6-lttng/fs/select.c | 41 > > linux-2.6-lttng/fs/seq_file.c | 45 > > linux-2.6-lttng/fs/splice.c | 1 > > There is a lot of code above that needs to be in their own patch series. > Maintainers do not have the time to pick through 41 patches to find out > which patch might deal with their code. > > Thanks, > > -- Steve > > > > linux-2.6-lttng/include/linux/immediate.h | 94 > > linux-2.6-lttng/include/linux/kvm_host.h | 12 > > linux-2.6-lttng/include/linux/ltt-channels.h | 94 > > linux-2.6-lttng/include/linux/ltt-core.h | 47 > > linux-2.6-lttng/include/linux/ltt-relay.h | 186 + > > linux-2.6-lttng/include/linux/ltt-tracer.h | 731 ++++++ > > linux-2.6-lttng/include/linux/ltt-type-serializer.h | 107 > > linux-2.6-lttng/include/linux/marker.h | 16 > > linux-2.6-lttng/include/linux/module.h | 6 > > linux-2.6-lttng/include/linux/poll.h | 2 > > linux-2.6-lttng/include/linux/seq_file.h | 20 > > linux-2.6-lttng/include/trace/ext4.h | 129 + > > linux-2.6-lttng/include/trace/jbd2.h | 19 > > linux-2.6-lttng/init/Kconfig | 2 > > linux-2.6-lttng/kernel/kallsyms.c | 1 > > linux-2.6-lttng/kernel/marker.c | 12 > > linux-2.6-lttng/kernel/module.c | 32 > > linux-2.6-lttng/ltt/Kconfig | 130 + > > linux-2.6-lttng/ltt/Makefile | 15 > > linux-2.6-lttng/ltt/ltt-channels.c | 338 ++ > > linux-2.6-lttng/ltt/ltt-core.c | 101 > > linux-2.6-lttng/ltt/ltt-filter.c | 66 > > linux-2.6-lttng/ltt/ltt-kprobes.c | 479 +++ > > linux-2.6-lttng/ltt/ltt-marker-control.c | 265 ++ > > linux-2.6-lttng/ltt/ltt-relay-alloc.c | 715 +++++ > > linux-2.6-lttng/ltt/ltt-relay-locked.c | 1704 ++++++++++++++ > > linux-2.6-lttng/ltt/ltt-serialize.c | 685 +++++ > > linux-2.6-lttng/ltt/ltt-trace-control.c | 1061 ++++++++ > > linux-2.6-lttng/ltt/ltt-tracer.c | 1210 +++++++++ > > linux-2.6-lttng/ltt/ltt-type-serializer.c | 96 > > linux-2.6-lttng/ltt/ltt-userspace-event.c | 131 + > > linux-2.6-lttng/samples/markers/Makefile | 2 > > linux-2.6-lttng/samples/markers/marker-example.c | 4 > > linux-2.6-lttng/samples/markers/probe-example.c | 10 > > linux-2.6-lttng/samples/markers/test-multi.c | 120 > > linux-2.6-lttng/virt/kvm/kvm_trace.c | 12 > > ltt/Kconfig | 24 > > ltt/Makefile | 2 > > ltt/ltt-relay-alloc.c | 80 > > 65 files changed, 9445 insertions(+), 398 deletions(-) > > > > > > Comments are welcome. > > > > Mathieu > > > > > > -- > > Mathieu Desnoyers > > OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 > > ^ permalink raw reply [flat|nested] 141+ messages in thread
end of thread, other threads:[~2009-03-14 16:59 UTC | newest] Thread overview: 141+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2009-03-05 22:47 [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 01/41] LTTng - core header Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-06 18:37 ` Steven Rostedt 2009-03-05 22:47 ` [ltt-dev] [RFC patch 02/41] LTTng - core data structures Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-06 18:41 ` Steven Rostedt 2009-03-05 22:47 ` [ltt-dev] [RFC patch 03/41] LTTng core x86 Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 04/41] LTTng core powerpc Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 05/41] LTTng relay buffer allocation, read, write Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-06 19:19 ` Steven Rostedt 2009-03-06 20:01 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 06/41] LTTng optimize write to page function Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 07/41] LTTng dynamic channels Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 08/41] LTTng - tracer header Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 09/41] LTTng optimize write to page function deal with unaligned access Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 10/41] lttng-optimize-write-to-page-function-remove-some-memcpy-calls Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 11/41] ltt-relay: cache pages address Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 12/41] x86 : export vmalloc_sync_all() Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 13/41] LTTng - tracer code Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 14/41] Splice and pipe : export pipe buf operations for GPL modules Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 15/41] Poll : add poll_wait_set_exclusive Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 16/41] LTTng Transport Locked Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 17/41] LTTng - serialization Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 18/41] Seq_file add support for sorted list Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 19/41] Sort module list by pointer address to get coherent sleepable seq_file iterators Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 20/41] Linux Kernel Markers - Iterator Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 21/41] LTTng probes specialized tracepoints Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 22/41] LTTng marker control Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 23/41] Immediate Values Stub header Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 24/41] Linux Kernel Markers - Use Immediate Values Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 25/41] Markers Support for Proprierary Modules Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 26/41] Marers remove old comment Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 27/41] Markers use dynamic channels Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 28/41] LTT trace control Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 29/41] LTTng menus Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 23:35 ` Randy Dunlap 2009-03-05 23:47 ` Mathieu Desnoyers 2009-03-05 23:51 ` Randy Dunlap 2009-03-06 0:01 ` Mathieu Desnoyers 2009-03-06 0:12 ` Randy Dunlap 2009-03-05 22:47 ` [ltt-dev] [RFC patch 30/41] LTTng build Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` [ltt-dev] [RFC patch 31/41] LTTng userspace event v2 Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:47 ` Mathieu Desnoyers 2009-03-05 22:48 ` [ltt-dev] [RFC patch 32/41] LTTng filter Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` [ltt-dev] [RFC patch 33/41] LTTng dynamic tracing support with kprobes Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` [ltt-dev] [RFC patch 34/41] Marker header API update Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` [ltt-dev] [RFC patch 35/41] Marker " Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` [ltt-dev] [RFC patch 36/41] kvm markers " Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` [ltt-dev] [RFC patch 37/41] Markers : multi-probes test Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` [ltt-dev] [RFC patch 38/41] Markers examples API update Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` [ltt-dev] [RFC patch 39/41] SPUFS markers " Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` [ltt-dev] [RFC patch 40/41] EXT4: instrumentation with tracepoints Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` [ltt-dev] [RFC patch 41/41] JBD2: use tracepoints for instrumentation Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-05 22:48 ` Mathieu Desnoyers 2009-03-06 10:11 ` [ltt-dev] [RFC patch 00/41] LTTng 0.105 core for Linux 2.6.27-rc9 Ingo Molnar 2009-03-06 19:02 ` Mathieu Desnoyers 2009-03-11 18:32 ` Ingo Molnar 2009-03-13 16:18 ` Mathieu Desnoyers 2009-03-14 16:43 ` Ingo Molnar 2009-03-14 16:59 ` Mathieu Desnoyers 2009-03-06 18:34 ` Steven Rostedt 2009-03-06 19:01 ` Frederic Weisbecker
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox