* [ltt-dev] [UST PATCH 1/3] Change code for consistency
@ 2010-09-17 19:41 David Goulet
2010-09-17 19:41 ` [ltt-dev] [UST PATCH 2/3] Syntax cleanup David Goulet
` (3 more replies)
0 siblings, 4 replies; 12+ messages in thread
From: David Goulet @ 2010-09-17 19:41 UTC (permalink / raw)
Use the kcompat stringify header for double level
stringification for markers section.
Also use the GET_MARKER macro for uniformity across the code.
Signed-off-by: David Goulet <david.goulet at polymtl.ca>
---
include/ust/marker.h | 33 +++++++++++++++------------------
1 files changed, 15 insertions(+), 18 deletions(-)
diff --git a/include/ust/marker.h b/include/ust/marker.h
index 2751f58..287f20f 100644
--- a/include/ust/marker.h
+++ b/include/ust/marker.h
@@ -30,15 +30,12 @@
#include <urcu/list.h>
#include <ust/processor.h>
#include <ust/kcompat/kcompat.h>
+#include <ust/kcompat/stringify.h>
#include <bits/wordsize.h>
struct marker;
-/* To stringify the expansion of a define */
-#define XSTR(d) STR(d)
-#define STR(s) #s
-
/**
* marker_probe_func - Type of a marker probe function
* @mdata: marker data
@@ -83,6 +80,8 @@ struct marker {
#define CONFIG_MARKERS
#ifdef CONFIG_MARKERS
+#define GET_MARKER(channel, name) (__mark_##channel##_##name)
+
#define _DEFINE_MARKER(channel, name, tp_name_str, tp_cb, format, unique, m) \
struct registers regs; \
\
@@ -96,14 +95,14 @@ struct marker {
* will try to create the same symbols, resulting in a conflict. This \
* is not unusual as it can be the result of function inlining. \
*/ \
- ".ifndef __mstrtab_" XSTR(channel) "_" XSTR(name) "_channel_" XSTR(unique) "\n\t" \
+ ".ifndef __mstrtab_" __stringify(channel) "_" __stringify(name) "_channel_" __stringify(unique) "\n\t" \
/*".section __markers_strings\n\t"*/ \
".section __markers_strings,\"aw\", at progbits\n\t" \
- "__mstrtab_" XSTR(channel) "_" XSTR(name) "_channel_" XSTR(unique) ":\n\t" \
- ".string \"" XSTR(channel) "\"\n\t" \
- "__mstrtab_" XSTR(channel) "_" XSTR(name) "_name_" XSTR(unique) ":\n\t" \
- ".string \"" XSTR(name) "\"\n\t" \
- "__mstrtab_" XSTR(channel) "_" XSTR(name) "_format_" XSTR(unique) ":\n\t" \
+ "__mstrtab_" __stringify(channel) "_" __stringify(name) "_channel_" __stringify(unique) ":\n\t" \
+ ".string \"" __stringify(channel) "\"\n\t" \
+ "__mstrtab_" __stringify(channel) "_" __stringify(name) "_name_" __stringify(unique) ":\n\t" \
+ ".string \"" __stringify(name) "\"\n\t" \
+ "__mstrtab_" __stringify(channel) "_" __stringify(name) "_format_" __stringify(unique) ":\n\t" \
".string " "\"" format "\"" "\n\t" \
".previous\n\t" \
".endif\n\t" \
@@ -113,14 +112,14 @@ struct marker {
".section __markers,\"aw\", at progbits\n\t" \
".balign 8\n\t" \
"2:\n\t" \
- _ASM_PTR "(__mstrtab_" XSTR(channel) "_" XSTR(name) "_channel_" XSTR(unique) ")\n\t" /* channel string */ \
- _ASM_PTR "(__mstrtab_" XSTR(channel) "_" XSTR(name) "_name_" XSTR(unique) ")\n\t" /* name string */ \
- _ASM_PTR "(__mstrtab_" XSTR(channel) "_" XSTR(name) "_format_" XSTR(unique) ")\n\t" /* format string */ \
+ _ASM_PTR "(__mstrtab_" __stringify(channel) "_" __stringify(name) "_channel_" __stringify(unique) ")\n\t" /* channel string */ \
+ _ASM_PTR "(__mstrtab_" __stringify(channel) "_" __stringify(name) "_name_" __stringify(unique) ")\n\t" /* name string */ \
+ _ASM_PTR "(__mstrtab_" __stringify(channel) "_" __stringify(name) "_format_" __stringify(unique) ")\n\t" /* format string */ \
".byte 0\n\t" /* state imv */ \
".byte 0\n\t" /* ptype */ \
".word 0\n\t" /* channel_id */ \
".word 0\n\t" /* event_id */ \
- ".balign " XSTR(__WORDSIZE) " / 8\n\t" /* alignment */ \
+ ".balign " __stringify(__WORDSIZE) " / 8\n\t" /* alignment */ \
_ASM_PTR "(marker_probe_cb)\n\t" /* call */ \
_ASM_PTR "(__mark_empty_function)\n\t" /* marker_probe_closure single.field1 */ \
_ASM_PTR "0\n\t" /* marker_probe_closure single.field2 */ \
@@ -146,7 +145,7 @@ struct marker {
static const char __mstrtab_##channel##_##name[] \
__attribute__((section("__markers_strings"))) \
= #channel "\0" #name "\0" format; \
- static struct marker __mark_##channel##_##name \
+ static struct marker GET_MARKER(channel, name) \
__attribute__((section("__markers"), aligned(8))) = \
{ __mstrtab_##channel##_##name, \
&__mstrtab_##channel##_##name[sizeof(#channel)], \
@@ -195,15 +194,13 @@ struct marker {
} \
DEFINE_MARKER_TP(channel, name, tp_name, tp_cb, format);\
__mark_check_format(format, ## args); \
- (*__mark_##channel##_##name.call)(&__mark_##channel##_##name, \
+ (*GET_MARKER(channel, name).call)(&GET_MARKER(channel, name), \
call_private, ®s, ## args); \
} while (0)
extern void marker_update_probe_range(struct marker *begin,
struct marker *end);
-#define GET_MARKER(channel, name) (__mark_##channel##_##name)
-
#else /* !CONFIG_MARKERS */
#define DEFINE_MARKER(channel, name, tp_name, tp_cb, format, m)
#define __trace_mark(generic, channel, name, call_private, format, args...) \
--
1.7.2.3
^ permalink raw reply [flat|nested] 12+ messages in thread
* [ltt-dev] [UST PATCH 2/3] Syntax cleanup
2010-09-17 19:41 [ltt-dev] [UST PATCH 1/3] Change code for consistency David Goulet
@ 2010-09-17 19:41 ` David Goulet
2010-09-21 12:14 ` Nils Carlson
2010-09-17 19:41 ` [ltt-dev] [UST PATCH 3/3] Remove unused code David Goulet
` (2 subsequent siblings)
3 siblings, 1 reply; 12+ messages in thread
From: David Goulet @ 2010-09-17 19:41 UTC (permalink / raw)
Replace spaces by tabs and remove trailing white spaces
Signed-off-by: David Goulet <david.goulet at polymtl.ca>
---
include/ust/marker.h | 91 ++++++++++++++++++++++++-------------------------
1 files changed, 45 insertions(+), 46 deletions(-)
diff --git a/include/ust/marker.h b/include/ust/marker.h
index 287f20f..7670648 100644
--- a/include/ust/marker.h
+++ b/include/ust/marker.h
@@ -64,7 +64,7 @@ struct marker {
const char *format; /* Marker format string, describing the
* variable argument list.
*/
- DEFINE_IMV(char, state);/* Immediate value state. */
+ DEFINE_IMV(char, state);/* Immediate value state. */
char ptype; /* probe type : 0 : single, 1 : multi */
/* Probe wrapper */
u16 channel_id; /* Numeric channel identifier, dynamic */
@@ -89,47 +89,47 @@ struct marker {
* because it must not require %-sign escaping, as we most certainly \
* have some %-signs in the format string. \
*/ \
- asm volatile ( \
- /* We only define these symbols if they have not yet been defined. Indeed, \
- * if two markers with the same channel/name are on the same line, they \
- * will try to create the same symbols, resulting in a conflict. This \
- * is not unusual as it can be the result of function inlining. \
- */ \
- ".ifndef __mstrtab_" __stringify(channel) "_" __stringify(name) "_channel_" __stringify(unique) "\n\t" \
- /*".section __markers_strings\n\t"*/ \
- ".section __markers_strings,\"aw\", at progbits\n\t" \
- "__mstrtab_" __stringify(channel) "_" __stringify(name) "_channel_" __stringify(unique) ":\n\t" \
- ".string \"" __stringify(channel) "\"\n\t" \
- "__mstrtab_" __stringify(channel) "_" __stringify(name) "_name_" __stringify(unique) ":\n\t" \
- ".string \"" __stringify(name) "\"\n\t" \
- "__mstrtab_" __stringify(channel) "_" __stringify(name) "_format_" __stringify(unique) ":\n\t" \
- ".string " "\"" format "\"" "\n\t" \
- ".previous\n\t" \
- ".endif\n\t" \
+ asm volatile ( \
+ /* We only define these symbols if they have not yet been defined. Indeed, \
+ * if two markers with the same channel/name are on the same line, they \
+ * will try to create the same symbols, resulting in a conflict. This \
+ * is not unusual as it can be the result of function inlining. \
+ */ \
+ ".ifndef __mstrtab_" __stringify(channel) "_" __stringify(name) "_channel_" __stringify(unique) "\n\t" \
+ /*".section __markers_strings\n\t"*/ \
+ ".section __markers_strings,\"aw\", at progbits\n\t" \
+ "__mstrtab_" __stringify(channel) "_" __stringify(name) "_channel_" __stringify(unique) ":\n\t" \
+ ".string \"" __stringify(channel) "\"\n\t" \
+ "__mstrtab_" __stringify(channel) "_" __stringify(name) "_name_" __stringify(unique) ":\n\t" \
+ ".string \"" __stringify(name) "\"\n\t" \
+ "__mstrtab_" __stringify(channel) "_" __stringify(name) "_format_" __stringify(unique) ":\n\t" \
+ ".string " "\"" format "\"" "\n\t" \
+ ".previous\n\t" \
+ ".endif\n\t" \
); \
asm volatile ( \
- /*".section __markers\n\t"*/ \
- ".section __markers,\"aw\", at progbits\n\t" \
- ".balign 8\n\t" \
- "2:\n\t" \
- _ASM_PTR "(__mstrtab_" __stringify(channel) "_" __stringify(name) "_channel_" __stringify(unique) ")\n\t" /* channel string */ \
- _ASM_PTR "(__mstrtab_" __stringify(channel) "_" __stringify(name) "_name_" __stringify(unique) ")\n\t" /* name string */ \
- _ASM_PTR "(__mstrtab_" __stringify(channel) "_" __stringify(name) "_format_" __stringify(unique) ")\n\t" /* format string */ \
- ".byte 0\n\t" /* state imv */ \
- ".byte 0\n\t" /* ptype */ \
- ".word 0\n\t" /* channel_id */ \
- ".word 0\n\t" /* event_id */ \
- ".balign " __stringify(__WORDSIZE) " / 8\n\t" /* alignment */ \
- _ASM_PTR "(marker_probe_cb)\n\t" /* call */ \
- _ASM_PTR "(__mark_empty_function)\n\t" /* marker_probe_closure single.field1 */ \
- _ASM_PTR "0\n\t" /* marker_probe_closure single.field2 */ \
- _ASM_PTR "0\n\t" /* marker_probe_closure *multi */ \
- _ASM_PTR "0\n\t" /* tp_name */ \
- _ASM_PTR "0\n\t" /* tp_cb */ \
- _ASM_PTR "(1f)\n\t" /* location */ \
- ".previous\n\t" \
- "1:\n\t" \
- ARCH_COPY_ADDR("%[outptr]") \
+ /*".section __markers\n\t"*/ \
+ ".section __markers,\"aw\", at progbits\n\t" \
+ ".balign 8\n\t" \
+ "2:\n\t" \
+ _ASM_PTR "(__mstrtab_" __stringify(channel) "_" __stringify(name) "_channel_" __stringify(unique) ")\n\t" /* channel string */ \
+ _ASM_PTR "(__mstrtab_" __stringify(channel) "_" __stringify(name) "_name_" __stringify(unique) ")\n\t" /* name string */ \
+ _ASM_PTR "(__mstrtab_" __stringify(channel) "_" __stringify(name) "_format_" __stringify(unique) ")\n\t" /* format string */ \
+ ".byte 0\n\t" /* state imv */ \
+ ".byte 0\n\t" /* ptype */ \
+ ".word 0\n\t" /* channel_id */ \
+ ".word 0\n\t" /* event_id */ \
+ ".balign " __stringify(__WORDSIZE) " / 8\n\t" /* alignment */ \
+ _ASM_PTR "(marker_probe_cb)\n\t" /* call */ \
+ _ASM_PTR "(__mark_empty_function)\n\t" /* marker_probe_closure single.field1 */ \
+ _ASM_PTR "0\n\t" /* marker_probe_closure single.field2 */ \
+ _ASM_PTR "0\n\t" /* marker_probe_closure *multi */ \
+ _ASM_PTR "0\n\t" /* tp_name */ \
+ _ASM_PTR "0\n\t" /* tp_cb */ \
+ _ASM_PTR "(1f)\n\t" /* location */ \
+ ".previous\n\t" \
+ "1:\n\t" \
+ ARCH_COPY_ADDR("%[outptr]") \
: [outptr] "=r" (m) ); \
\
save_registers(®s)
@@ -148,12 +148,11 @@ struct marker {
static struct marker GET_MARKER(channel, name) \
__attribute__((section("__markers"), aligned(8))) = \
{ __mstrtab_##channel##_##name, \
- &__mstrtab_##channel##_##name[sizeof(#channel)], \
- &__mstrtab_##channel##_##name[sizeof(#channel) + \
- sizeof(#name)], \
- 0, 0, 0, 0, marker_probe_cb, \
- { __mark_empty_function, NULL}, \
- NULL, tp_name_str, tp_cb }
+ &__mstrtab_##channel##_##name[sizeof(#channel)], \
+ &__mstrtab_##channel##_##name[sizeof(#channel) + sizeof(#name)], \
+ 0, 0, 0, 0, marker_probe_cb, \
+ { __mark_empty_function, NULL}, \
+ NULL, tp_name_str, tp_cb }
/*
* Make sure the alignment of the structure in the __markers section will
--
1.7.2.3
^ permalink raw reply [flat|nested] 12+ messages in thread
* [ltt-dev] [UST PATCH 3/3] Remove unused code
2010-09-17 19:41 [ltt-dev] [UST PATCH 1/3] Change code for consistency David Goulet
2010-09-17 19:41 ` [ltt-dev] [UST PATCH 2/3] Syntax cleanup David Goulet
@ 2010-09-17 19:41 ` David Goulet
2010-09-21 12:14 ` Nils Carlson
2010-09-26 5:13 ` Pierre-Marc Fournier
2010-09-17 20:18 ` [ltt-dev] [UST PATCH 1/3] Change code for consistency Nils Carlson
2010-09-21 12:13 ` Nils Carlson
3 siblings, 2 replies; 12+ messages in thread
From: David Goulet @ 2010-09-17 19:41 UTC (permalink / raw)
Signed-off-by: David Goulet <david.goulet at polymtl.ca>
---
include/ust/marker.h | 22 ----------------------
1 files changed, 0 insertions(+), 22 deletions(-)
diff --git a/include/ust/marker.h b/include/ust/marker.h
index 7670648..6103629 100644
--- a/include/ust/marker.h
+++ b/include/ust/marker.h
@@ -77,9 +77,6 @@ struct marker {
void *location; /* Address of marker in code */
} __attribute__((aligned(8)));
-#define CONFIG_MARKERS
-#ifdef CONFIG_MARKERS
-
#define GET_MARKER(channel, name) (__mark_##channel##_##name)
#define _DEFINE_MARKER(channel, name, tp_name_str, tp_cb, format, unique, m) \
@@ -200,25 +197,6 @@ struct marker {
extern void marker_update_probe_range(struct marker *begin,
struct marker *end);
-#else /* !CONFIG_MARKERS */
-#define DEFINE_MARKER(channel, name, tp_name, tp_cb, format, m)
-#define __trace_mark(generic, channel, name, call_private, format, args...) \
- __mark_check_format(format, ## args)
-#define __trace_mark_tp(channel, name, call_private, tp_name, tp_cb, \
- format, args...) \
- do { \
- void __check_tp_type(void) \
- { \
- register_trace_##tp_name(tp_cb, call_private); \
- } \
- __mark_check_format(format, ## args); \
- } while (0)
-static inline void marker_update_probe_range(struct marker *begin,
- struct marker *end)
-{ }
-#define GET_MARKER(channel, name)
-#endif /* CONFIG_MARKERS */
-
/**
* trace_mark - Marker using code patching
* @channel: marker channel (where to send the data), not quoted.
--
1.7.2.3
^ permalink raw reply [flat|nested] 12+ messages in thread
* [ltt-dev] [UST PATCH 1/3] Change code for consistency
2010-09-17 19:41 [ltt-dev] [UST PATCH 1/3] Change code for consistency David Goulet
2010-09-17 19:41 ` [ltt-dev] [UST PATCH 2/3] Syntax cleanup David Goulet
2010-09-17 19:41 ` [ltt-dev] [UST PATCH 3/3] Remove unused code David Goulet
@ 2010-09-17 20:18 ` Nils Carlson
2010-09-17 21:04 ` David Goulet
2010-09-21 12:13 ` Nils Carlson
3 siblings, 1 reply; 12+ messages in thread
From: Nils Carlson @ 2010-09-17 20:18 UTC (permalink / raw)
Looks good!
Have you tried piping the old and new one through CPP with a file
containing just one marker and running diff aftwerwards? This is sort
of a good "test" when playing with the macros to make sure you've got
it all right. Also very educational as you get to see what everything
expands into in the end.
/Nils
On Sep 17, 2010, at 9:41 PM, David Goulet wrote:
> Use the kcompat stringify header for double level
> stringification for markers section.
>
> Also use the GET_MARKER macro for uniformity across the code.
>
> Signed-off-by: David Goulet <david.goulet at polymtl.ca>
> ---
> include/ust/marker.h | 33 +++++++++++++++------------------
> 1 files changed, 15 insertions(+), 18 deletions(-)
>
> diff --git a/include/ust/marker.h b/include/ust/marker.h
> index 2751f58..287f20f 100644
> --- a/include/ust/marker.h
> +++ b/include/ust/marker.h
> @@ -30,15 +30,12 @@
> #include <urcu/list.h>
> #include <ust/processor.h>
> #include <ust/kcompat/kcompat.h>
> +#include <ust/kcompat/stringify.h>
>
> #include <bits/wordsize.h>
>
> struct marker;
>
> -/* To stringify the expansion of a define */
> -#define XSTR(d) STR(d)
> -#define STR(s) #s
> -
> /**
> * marker_probe_func - Type of a marker probe function
> * @mdata: marker data
> @@ -83,6 +80,8 @@ struct marker {
> #define CONFIG_MARKERS
> #ifdef CONFIG_MARKERS
>
> +#define GET_MARKER(channel, name) (__mark_##channel##_##name)
> +
> #define _DEFINE_MARKER(channel, name, tp_name_str, tp_cb, format,
> unique, m) \
> struct registers regs; \
> \
> @@ -96,14 +95,14 @@ struct marker {
> * will try to create the same symbols, resulting in a
> conflict. This \
> * is not unusual as it can be the result of function
> inlining. \
> */ \
> - ".ifndef __mstrtab_" XSTR(channel) "_" XSTR(name)
> "_channel_" XSTR(unique) "\n\t" \
> + ".ifndef __mstrtab_" __stringify(channel) "_"
> __stringify(name) "_channel_" __stringify(unique) "\n\t" \
> /*".section __markers_strings\n\t"*/ \
> ".section __markers_strings,\"aw\", at progbits\n\t" \
> - "__mstrtab_" XSTR(channel) "_" XSTR(name) "_channel_"
> XSTR(unique) ":\n\t" \
> - ".string \"" XSTR(channel) "\"\n\t" \
> - "__mstrtab_" XSTR(channel) "_" XSTR(name) "_name_"
> XSTR(unique) ":\n\t" \
> - ".string \"" XSTR(name) "\"\n\t" \
> - "__mstrtab_" XSTR(channel) "_" XSTR(name) "_format_"
> XSTR(unique) ":\n\t" \
> + "__mstrtab_" __stringify(channel) "_" __stringify(name)
> "_channel_" __stringify(unique) ":\n\t" \
> + ".string \"" __stringify(channel) "\"\n\t" \
> + "__mstrtab_" __stringify(channel) "_" __stringify(name)
> "_name_" __stringify(unique) ":\n\t" \
> + ".string \"" __stringify(name) "\"\n\t" \
> + "__mstrtab_" __stringify(channel) "_" __stringify(name)
> "_format_" __stringify(unique) ":\n\t" \
> ".string " "\"" format "\"" "\n\t" \
> ".previous\n\t" \
> ".endif\n\t" \
> @@ -113,14 +112,14 @@ struct marker {
> ".section __markers,\"aw\", at progbits\n\t" \
> ".balign 8\n\t" \
> "2:\n\t" \
> - _ASM_PTR "(__mstrtab_" XSTR(channel) "_" XSTR(name)
> "_channel_" XSTR(unique) ")\n\t" /* channel string */ \
> - _ASM_PTR "(__mstrtab_" XSTR(channel) "_" XSTR(name) "_name_"
> XSTR(unique) ")\n\t" /* name string */ \
> - _ASM_PTR "(__mstrtab_" XSTR(channel) "_" XSTR(name)
> "_format_" XSTR(unique) ")\n\t" /* format string */ \
> + _ASM_PTR "(__mstrtab_" __stringify(channel) "_"
> __stringify(name) "_channel_" __stringify(unique) ")\n\t" /* channel
> string */ \
> + _ASM_PTR "(__mstrtab_" __stringify(channel) "_"
> __stringify(name) "_name_" __stringify(unique) ")\n\t" /* name
> string */ \
> + _ASM_PTR "(__mstrtab_" __stringify(channel) "_"
> __stringify(name) "_format_" __stringify(unique) ")\n\t" /* format
> string */ \
> ".byte 0\n\t" /* state imv */ \
> ".byte 0\n\t" /* ptype */ \
> ".word 0\n\t" /* channel_id */ \
> ".word 0\n\t" /* event_id */ \
> - ".balign " XSTR(__WORDSIZE) " / 8\n\t" /* alignment */ \
> + ".balign " __stringify(__WORDSIZE) " / 8\n\t" /* alignment
> */ \
> _ASM_PTR "(marker_probe_cb)\n\t" /* call */ \
> _ASM_PTR "(__mark_empty_function)\n\t" /*
> marker_probe_closure single.field1 */ \
> _ASM_PTR "0\n\t" /* marker_probe_closure single.field2 */ \
> @@ -146,7 +145,7 @@ struct marker {
> static const char __mstrtab_##channel##_##name[] \
> __attribute__((section("__markers_strings"))) \
> = #channel "\0" #name "\0" format; \
> - static struct marker __mark_##channel##_##name \
> + static struct marker GET_MARKER(channel, name) \
> __attribute__((section("__markers"), aligned(8))) = \
> { __mstrtab_##channel##_##name, \
> &__mstrtab_##channel##_##name[sizeof(#channel)], \
> @@ -195,15 +194,13 @@ struct marker {
> } \
> DEFINE_MARKER_TP(channel, name, tp_name, tp_cb, format);\
> __mark_check_format(format, ## args); \
> - (*__mark_##channel##_##name.call)(&__mark_##channel##_##name, \
> + (*GET_MARKER(channel, name).call)(&GET_MARKER(channel, name), \
> call_private, ®s, ## args); \
> } while (0)
>
> extern void marker_update_probe_range(struct marker *begin,
> struct marker *end);
>
> -#define GET_MARKER(channel, name) (__mark_##channel##_##name)
> -
> #else /* !CONFIG_MARKERS */
> #define DEFINE_MARKER(channel, name, tp_name, tp_cb, format, m)
> #define __trace_mark(generic, channel, name, call_private, format,
> args...) \
> --
> 1.7.2.3
>
>
> _______________________________________________
> ltt-dev mailing list
> ltt-dev at lists.casi.polymtl.ca
> http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
^ permalink raw reply [flat|nested] 12+ messages in thread
* [ltt-dev] [UST PATCH 1/3] Change code for consistency
2010-09-17 20:18 ` [ltt-dev] [UST PATCH 1/3] Change code for consistency Nils Carlson
@ 2010-09-17 21:04 ` David Goulet
2010-09-17 21:07 ` Mathieu Desnoyers
0 siblings, 1 reply; 12+ messages in thread
From: David Goulet @ 2010-09-17 21:04 UTC (permalink / raw)
Frankly, I don't know what is CPP. I'll be happy if you can show me what it is.
However, every patch that I submit, I tested them with the tests/runtests and my
benchmark test.
Thanks
David
Selon Nils Carlson <nils.carlson at ludd.ltu.se>:
> Looks good!
>
> Have you tried piping the old and new one through CPP with a file
> containing just one marker and running diff aftwerwards? This is sort
> of a good "test" when playing with the macros to make sure you've got
> it all right. Also very educational as you get to see what everything
> expands into in the end.
>
> /Nils
> On Sep 17, 2010, at 9:41 PM, David Goulet wrote:
>
> > Use the kcompat stringify header for double level
> > stringification for markers section.
> >
> > Also use the GET_MARKER macro for uniformity across the code.
> >
> > Signed-off-by: David Goulet <david.goulet at polymtl.ca>
> > ---
> > include/ust/marker.h | 33 +++++++++++++++------------------
> > 1 files changed, 15 insertions(+), 18 deletions(-)
> >
> > diff --git a/include/ust/marker.h b/include/ust/marker.h
> > index 2751f58..287f20f 100644
> > --- a/include/ust/marker.h
> > +++ b/include/ust/marker.h
> > @@ -30,15 +30,12 @@
> > #include <urcu/list.h>
> > #include <ust/processor.h>
> > #include <ust/kcompat/kcompat.h>
> > +#include <ust/kcompat/stringify.h>
> >
> > #include <bits/wordsize.h>
> >
> > struct marker;
> >
> > -/* To stringify the expansion of a define */
> > -#define XSTR(d) STR(d)
> > -#define STR(s) #s
> > -
> > /**
> > * marker_probe_func - Type of a marker probe function
> > * @mdata: marker data
> > @@ -83,6 +80,8 @@ struct marker {
> > #define CONFIG_MARKERS
> > #ifdef CONFIG_MARKERS
> >
> > +#define GET_MARKER(channel, name) (__mark_##channel##_##name)
> > +
> > #define _DEFINE_MARKER(channel, name, tp_name_str, tp_cb, format,
> > unique, m) \
> > struct registers regs; \
> > \
> > @@ -96,14 +95,14 @@ struct marker {
> > * will try to create the same symbols, resulting in a
> > conflict. This \
> > * is not unusual as it can be the result of function
> > inlining. \
> > */ \
> > - ".ifndef __mstrtab_" XSTR(channel) "_" XSTR(name)
> > "_channel_" XSTR(unique) "\n\t" \
> > + ".ifndef __mstrtab_" __stringify(channel) "_"
> > __stringify(name) "_channel_" __stringify(unique) "\n\t" \
> > /*".section __markers_strings\n\t"*/ \
> > ".section __markers_strings,\"aw\", at progbits\n\t" \
> > - "__mstrtab_" XSTR(channel) "_" XSTR(name) "_channel_"
> > XSTR(unique) ":\n\t" \
> > - ".string \"" XSTR(channel) "\"\n\t" \
> > - "__mstrtab_" XSTR(channel) "_" XSTR(name) "_name_"
> > XSTR(unique) ":\n\t" \
> > - ".string \"" XSTR(name) "\"\n\t" \
> > - "__mstrtab_" XSTR(channel) "_" XSTR(name) "_format_"
> > XSTR(unique) ":\n\t" \
> > + "__mstrtab_" __stringify(channel) "_" __stringify(name)
> > "_channel_" __stringify(unique) ":\n\t" \
> > + ".string \"" __stringify(channel) "\"\n\t" \
> > + "__mstrtab_" __stringify(channel) "_" __stringify(name)
> > "_name_" __stringify(unique) ":\n\t" \
> > + ".string \"" __stringify(name) "\"\n\t" \
> > + "__mstrtab_" __stringify(channel) "_" __stringify(name)
> > "_format_" __stringify(unique) ":\n\t" \
> > ".string " "\"" format "\"" "\n\t" \
> > ".previous\n\t" \
> > ".endif\n\t" \
> > @@ -113,14 +112,14 @@ struct marker {
> > ".section __markers,\"aw\", at progbits\n\t" \
> > ".balign 8\n\t" \
> > "2:\n\t" \
> > - _ASM_PTR "(__mstrtab_" XSTR(channel) "_" XSTR(name)
> > "_channel_" XSTR(unique) ")\n\t" /* channel string */ \
> > - _ASM_PTR "(__mstrtab_" XSTR(channel) "_" XSTR(name) "_name_"
> > XSTR(unique) ")\n\t" /* name string */ \
> > - _ASM_PTR "(__mstrtab_" XSTR(channel) "_" XSTR(name)
> > "_format_" XSTR(unique) ")\n\t" /* format string */ \
> > + _ASM_PTR "(__mstrtab_" __stringify(channel) "_"
> > __stringify(name) "_channel_" __stringify(unique) ")\n\t" /* channel
> > string */ \
> > + _ASM_PTR "(__mstrtab_" __stringify(channel) "_"
> > __stringify(name) "_name_" __stringify(unique) ")\n\t" /* name
> > string */ \
> > + _ASM_PTR "(__mstrtab_" __stringify(channel) "_"
> > __stringify(name) "_format_" __stringify(unique) ")\n\t" /* format
> > string */ \
> > ".byte 0\n\t" /* state imv */ \
> > ".byte 0\n\t" /* ptype */ \
> > ".word 0\n\t" /* channel_id */ \
> > ".word 0\n\t" /* event_id */ \
> > - ".balign " XSTR(__WORDSIZE) " / 8\n\t" /* alignment */ \
> > + ".balign " __stringify(__WORDSIZE) " / 8\n\t" /* alignment
> > */ \
> > _ASM_PTR "(marker_probe_cb)\n\t" /* call */ \
> > _ASM_PTR "(__mark_empty_function)\n\t" /*
> > marker_probe_closure single.field1 */ \
> > _ASM_PTR "0\n\t" /* marker_probe_closure single.field2 */ \
> > @@ -146,7 +145,7 @@ struct marker {
> > static const char __mstrtab_##channel##_##name[] \
> > __attribute__((section("__markers_strings"))) \
> > = #channel "\0" #name "\0" format; \
> > - static struct marker __mark_##channel##_##name \
> > + static struct marker GET_MARKER(channel, name) \
> > __attribute__((section("__markers"), aligned(8))) = \
> > { __mstrtab_##channel##_##name, \
> > &__mstrtab_##channel##_##name[sizeof(#channel)], \
> > @@ -195,15 +194,13 @@ struct marker {
> > } \
> > DEFINE_MARKER_TP(channel, name, tp_name, tp_cb, format);\
> > __mark_check_format(format, ## args); \
> > - (*__mark_##channel##_##name.call)(&__mark_##channel##_##name, \
> > + (*GET_MARKER(channel, name).call)(&GET_MARKER(channel, name), \
> > call_private, ®s, ## args); \
> > } while (0)
> >
> > extern void marker_update_probe_range(struct marker *begin,
> > struct marker *end);
> >
> > -#define GET_MARKER(channel, name) (__mark_##channel##_##name)
> > -
> > #else /* !CONFIG_MARKERS */
> > #define DEFINE_MARKER(channel, name, tp_name, tp_cb, format, m)
> > #define __trace_mark(generic, channel, name, call_private, format,
> > args...) \
> > --
> > 1.7.2.3
> >
> >
> > _______________________________________________
> > ltt-dev mailing list
> > ltt-dev at lists.casi.polymtl.ca
> > http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
>
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [ltt-dev] [UST PATCH 1/3] Change code for consistency
2010-09-17 21:04 ` David Goulet
@ 2010-09-17 21:07 ` Mathieu Desnoyers
2010-09-17 21:40 ` David Goulet
0 siblings, 1 reply; 12+ messages in thread
From: Mathieu Desnoyers @ 2010-09-17 21:07 UTC (permalink / raw)
* David Goulet (david.goulet at polymtl.ca) wrote:
> Frankly, I don't know what is CPP. I'll be happy if you can show me what it is.
>
> However, every patch that I submit, I tested them with the tests/runtests and my
> benchmark test.
You know it, just just don't know it's called "CPP". It stands for "C
Preprocessor". gcc -E runs the preprocessor stage only.
Mathieu
>
> Thanks
> David
>
> Selon Nils Carlson <nils.carlson at ludd.ltu.se>:
>
> > Looks good!
> >
> > Have you tried piping the old and new one through CPP with a file
> > containing just one marker and running diff aftwerwards? This is sort
> > of a good "test" when playing with the macros to make sure you've got
> > it all right. Also very educational as you get to see what everything
> > expands into in the end.
> >
> > /Nils
> > On Sep 17, 2010, at 9:41 PM, David Goulet wrote:
> >
> > > Use the kcompat stringify header for double level
> > > stringification for markers section.
> > >
> > > Also use the GET_MARKER macro for uniformity across the code.
> > >
> > > Signed-off-by: David Goulet <david.goulet at polymtl.ca>
> > > ---
> > > include/ust/marker.h | 33 +++++++++++++++------------------
> > > 1 files changed, 15 insertions(+), 18 deletions(-)
> > >
> > > diff --git a/include/ust/marker.h b/include/ust/marker.h
> > > index 2751f58..287f20f 100644
> > > --- a/include/ust/marker.h
> > > +++ b/include/ust/marker.h
> > > @@ -30,15 +30,12 @@
> > > #include <urcu/list.h>
> > > #include <ust/processor.h>
> > > #include <ust/kcompat/kcompat.h>
> > > +#include <ust/kcompat/stringify.h>
> > >
> > > #include <bits/wordsize.h>
> > >
> > > struct marker;
> > >
> > > -/* To stringify the expansion of a define */
> > > -#define XSTR(d) STR(d)
> > > -#define STR(s) #s
> > > -
> > > /**
> > > * marker_probe_func - Type of a marker probe function
> > > * @mdata: marker data
> > > @@ -83,6 +80,8 @@ struct marker {
> > > #define CONFIG_MARKERS
> > > #ifdef CONFIG_MARKERS
> > >
> > > +#define GET_MARKER(channel, name) (__mark_##channel##_##name)
> > > +
> > > #define _DEFINE_MARKER(channel, name, tp_name_str, tp_cb, format,
> > > unique, m) \
> > > struct registers regs; \
> > > \
> > > @@ -96,14 +95,14 @@ struct marker {
> > > * will try to create the same symbols, resulting in a
> > > conflict. This \
> > > * is not unusual as it can be the result of function
> > > inlining. \
> > > */ \
> > > - ".ifndef __mstrtab_" XSTR(channel) "_" XSTR(name)
> > > "_channel_" XSTR(unique) "\n\t" \
> > > + ".ifndef __mstrtab_" __stringify(channel) "_"
> > > __stringify(name) "_channel_" __stringify(unique) "\n\t" \
> > > /*".section __markers_strings\n\t"*/ \
> > > ".section __markers_strings,\"aw\", at progbits\n\t" \
> > > - "__mstrtab_" XSTR(channel) "_" XSTR(name) "_channel_"
> > > XSTR(unique) ":\n\t" \
> > > - ".string \"" XSTR(channel) "\"\n\t" \
> > > - "__mstrtab_" XSTR(channel) "_" XSTR(name) "_name_"
> > > XSTR(unique) ":\n\t" \
> > > - ".string \"" XSTR(name) "\"\n\t" \
> > > - "__mstrtab_" XSTR(channel) "_" XSTR(name) "_format_"
> > > XSTR(unique) ":\n\t" \
> > > + "__mstrtab_" __stringify(channel) "_" __stringify(name)
> > > "_channel_" __stringify(unique) ":\n\t" \
> > > + ".string \"" __stringify(channel) "\"\n\t" \
> > > + "__mstrtab_" __stringify(channel) "_" __stringify(name)
> > > "_name_" __stringify(unique) ":\n\t" \
> > > + ".string \"" __stringify(name) "\"\n\t" \
> > > + "__mstrtab_" __stringify(channel) "_" __stringify(name)
> > > "_format_" __stringify(unique) ":\n\t" \
> > > ".string " "\"" format "\"" "\n\t" \
> > > ".previous\n\t" \
> > > ".endif\n\t" \
> > > @@ -113,14 +112,14 @@ struct marker {
> > > ".section __markers,\"aw\", at progbits\n\t" \
> > > ".balign 8\n\t" \
> > > "2:\n\t" \
> > > - _ASM_PTR "(__mstrtab_" XSTR(channel) "_" XSTR(name)
> > > "_channel_" XSTR(unique) ")\n\t" /* channel string */ \
> > > - _ASM_PTR "(__mstrtab_" XSTR(channel) "_" XSTR(name) "_name_"
> > > XSTR(unique) ")\n\t" /* name string */ \
> > > - _ASM_PTR "(__mstrtab_" XSTR(channel) "_" XSTR(name)
> > > "_format_" XSTR(unique) ")\n\t" /* format string */ \
> > > + _ASM_PTR "(__mstrtab_" __stringify(channel) "_"
> > > __stringify(name) "_channel_" __stringify(unique) ")\n\t" /* channel
> > > string */ \
> > > + _ASM_PTR "(__mstrtab_" __stringify(channel) "_"
> > > __stringify(name) "_name_" __stringify(unique) ")\n\t" /* name
> > > string */ \
> > > + _ASM_PTR "(__mstrtab_" __stringify(channel) "_"
> > > __stringify(name) "_format_" __stringify(unique) ")\n\t" /* format
> > > string */ \
> > > ".byte 0\n\t" /* state imv */ \
> > > ".byte 0\n\t" /* ptype */ \
> > > ".word 0\n\t" /* channel_id */ \
> > > ".word 0\n\t" /* event_id */ \
> > > - ".balign " XSTR(__WORDSIZE) " / 8\n\t" /* alignment */ \
> > > + ".balign " __stringify(__WORDSIZE) " / 8\n\t" /* alignment
> > > */ \
> > > _ASM_PTR "(marker_probe_cb)\n\t" /* call */ \
> > > _ASM_PTR "(__mark_empty_function)\n\t" /*
> > > marker_probe_closure single.field1 */ \
> > > _ASM_PTR "0\n\t" /* marker_probe_closure single.field2 */ \
> > > @@ -146,7 +145,7 @@ struct marker {
> > > static const char __mstrtab_##channel##_##name[] \
> > > __attribute__((section("__markers_strings"))) \
> > > = #channel "\0" #name "\0" format; \
> > > - static struct marker __mark_##channel##_##name \
> > > + static struct marker GET_MARKER(channel, name) \
> > > __attribute__((section("__markers"), aligned(8))) = \
> > > { __mstrtab_##channel##_##name, \
> > > &__mstrtab_##channel##_##name[sizeof(#channel)], \
> > > @@ -195,15 +194,13 @@ struct marker {
> > > } \
> > > DEFINE_MARKER_TP(channel, name, tp_name, tp_cb, format);\
> > > __mark_check_format(format, ## args); \
> > > - (*__mark_##channel##_##name.call)(&__mark_##channel##_##name, \
> > > + (*GET_MARKER(channel, name).call)(&GET_MARKER(channel, name), \
> > > call_private, ®s, ## args); \
> > > } while (0)
> > >
> > > extern void marker_update_probe_range(struct marker *begin,
> > > struct marker *end);
> > >
> > > -#define GET_MARKER(channel, name) (__mark_##channel##_##name)
> > > -
> > > #else /* !CONFIG_MARKERS */
> > > #define DEFINE_MARKER(channel, name, tp_name, tp_cb, format, m)
> > > #define __trace_mark(generic, channel, name, call_private, format,
> > > args...) \
> > > --
> > > 1.7.2.3
> > >
> > >
> > > _______________________________________________
> > > ltt-dev mailing list
> > > ltt-dev at lists.casi.polymtl.ca
> > > http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
> >
> >
>
>
>
--
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com
^ permalink raw reply [flat|nested] 12+ messages in thread
* [ltt-dev] [UST PATCH 1/3] Change code for consistency
2010-09-17 21:07 ` Mathieu Desnoyers
@ 2010-09-17 21:40 ` David Goulet
0 siblings, 0 replies; 12+ messages in thread
From: David Goulet @ 2010-09-17 21:40 UTC (permalink / raw)
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 10-09-17 05:07 PM, Mathieu Desnoyers wrote:
> * David Goulet (david.goulet at polymtl.ca) wrote:
>> Frankly, I don't know what is CPP. I'll be happy if you can show me what it is.
>>
>> However, every patch that I submit, I tested them with the tests/runtests and my
>> benchmark test.
>
> You know it, just just don't know it's called "CPP". It stands for "C
> Preprocessor". gcc -E runs the preprocessor stage only.
>
Awwwwwwww :) ... of course i'm using that... it's the only way I can decrypt the
UST Macros :P
David
> Mathieu
>
>>
>> Thanks
>> David
>>
>> Selon Nils Carlson <nils.carlson at ludd.ltu.se>:
>>
>>> Looks good!
>>>
>>> Have you tried piping the old and new one through CPP with a file
>>> containing just one marker and running diff aftwerwards? This is sort
>>> of a good "test" when playing with the macros to make sure you've got
>>> it all right. Also very educational as you get to see what everything
>>> expands into in the end.
>>>
>>> /Nils
>>> On Sep 17, 2010, at 9:41 PM, David Goulet wrote:
>>>
>>>> Use the kcompat stringify header for double level
>>>> stringification for markers section.
>>>>
>>>> Also use the GET_MARKER macro for uniformity across the code.
>>>>
>>>> Signed-off-by: David Goulet <david.goulet at polymtl.ca>
>>>> ---
>>>> include/ust/marker.h | 33 +++++++++++++++------------------
>>>> 1 files changed, 15 insertions(+), 18 deletions(-)
>>>>
>>>> diff --git a/include/ust/marker.h b/include/ust/marker.h
>>>> index 2751f58..287f20f 100644
>>>> --- a/include/ust/marker.h
>>>> +++ b/include/ust/marker.h
>>>> @@ -30,15 +30,12 @@
>>>> #include <urcu/list.h>
>>>> #include <ust/processor.h>
>>>> #include <ust/kcompat/kcompat.h>
>>>> +#include <ust/kcompat/stringify.h>
>>>>
>>>> #include <bits/wordsize.h>
>>>>
>>>> struct marker;
>>>>
>>>> -/* To stringify the expansion of a define */
>>>> -#define XSTR(d) STR(d)
>>>> -#define STR(s) #s
>>>> -
>>>> /**
>>>> * marker_probe_func - Type of a marker probe function
>>>> * @mdata: marker data
>>>> @@ -83,6 +80,8 @@ struct marker {
>>>> #define CONFIG_MARKERS
>>>> #ifdef CONFIG_MARKERS
>>>>
>>>> +#define GET_MARKER(channel, name) (__mark_##channel##_##name)
>>>> +
>>>> #define _DEFINE_MARKER(channel, name, tp_name_str, tp_cb, format,
>>>> unique, m) \
>>>> struct registers regs; \
>>>> \
>>>> @@ -96,14 +95,14 @@ struct marker {
>>>> * will try to create the same symbols, resulting in a
>>>> conflict. This \
>>>> * is not unusual as it can be the result of function
>>>> inlining. \
>>>> */ \
>>>> - ".ifndef __mstrtab_" XSTR(channel) "_" XSTR(name)
>>>> "_channel_" XSTR(unique) "\n\t" \
>>>> + ".ifndef __mstrtab_" __stringify(channel) "_"
>>>> __stringify(name) "_channel_" __stringify(unique) "\n\t" \
>>>> /*".section __markers_strings\n\t"*/ \
>>>> ".section __markers_strings,\"aw\", at progbits\n\t" \
>>>> - "__mstrtab_" XSTR(channel) "_" XSTR(name) "_channel_"
>>>> XSTR(unique) ":\n\t" \
>>>> - ".string \"" XSTR(channel) "\"\n\t" \
>>>> - "__mstrtab_" XSTR(channel) "_" XSTR(name) "_name_"
>>>> XSTR(unique) ":\n\t" \
>>>> - ".string \"" XSTR(name) "\"\n\t" \
>>>> - "__mstrtab_" XSTR(channel) "_" XSTR(name) "_format_"
>>>> XSTR(unique) ":\n\t" \
>>>> + "__mstrtab_" __stringify(channel) "_" __stringify(name)
>>>> "_channel_" __stringify(unique) ":\n\t" \
>>>> + ".string \"" __stringify(channel) "\"\n\t" \
>>>> + "__mstrtab_" __stringify(channel) "_" __stringify(name)
>>>> "_name_" __stringify(unique) ":\n\t" \
>>>> + ".string \"" __stringify(name) "\"\n\t" \
>>>> + "__mstrtab_" __stringify(channel) "_" __stringify(name)
>>>> "_format_" __stringify(unique) ":\n\t" \
>>>> ".string " "\"" format "\"" "\n\t" \
>>>> ".previous\n\t" \
>>>> ".endif\n\t" \
>>>> @@ -113,14 +112,14 @@ struct marker {
>>>> ".section __markers,\"aw\", at progbits\n\t" \
>>>> ".balign 8\n\t" \
>>>> "2:\n\t" \
>>>> - _ASM_PTR "(__mstrtab_" XSTR(channel) "_" XSTR(name)
>>>> "_channel_" XSTR(unique) ")\n\t" /* channel string */ \
>>>> - _ASM_PTR "(__mstrtab_" XSTR(channel) "_" XSTR(name) "_name_"
>>>> XSTR(unique) ")\n\t" /* name string */ \
>>>> - _ASM_PTR "(__mstrtab_" XSTR(channel) "_" XSTR(name)
>>>> "_format_" XSTR(unique) ")\n\t" /* format string */ \
>>>> + _ASM_PTR "(__mstrtab_" __stringify(channel) "_"
>>>> __stringify(name) "_channel_" __stringify(unique) ")\n\t" /* channel
>>>> string */ \
>>>> + _ASM_PTR "(__mstrtab_" __stringify(channel) "_"
>>>> __stringify(name) "_name_" __stringify(unique) ")\n\t" /* name
>>>> string */ \
>>>> + _ASM_PTR "(__mstrtab_" __stringify(channel) "_"
>>>> __stringify(name) "_format_" __stringify(unique) ")\n\t" /* format
>>>> string */ \
>>>> ".byte 0\n\t" /* state imv */ \
>>>> ".byte 0\n\t" /* ptype */ \
>>>> ".word 0\n\t" /* channel_id */ \
>>>> ".word 0\n\t" /* event_id */ \
>>>> - ".balign " XSTR(__WORDSIZE) " / 8\n\t" /* alignment */ \
>>>> + ".balign " __stringify(__WORDSIZE) " / 8\n\t" /* alignment
>>>> */ \
>>>> _ASM_PTR "(marker_probe_cb)\n\t" /* call */ \
>>>> _ASM_PTR "(__mark_empty_function)\n\t" /*
>>>> marker_probe_closure single.field1 */ \
>>>> _ASM_PTR "0\n\t" /* marker_probe_closure single.field2 */ \
>>>> @@ -146,7 +145,7 @@ struct marker {
>>>> static const char __mstrtab_##channel##_##name[] \
>>>> __attribute__((section("__markers_strings"))) \
>>>> = #channel "\0" #name "\0" format; \
>>>> - static struct marker __mark_##channel##_##name \
>>>> + static struct marker GET_MARKER(channel, name) \
>>>> __attribute__((section("__markers"), aligned(8))) = \
>>>> { __mstrtab_##channel##_##name, \
>>>> &__mstrtab_##channel##_##name[sizeof(#channel)], \
>>>> @@ -195,15 +194,13 @@ struct marker {
>>>> } \
>>>> DEFINE_MARKER_TP(channel, name, tp_name, tp_cb, format);\
>>>> __mark_check_format(format, ## args); \
>>>> - (*__mark_##channel##_##name.call)(&__mark_##channel##_##name, \
>>>> + (*GET_MARKER(channel, name).call)(&GET_MARKER(channel, name), \
>>>> call_private, ®s, ## args); \
>>>> } while (0)
>>>>
>>>> extern void marker_update_probe_range(struct marker *begin,
>>>> struct marker *end);
>>>>
>>>> -#define GET_MARKER(channel, name) (__mark_##channel##_##name)
>>>> -
>>>> #else /* !CONFIG_MARKERS */
>>>> #define DEFINE_MARKER(channel, name, tp_name, tp_cb, format, m)
>>>> #define __trace_mark(generic, channel, name, call_private, format,
>>>> args...) \
>>>> --
>>>> 1.7.2.3
>>>>
>>>>
>>>> _______________________________________________
>>>> ltt-dev mailing list
>>>> ltt-dev at lists.casi.polymtl.ca
>>>> http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
>>>
>>>
>>
>>
>>
>
- --
David Goulet
LTTng project, DORSAL Lab.
1024D/16BD8563
BE3C 672B 9331 9796 291A 14C6 4AF7 C14B 16BD 8563
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
iEYEARECAAYFAkyT4EgACgkQSvfBSxa9hWNuswCgnbat1TuV0xkGqtlrj+SZSPac
7LAAoLO0LHtIZgxcKZ07NHIuIEnE7XeK
=IB+h
-----END PGP SIGNATURE-----
^ permalink raw reply [flat|nested] 12+ messages in thread
* [ltt-dev] [UST PATCH 1/3] Change code for consistency
2010-09-17 19:41 [ltt-dev] [UST PATCH 1/3] Change code for consistency David Goulet
` (2 preceding siblings ...)
2010-09-17 20:18 ` [ltt-dev] [UST PATCH 1/3] Change code for consistency Nils Carlson
@ 2010-09-21 12:13 ` Nils Carlson
3 siblings, 0 replies; 12+ messages in thread
From: Nils Carlson @ 2010-09-21 12:13 UTC (permalink / raw)
Acked, pulled, thanks.
/Nils
On Fri, 17 Sep 2010, David Goulet wrote:
> Use the kcompat stringify header for double level
> stringification for markers section.
>
> Also use the GET_MARKER macro for uniformity across the code.
>
> Signed-off-by: David Goulet <david.goulet at polymtl.ca>
> ---
> include/ust/marker.h | 33 +++++++++++++++------------------
> 1 files changed, 15 insertions(+), 18 deletions(-)
>
> diff --git a/include/ust/marker.h b/include/ust/marker.h
> index 2751f58..287f20f 100644
> --- a/include/ust/marker.h
> +++ b/include/ust/marker.h
> @@ -30,15 +30,12 @@
> #include <urcu/list.h>
> #include <ust/processor.h>
> #include <ust/kcompat/kcompat.h>
> +#include <ust/kcompat/stringify.h>
>
> #include <bits/wordsize.h>
>
> struct marker;
>
> -/* To stringify the expansion of a define */
> -#define XSTR(d) STR(d)
> -#define STR(s) #s
> -
> /**
> * marker_probe_func - Type of a marker probe function
> * @mdata: marker data
> @@ -83,6 +80,8 @@ struct marker {
> #define CONFIG_MARKERS
> #ifdef CONFIG_MARKERS
>
> +#define GET_MARKER(channel, name) (__mark_##channel##_##name)
> +
> #define _DEFINE_MARKER(channel, name, tp_name_str, tp_cb, format, unique, m) \
> struct registers regs; \
> \
> @@ -96,14 +95,14 @@ struct marker {
> * will try to create the same symbols, resulting in a conflict. This \
> * is not unusual as it can be the result of function inlining. \
> */ \
> - ".ifndef __mstrtab_" XSTR(channel) "_" XSTR(name) "_channel_" XSTR(unique) "\n\t" \
> + ".ifndef __mstrtab_" __stringify(channel) "_" __stringify(name) "_channel_" __stringify(unique) "\n\t" \
> /*".section __markers_strings\n\t"*/ \
> ".section __markers_strings,\"aw\", at progbits\n\t" \
> - "__mstrtab_" XSTR(channel) "_" XSTR(name) "_channel_" XSTR(unique) ":\n\t" \
> - ".string \"" XSTR(channel) "\"\n\t" \
> - "__mstrtab_" XSTR(channel) "_" XSTR(name) "_name_" XSTR(unique) ":\n\t" \
> - ".string \"" XSTR(name) "\"\n\t" \
> - "__mstrtab_" XSTR(channel) "_" XSTR(name) "_format_" XSTR(unique) ":\n\t" \
> + "__mstrtab_" __stringify(channel) "_" __stringify(name) "_channel_" __stringify(unique) ":\n\t" \
> + ".string \"" __stringify(channel) "\"\n\t" \
> + "__mstrtab_" __stringify(channel) "_" __stringify(name) "_name_" __stringify(unique) ":\n\t" \
> + ".string \"" __stringify(name) "\"\n\t" \
> + "__mstrtab_" __stringify(channel) "_" __stringify(name) "_format_" __stringify(unique) ":\n\t" \
> ".string " "\"" format "\"" "\n\t" \
> ".previous\n\t" \
> ".endif\n\t" \
> @@ -113,14 +112,14 @@ struct marker {
> ".section __markers,\"aw\", at progbits\n\t" \
> ".balign 8\n\t" \
> "2:\n\t" \
> - _ASM_PTR "(__mstrtab_" XSTR(channel) "_" XSTR(name) "_channel_" XSTR(unique) ")\n\t" /* channel string */ \
> - _ASM_PTR "(__mstrtab_" XSTR(channel) "_" XSTR(name) "_name_" XSTR(unique) ")\n\t" /* name string */ \
> - _ASM_PTR "(__mstrtab_" XSTR(channel) "_" XSTR(name) "_format_" XSTR(unique) ")\n\t" /* format string */ \
> + _ASM_PTR "(__mstrtab_" __stringify(channel) "_" __stringify(name) "_channel_" __stringify(unique) ")\n\t" /* channel string */ \
> + _ASM_PTR "(__mstrtab_" __stringify(channel) "_" __stringify(name) "_name_" __stringify(unique) ")\n\t" /* name string */ \
> + _ASM_PTR "(__mstrtab_" __stringify(channel) "_" __stringify(name) "_format_" __stringify(unique) ")\n\t" /* format string */ \
> ".byte 0\n\t" /* state imv */ \
> ".byte 0\n\t" /* ptype */ \
> ".word 0\n\t" /* channel_id */ \
> ".word 0\n\t" /* event_id */ \
> - ".balign " XSTR(__WORDSIZE) " / 8\n\t" /* alignment */ \
> + ".balign " __stringify(__WORDSIZE) " / 8\n\t" /* alignment */ \
> _ASM_PTR "(marker_probe_cb)\n\t" /* call */ \
> _ASM_PTR "(__mark_empty_function)\n\t" /* marker_probe_closure single.field1 */ \
> _ASM_PTR "0\n\t" /* marker_probe_closure single.field2 */ \
> @@ -146,7 +145,7 @@ struct marker {
> static const char __mstrtab_##channel##_##name[] \
> __attribute__((section("__markers_strings"))) \
> = #channel "\0" #name "\0" format; \
> - static struct marker __mark_##channel##_##name \
> + static struct marker GET_MARKER(channel, name) \
> __attribute__((section("__markers"), aligned(8))) = \
> { __mstrtab_##channel##_##name, \
> &__mstrtab_##channel##_##name[sizeof(#channel)], \
> @@ -195,15 +194,13 @@ struct marker {
> } \
> DEFINE_MARKER_TP(channel, name, tp_name, tp_cb, format);\
> __mark_check_format(format, ## args); \
> - (*__mark_##channel##_##name.call)(&__mark_##channel##_##name, \
> + (*GET_MARKER(channel, name).call)(&GET_MARKER(channel, name), \
> call_private, ®s, ## args); \
> } while (0)
>
> extern void marker_update_probe_range(struct marker *begin,
> struct marker *end);
>
> -#define GET_MARKER(channel, name) (__mark_##channel##_##name)
> -
> #else /* !CONFIG_MARKERS */
> #define DEFINE_MARKER(channel, name, tp_name, tp_cb, format, m)
> #define __trace_mark(generic, channel, name, call_private, format, args...) \
> --
> 1.7.2.3
>
>
> _______________________________________________
> ltt-dev mailing list
> ltt-dev at lists.casi.polymtl.ca
> http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [ltt-dev] [UST PATCH 2/3] Syntax cleanup
2010-09-17 19:41 ` [ltt-dev] [UST PATCH 2/3] Syntax cleanup David Goulet
@ 2010-09-21 12:14 ` Nils Carlson
0 siblings, 0 replies; 12+ messages in thread
From: Nils Carlson @ 2010-09-21 12:14 UTC (permalink / raw)
Acked, pulled, thanks.
/Nils
On Fri, 17 Sep 2010, David Goulet wrote:
> Replace spaces by tabs and remove trailing white spaces
>
> Signed-off-by: David Goulet <david.goulet at polymtl.ca>
> ---
> include/ust/marker.h | 91 ++++++++++++++++++++++++-------------------------
> 1 files changed, 45 insertions(+), 46 deletions(-)
>
> diff --git a/include/ust/marker.h b/include/ust/marker.h
> index 287f20f..7670648 100644
> --- a/include/ust/marker.h
> +++ b/include/ust/marker.h
> @@ -64,7 +64,7 @@ struct marker {
> const char *format; /* Marker format string, describing the
> * variable argument list.
> */
> - DEFINE_IMV(char, state);/* Immediate value state. */
> + DEFINE_IMV(char, state);/* Immediate value state. */
> char ptype; /* probe type : 0 : single, 1 : multi */
> /* Probe wrapper */
> u16 channel_id; /* Numeric channel identifier, dynamic */
> @@ -89,47 +89,47 @@ struct marker {
> * because it must not require %-sign escaping, as we most certainly \
> * have some %-signs in the format string. \
> */ \
> - asm volatile ( \
> - /* We only define these symbols if they have not yet been defined. Indeed, \
> - * if two markers with the same channel/name are on the same line, they \
> - * will try to create the same symbols, resulting in a conflict. This \
> - * is not unusual as it can be the result of function inlining. \
> - */ \
> - ".ifndef __mstrtab_" __stringify(channel) "_" __stringify(name) "_channel_" __stringify(unique) "\n\t" \
> - /*".section __markers_strings\n\t"*/ \
> - ".section __markers_strings,\"aw\", at progbits\n\t" \
> - "__mstrtab_" __stringify(channel) "_" __stringify(name) "_channel_" __stringify(unique) ":\n\t" \
> - ".string \"" __stringify(channel) "\"\n\t" \
> - "__mstrtab_" __stringify(channel) "_" __stringify(name) "_name_" __stringify(unique) ":\n\t" \
> - ".string \"" __stringify(name) "\"\n\t" \
> - "__mstrtab_" __stringify(channel) "_" __stringify(name) "_format_" __stringify(unique) ":\n\t" \
> - ".string " "\"" format "\"" "\n\t" \
> - ".previous\n\t" \
> - ".endif\n\t" \
> + asm volatile ( \
> + /* We only define these symbols if they have not yet been defined. Indeed, \
> + * if two markers with the same channel/name are on the same line, they \
> + * will try to create the same symbols, resulting in a conflict. This \
> + * is not unusual as it can be the result of function inlining. \
> + */ \
> + ".ifndef __mstrtab_" __stringify(channel) "_" __stringify(name) "_channel_" __stringify(unique) "\n\t" \
> + /*".section __markers_strings\n\t"*/ \
> + ".section __markers_strings,\"aw\", at progbits\n\t" \
> + "__mstrtab_" __stringify(channel) "_" __stringify(name) "_channel_" __stringify(unique) ":\n\t" \
> + ".string \"" __stringify(channel) "\"\n\t" \
> + "__mstrtab_" __stringify(channel) "_" __stringify(name) "_name_" __stringify(unique) ":\n\t" \
> + ".string \"" __stringify(name) "\"\n\t" \
> + "__mstrtab_" __stringify(channel) "_" __stringify(name) "_format_" __stringify(unique) ":\n\t" \
> + ".string " "\"" format "\"" "\n\t" \
> + ".previous\n\t" \
> + ".endif\n\t" \
> ); \
> asm volatile ( \
> - /*".section __markers\n\t"*/ \
> - ".section __markers,\"aw\", at progbits\n\t" \
> - ".balign 8\n\t" \
> - "2:\n\t" \
> - _ASM_PTR "(__mstrtab_" __stringify(channel) "_" __stringify(name) "_channel_" __stringify(unique) ")\n\t" /* channel string */ \
> - _ASM_PTR "(__mstrtab_" __stringify(channel) "_" __stringify(name) "_name_" __stringify(unique) ")\n\t" /* name string */ \
> - _ASM_PTR "(__mstrtab_" __stringify(channel) "_" __stringify(name) "_format_" __stringify(unique) ")\n\t" /* format string */ \
> - ".byte 0\n\t" /* state imv */ \
> - ".byte 0\n\t" /* ptype */ \
> - ".word 0\n\t" /* channel_id */ \
> - ".word 0\n\t" /* event_id */ \
> - ".balign " __stringify(__WORDSIZE) " / 8\n\t" /* alignment */ \
> - _ASM_PTR "(marker_probe_cb)\n\t" /* call */ \
> - _ASM_PTR "(__mark_empty_function)\n\t" /* marker_probe_closure single.field1 */ \
> - _ASM_PTR "0\n\t" /* marker_probe_closure single.field2 */ \
> - _ASM_PTR "0\n\t" /* marker_probe_closure *multi */ \
> - _ASM_PTR "0\n\t" /* tp_name */ \
> - _ASM_PTR "0\n\t" /* tp_cb */ \
> - _ASM_PTR "(1f)\n\t" /* location */ \
> - ".previous\n\t" \
> - "1:\n\t" \
> - ARCH_COPY_ADDR("%[outptr]") \
> + /*".section __markers\n\t"*/ \
> + ".section __markers,\"aw\", at progbits\n\t" \
> + ".balign 8\n\t" \
> + "2:\n\t" \
> + _ASM_PTR "(__mstrtab_" __stringify(channel) "_" __stringify(name) "_channel_" __stringify(unique) ")\n\t" /* channel string */ \
> + _ASM_PTR "(__mstrtab_" __stringify(channel) "_" __stringify(name) "_name_" __stringify(unique) ")\n\t" /* name string */ \
> + _ASM_PTR "(__mstrtab_" __stringify(channel) "_" __stringify(name) "_format_" __stringify(unique) ")\n\t" /* format string */ \
> + ".byte 0\n\t" /* state imv */ \
> + ".byte 0\n\t" /* ptype */ \
> + ".word 0\n\t" /* channel_id */ \
> + ".word 0\n\t" /* event_id */ \
> + ".balign " __stringify(__WORDSIZE) " / 8\n\t" /* alignment */ \
> + _ASM_PTR "(marker_probe_cb)\n\t" /* call */ \
> + _ASM_PTR "(__mark_empty_function)\n\t" /* marker_probe_closure single.field1 */ \
> + _ASM_PTR "0\n\t" /* marker_probe_closure single.field2 */ \
> + _ASM_PTR "0\n\t" /* marker_probe_closure *multi */ \
> + _ASM_PTR "0\n\t" /* tp_name */ \
> + _ASM_PTR "0\n\t" /* tp_cb */ \
> + _ASM_PTR "(1f)\n\t" /* location */ \
> + ".previous\n\t" \
> + "1:\n\t" \
> + ARCH_COPY_ADDR("%[outptr]") \
> : [outptr] "=r" (m) ); \
> \
> save_registers(®s)
> @@ -148,12 +148,11 @@ struct marker {
> static struct marker GET_MARKER(channel, name) \
> __attribute__((section("__markers"), aligned(8))) = \
> { __mstrtab_##channel##_##name, \
> - &__mstrtab_##channel##_##name[sizeof(#channel)], \
> - &__mstrtab_##channel##_##name[sizeof(#channel) + \
> - sizeof(#name)], \
> - 0, 0, 0, 0, marker_probe_cb, \
> - { __mark_empty_function, NULL}, \
> - NULL, tp_name_str, tp_cb }
> + &__mstrtab_##channel##_##name[sizeof(#channel)], \
> + &__mstrtab_##channel##_##name[sizeof(#channel) + sizeof(#name)], \
> + 0, 0, 0, 0, marker_probe_cb, \
> + { __mark_empty_function, NULL}, \
> + NULL, tp_name_str, tp_cb }
>
> /*
> * Make sure the alignment of the structure in the __markers section will
> --
> 1.7.2.3
>
>
> _______________________________________________
> ltt-dev mailing list
> ltt-dev at lists.casi.polymtl.ca
> http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [ltt-dev] [UST PATCH 3/3] Remove unused code
2010-09-17 19:41 ` [ltt-dev] [UST PATCH 3/3] Remove unused code David Goulet
@ 2010-09-21 12:14 ` Nils Carlson
2010-09-26 5:13 ` Pierre-Marc Fournier
1 sibling, 0 replies; 12+ messages in thread
From: Nils Carlson @ 2010-09-21 12:14 UTC (permalink / raw)
Acked, pulled, thanks.
/Nils
On Fri, 17 Sep 2010, David Goulet wrote:
> Signed-off-by: David Goulet <david.goulet at polymtl.ca>
> ---
> include/ust/marker.h | 22 ----------------------
> 1 files changed, 0 insertions(+), 22 deletions(-)
>
> diff --git a/include/ust/marker.h b/include/ust/marker.h
> index 7670648..6103629 100644
> --- a/include/ust/marker.h
> +++ b/include/ust/marker.h
> @@ -77,9 +77,6 @@ struct marker {
> void *location; /* Address of marker in code */
> } __attribute__((aligned(8)));
>
> -#define CONFIG_MARKERS
> -#ifdef CONFIG_MARKERS
> -
> #define GET_MARKER(channel, name) (__mark_##channel##_##name)
>
> #define _DEFINE_MARKER(channel, name, tp_name_str, tp_cb, format, unique, m) \
> @@ -200,25 +197,6 @@ struct marker {
> extern void marker_update_probe_range(struct marker *begin,
> struct marker *end);
>
> -#else /* !CONFIG_MARKERS */
> -#define DEFINE_MARKER(channel, name, tp_name, tp_cb, format, m)
> -#define __trace_mark(generic, channel, name, call_private, format, args...) \
> - __mark_check_format(format, ## args)
> -#define __trace_mark_tp(channel, name, call_private, tp_name, tp_cb, \
> - format, args...) \
> - do { \
> - void __check_tp_type(void) \
> - { \
> - register_trace_##tp_name(tp_cb, call_private); \
> - } \
> - __mark_check_format(format, ## args); \
> - } while (0)
> -static inline void marker_update_probe_range(struct marker *begin,
> - struct marker *end)
> -{ }
> -#define GET_MARKER(channel, name)
> -#endif /* CONFIG_MARKERS */
> -
> /**
> * trace_mark - Marker using code patching
> * @channel: marker channel (where to send the data), not quoted.
> --
> 1.7.2.3
>
>
> _______________________________________________
> ltt-dev mailing list
> ltt-dev at lists.casi.polymtl.ca
> http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [ltt-dev] [UST PATCH 3/3] Remove unused code
2010-09-17 19:41 ` [ltt-dev] [UST PATCH 3/3] Remove unused code David Goulet
2010-09-21 12:14 ` Nils Carlson
@ 2010-09-26 5:13 ` Pierre-Marc Fournier
2010-09-26 16:37 ` David Goulet
1 sibling, 1 reply; 12+ messages in thread
From: Pierre-Marc Fournier @ 2010-09-26 5:13 UTC (permalink / raw)
On 09/17/2010 03:41 PM, David Goulet wrote:
> Signed-off-by: David Goulet<david.goulet at polymtl.ca>
> ---
> include/ust/marker.h | 22 ----------------------
> 1 files changed, 0 insertions(+), 22 deletions(-)
>
> diff --git a/include/ust/marker.h b/include/ust/marker.h
> index 7670648..6103629 100644
> --- a/include/ust/marker.h
> +++ b/include/ust/marker.h
> @@ -77,9 +77,6 @@ struct marker {
> void *location; /* Address of marker in code */
> } __attribute__((aligned(8)));
>
> -#define CONFIG_MARKERS
> -#ifdef CONFIG_MARKERS
> -
How about support for compiling an application while disabling its
markers (compiling them out)?
pmf
^ permalink raw reply [flat|nested] 12+ messages in thread
* [ltt-dev] [UST PATCH 3/3] Remove unused code
2010-09-26 5:13 ` Pierre-Marc Fournier
@ 2010-09-26 16:37 ` David Goulet
0 siblings, 0 replies; 12+ messages in thread
From: David Goulet @ 2010-09-26 16:37 UTC (permalink / raw)
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 10-09-26 01:13 AM, Pierre-Marc Fournier wrote:
> On 09/17/2010 03:41 PM, David Goulet wrote:
>> Signed-off-by: David Goulet<david.goulet at polymtl.ca>
>> ---
>> include/ust/marker.h | 22 ----------------------
>> 1 files changed, 0 insertions(+), 22 deletions(-)
>>
>> diff --git a/include/ust/marker.h b/include/ust/marker.h
>> index 7670648..6103629 100644
>> --- a/include/ust/marker.h
>> +++ b/include/ust/marker.h
>> @@ -77,9 +77,6 @@ struct marker {
>> void *location; /* Address of marker in code */
>> } __attribute__((aligned(8)));
>>
>> -#define CONFIG_MARKERS
>> -#ifdef CONFIG_MARKERS
>> -
>
> How about support for compiling an application while disabling its
> markers (compiling them out)?
Yep true. Since we agree on naming now, I'll resubmit a patch soon to fix the
naming of this macro, for now, and have a chance to disable markers at compile time.
Thanks
David
>
> pmf
- --
David Goulet
LTTng project, DORSAL Lab.
1024D/16BD8563
BE3C 672B 9331 9796 291A 14C6 4AF7 C14B 16BD 8563
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
iEYEARECAAYFAkyfdr0ACgkQSvfBSxa9hWPj4QCfUAFwejK/ubERwVlBHmcz5nv1
+tAAoKFIS/qq2L4JklFsN95nWHxsLCAe
=PhiC
-----END PGP SIGNATURE-----
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2010-09-26 16:37 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-09-17 19:41 [ltt-dev] [UST PATCH 1/3] Change code for consistency David Goulet
2010-09-17 19:41 ` [ltt-dev] [UST PATCH 2/3] Syntax cleanup David Goulet
2010-09-21 12:14 ` Nils Carlson
2010-09-17 19:41 ` [ltt-dev] [UST PATCH 3/3] Remove unused code David Goulet
2010-09-21 12:14 ` Nils Carlson
2010-09-26 5:13 ` Pierre-Marc Fournier
2010-09-26 16:37 ` David Goulet
2010-09-17 20:18 ` [ltt-dev] [UST PATCH 1/3] Change code for consistency Nils Carlson
2010-09-17 21:04 ` David Goulet
2010-09-17 21:07 ` Mathieu Desnoyers
2010-09-17 21:40 ` David Goulet
2010-09-21 12:13 ` Nils Carlson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox