<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pm24.git/include/linux/marker.h, branch v2.6.29-rc1</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>https://git.kobert.dev/pm24.git/atom?h=v2.6.29-rc1</id>
<link rel='self' href='https://git.kobert.dev/pm24.git/atom?h=v2.6.29-rc1'/>
<link rel='alternate' type='text/html' href='https://git.kobert.dev/pm24.git/'/>
<updated>2008-11-28T15:47:41Z</updated>
<entry>
<title>markers: comment marker_synchronize_unregister() on data dependency</title>
<updated>2008-11-28T15:47:41Z</updated>
<author>
<name>Wu Fengguang</name>
<email>fengguang.wu@intel.com</email>
</author>
<published>2008-11-27T08:14:44Z</published>
<link rel='alternate' type='text/html' href='https://git.kobert.dev/pm24.git/commit/?id=a838c2ec6ea1f18431da74dfe4978c57355b95f3'/>
<id>urn:sha1:a838c2ec6ea1f18431da74dfe4978c57355b95f3</id>
<content type='text'>
Add document and comments on marker_synchronize_unregister(): it
should be called before freeing resources that the probes depend on.

Based on comments from Lai Jiangshan and Mathieu Desnoyers.

Signed-off-by: Wu Fengguang &lt;wfg@linux.intel.com&gt;
Reviewed-by: Mathieu Desnoyers &lt;mathieu.desnoyers@polymtl.ca&gt;
Reviewed-by: Lai Jiangshan &lt;laijs@cn.fujitsu.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>markers: create DEFINE_MARKER and GET_MARKER (new API)</title>
<updated>2008-11-16T08:01:30Z</updated>
<author>
<name>Mathieu Desnoyers</name>
<email>mathieu.desnoyers@polymtl.ca</email>
</author>
<published>2008-11-14T22:47:40Z</published>
<link rel='alternate' type='text/html' href='https://git.kobert.dev/pm24.git/commit/?id=a0bca6a59ebc052751eed6e3b182c153495672d8'/>
<id>urn:sha1:a0bca6a59ebc052751eed6e3b182c153495672d8</id>
<content type='text'>
Impact: new API.

Allow markers to be used only for declaration, without function call
associated. Useful to create specialized probes.

The problem we had is that two function calls were required when one
wanted to put a marker in a tracepoint probe. Now the marker can be used
simply for trace data type declaration, leaving the trace write work
within the tracepoint probe without any additional function call.

Signed-off-by: Mathieu Desnoyers &lt;mathieu.desnoyers@polymtl.ca&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>markers: auto enable tracepoints (new API : trace_mark_tp())</title>
<updated>2008-11-16T08:01:29Z</updated>
<author>
<name>Mathieu Desnoyers</name>
<email>mathieu.desnoyers@polymtl.ca</email>
</author>
<published>2008-11-14T22:47:39Z</published>
<link rel='alternate' type='text/html' href='https://git.kobert.dev/pm24.git/commit/?id=c1df1bd2c4d4b20c83755a0f41956b57aec4842a'/>
<id>urn:sha1:c1df1bd2c4d4b20c83755a0f41956b57aec4842a</id>
<content type='text'>
Impact: new API

Add a new API trace_mark_tp(), which declares a marker within a
tracepoint probe. When the marker is activated, the tracepoint is
automatically enabled.

No branch test is used at the marker site, because it would be a
duplicate of the branch already present in the tracepoint.

Signed-off-by: Mathieu Desnoyers &lt;mathieu.desnoyers@polymtl.ca&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>markers: add missing stdargs.h include, needed due to va_list usage</title>
<updated>2008-11-16T08:01:27Z</updated>
<author>
<name>Arnaldo Carvalho de Melo</name>
<email>acme@redhat.com</email>
</author>
<published>2008-11-14T22:47:36Z</published>
<link rel='alternate' type='text/html' href='https://git.kobert.dev/pm24.git/commit/?id=e3f8c4b9117d70127a8cab480af83bbfd048a28b'/>
<id>urn:sha1:e3f8c4b9117d70127a8cab480af83bbfd048a28b</id>
<content type='text'>
Impact: build fix (for future changes)

That seemed to cause built issue when marker.h is included early, even
though stdargs.h is included in kernel.h.

Signed-off-by: Mathieu Desnoyers &lt;mathieu.desnoyers@polymtl.ca&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>markers: remove exported symbol marker_probe_cb_noarg()</title>
<updated>2008-10-27T12:02:23Z</updated>
<author>
<name>Lai Jiangshan</name>
<email>laijs@cn.fujitsu.com</email>
</author>
<published>2008-10-15T06:56:42Z</published>
<link rel='alternate' type='text/html' href='https://git.kobert.dev/pm24.git/commit/?id=505e371da195fad20cb8aaf45407a2849774d6d0'/>
<id>urn:sha1:505e371da195fad20cb8aaf45407a2849774d6d0</id>
<content type='text'>
marker_probe_cb_noarg() should not be seen by outer code.
this patch remove it.

Signed-off-by: Lai Jiangshan &lt;laijs@cn.fujitsu.com&gt;
Acked-by: Mathieu Desnoyers &lt;mathieu.desnoyers@polymtl.ca&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>markers: fix synchronize marker unregister static inline</title>
<updated>2008-10-14T08:39:28Z</updated>
<author>
<name>Mathieu Desnoyers</name>
<email>mathieu.desnoyers@polymtl.ca</email>
</author>
<published>2008-10-10T07:48:25Z</published>
<link rel='alternate' type='text/html' href='https://git.kobert.dev/pm24.git/commit/?id=bfadadfccc19e36f7d600c5ce7b3e5ba5197fbf0'/>
<id>urn:sha1:bfadadfccc19e36f7d600c5ce7b3e5ba5197fbf0</id>
<content type='text'>
Use a #define for synchronize marker unregister to fix include dependencies.

Fixes the slab circular inclusion which triggers when slab.git is combined
with tracing.git, where rcupdate includes slab, which includes markers
which includes rcupdate.

Signed-off-by: Mathieu Desnoyers &lt;mathieu.desnoyers@polymtl.ca&gt;
Acked-by: Pekka Enberg &lt;penberg@cs.helsinki.fi&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>markers: turn marker_synchronize_unregister() into an inline</title>
<updated>2008-10-14T08:38:40Z</updated>
<author>
<name>Mathieu Desnoyers</name>
<email>mathieu.desnoyers@polymtl.ca</email>
</author>
<published>2008-10-03T15:52:54Z</published>
<link rel='alternate' type='text/html' href='https://git.kobert.dev/pm24.git/commit/?id=53c8c8fdfd2d2d515bdcb3d0f2a11d1f3f42ece1'/>
<id>urn:sha1:53c8c8fdfd2d2d515bdcb3d0f2a11d1f3f42ece1</id>
<content type='text'>
Turn marker synchronize unregister into a static inline. There is no
reason to keep it as a macro over a static inline.

Signed-off-by: Mathieu Desnoyers &lt;mathieu.desnoyers@polymtl.ca&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>markers: marker_synchronize_unregister()</title>
<updated>2008-10-14T08:38:26Z</updated>
<author>
<name>Mathieu Desnoyers</name>
<email>mathieu.desnoyers@polymtl.ca</email>
</author>
<published>2008-09-29T15:05:13Z</published>
<link rel='alternate' type='text/html' href='https://git.kobert.dev/pm24.git/commit/?id=e98d0eabef2748d88fa58760d104e8e68517406b'/>
<id>urn:sha1:e98d0eabef2748d88fa58760d104e8e68517406b</id>
<content type='text'>
Create marker_synchronize_unregister() which must be called before the end of
exit() to make sure every probe callers have exited the non preemptible section
and thus are not executing the probe code anymore.

Signed-off-by: Mathieu Desnoyers &lt;mathieu.desnoyers@polymtl.ca&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>Markers - define non optimized marker</title>
<updated>2008-05-23T20:26:03Z</updated>
<author>
<name>Mathieu Desnoyers</name>
<email>mathieu.desnoyers@polymtl.ca</email>
</author>
<published>2008-05-12T19:21:10Z</published>
<link rel='alternate' type='text/html' href='https://git.kobert.dev/pm24.git/commit/?id=0aa977f592f17004f9d1d545f2e1bb9ea71896c3'/>
<id>urn:sha1:0aa977f592f17004f9d1d545f2e1bb9ea71896c3</id>
<content type='text'>
To support the forthcoming "immediate values" marker optimization, we must have
a way to declare markers in few code paths that does not use instruction
modification based enable. This will be the case of printk(), some traps and
eventually lockdep instrumentation.

Changelog :
- Fix reversed boolean logic of "generic".

Signed-off-by: Mathieu Desnoyers &lt;mathieu.desnoyers@polymtl.ca&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
<entry>
<title>Markers - remove extra format argument</title>
<updated>2008-05-23T20:25:27Z</updated>
<author>
<name>Mathieu Desnoyers</name>
<email>mathieu.desnoyers@polymtl.ca</email>
</author>
<published>2008-05-12T19:21:09Z</published>
<link rel='alternate' type='text/html' href='https://git.kobert.dev/pm24.git/commit/?id=dc102a8fae2d0d6bf5223fc549247f2e23959ae6'/>
<id>urn:sha1:dc102a8fae2d0d6bf5223fc549247f2e23959ae6</id>
<content type='text'>
Denys Vlasenko &lt;vda.linux@googlemail.com&gt; :

&gt; Not in this patch, but I noticed:
&gt;
&gt; #define __trace_mark(name, call_private, format, args...)               \
&gt;         do {                                                            \
&gt;                 static const char __mstrtab_##name[]                    \
&gt;                 __attribute__((section("__markers_strings")))           \
&gt;                 = #name "\0" format;                                    \
&gt;                 static struct marker __mark_##name                      \
&gt;                 __attribute__((section("__markers"), aligned(8))) =     \
&gt;                 { __mstrtab_##name, &amp;__mstrtab_##name[sizeof(#name)],   \
&gt;                 0, 0, marker_probe_cb,                                  \
&gt;                 { __mark_empty_function, NULL}, NULL };                 \
&gt;                 __mark_check_format(format, ## args);                   \
&gt;                 if (unlikely(__mark_##name.state)) {                    \
&gt;                         (*__mark_##name.call)                           \
&gt;                                 (&amp;__mark_##name, call_private,          \
&gt;                                 format, ## args);                       \
&gt;                 }                                                       \
&gt;         } while (0)
&gt;
&gt; In this call:
&gt;
&gt;                         (*__mark_##name.call)                           \
&gt;                                 (&amp;__mark_##name, call_private,          \
&gt;                                 format, ## args);                       \
&gt;
&gt; you make gcc allocate duplicate format string. You can use
&gt; &amp;__mstrtab_##name[sizeof(#name)] instead since it holds the same string,
&gt; or drop ", format," above and "const char *fmt" from here:
&gt;
&gt;         void (*call)(const struct marker *mdata,        /* Probe wrapper */
&gt;                 void *call_private, const char *fmt, ...);
&gt;
&gt; since mdata-&gt;format is the same and all callees which need it can take it there.

Very good point. I actually thought about dropping it, since it would
remove an unnecessary argument from the stack. And actually, since I now
have the marker_probe_cb sitting between the marker site and the
callbacks, there is no API change required. Thanks :)

Mathieu

Signed-off-by: Mathieu Desnoyers &lt;mathieu.desnoyers@polymtl.ca&gt;
CC: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
</feed>
