Files
kernel-tenderloin-3.0/include/linux
Mathieu Desnoyers dc102a8fae Markers - remove extra format argument
Denys Vlasenko <vda.linux@googlemail.com> :

> Not in this patch, but I noticed:
>
> #define __trace_mark(name, call_private, format, args...)               \
>         do {                                                            \
>                 static const char __mstrtab_##name[]                    \
>                 __attribute__((section("__markers_strings")))           \
>                 = #name "\0" format;                                    \
>                 static struct marker __mark_##name                      \
>                 __attribute__((section("__markers"), aligned(8))) =     \
>                 { __mstrtab_##name, &__mstrtab_##name[sizeof(#name)],   \
>                 0, 0, marker_probe_cb,                                  \
>                 { __mark_empty_function, NULL}, NULL };                 \
>                 __mark_check_format(format, ## args);                   \
>                 if (unlikely(__mark_##name.state)) {                    \
>                         (*__mark_##name.call)                           \
>                                 (&__mark_##name, call_private,          \
>                                 format, ## args);                       \
>                 }                                                       \
>         } while (0)
>
> In this call:
>
>                         (*__mark_##name.call)                           \
>                                 (&__mark_##name, call_private,          \
>                                 format, ## args);                       \
>
> you make gcc allocate duplicate format string. You can use
> &__mstrtab_##name[sizeof(#name)] instead since it holds the same string,
> or drop ", format," above and "const char *fmt" from here:
>
>         void (*call)(const struct marker *mdata,        /* Probe wrapper */
>                 void *call_private, const char *fmt, ...);
>
> since mdata->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 <mathieu.desnoyers@polymtl.ca>
CC: Denys Vlasenko <vda.linux@googlemail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2008-05-23 22:25:27 +02:00
..
2008-02-05 03:20:13 -08:00
2008-05-20 14:14:15 -07:00
2008-02-06 10:41:02 -08:00
2008-04-29 08:06:00 -07:00
2008-03-04 13:41:23 +01:00
2008-04-28 06:28:37 -04:00
2008-04-29 08:11:16 -07:00
2008-04-29 12:36:54 -07:00
2008-04-22 15:16:32 -05:00
2008-04-29 08:06:01 -07:00
2008-02-03 17:45:46 +02:00
2008-05-01 08:03:59 -07:00
2008-04-30 08:29:52 -07:00
2008-02-03 17:45:46 +02:00
2008-02-03 15:42:53 +02:00
2008-03-04 14:47:06 -08:00
2008-04-21 11:22:28 -05:00
2008-04-25 13:26:55 +01:00
2008-04-25 13:26:55 +01:00
2008-02-08 02:09:56 +00:00
2008-04-25 13:26:55 +01:00
2008-04-21 22:38:45 +00:00
2008-02-08 09:22:24 -08:00
2008-04-28 08:58:30 -07:00
2008-04-19 19:19:54 +02:00
2008-02-07 08:42:30 -08:00
2008-05-07 09:48:23 +02:00
2008-04-28 08:58:35 -07:00
2008-05-16 17:22:26 -04:00
2008-05-01 13:08:16 -04:00
2008-05-07 09:29:00 +02:00
2008-05-23 21:04:20 +02:00
2008-05-13 08:02:26 -07:00
2008-05-20 16:44:43 +02:00
2008-05-20 16:44:43 +02:00
2008-04-22 11:34:59 +02:00
2008-02-05 09:44:19 -08:00
2008-04-04 18:36:49 +02:00
2008-04-29 23:11:38 +02:00
2008-05-18 20:49:41 +02:00
2008-05-14 23:06:16 +02:00
2008-04-29 08:06:25 -07:00
2008-03-17 22:48:46 -07:00
2008-04-29 08:06:03 -07:00
2008-04-29 08:06:02 -07:00
2008-05-05 16:47:14 +10:00
2008-04-29 08:06:15 -07:00
2008-04-19 19:10:28 -07:00
2008-05-01 08:03:58 -07:00
2008-05-14 19:11:14 -07:00
2008-04-19 19:44:57 +02:00
2008-05-23 20:31:27 +02:00
2008-02-03 17:45:46 +02:00
2008-02-06 10:41:01 -08:00
2008-02-26 14:03:47 +09:00
2008-05-01 08:03:58 -07:00
2008-04-29 08:06:01 -07:00
2008-04-29 08:06:17 -07:00
2008-02-08 09:22:31 -08:00
2008-02-14 21:13:33 -08:00
2008-04-28 08:58:29 -07:00
2008-04-19 16:54:56 -04:00
2008-04-19 16:55:29 -04:00
2008-02-14 21:13:33 -08:00
2008-04-20 21:47:03 -07:00
2008-04-20 21:47:03 -07:00
2008-04-29 08:06:02 -07:00
2008-02-07 23:11:56 -08:00
2008-04-29 08:06:02 -07:00
2008-05-06 12:01:41 -04:00
2008-03-17 22:46:46 -07:00
2008-02-05 09:44:22 -08:00
2008-04-30 08:29:51 -07:00
2008-04-29 08:05:59 -07:00
2008-05-23 21:08:47 +02:00
2008-04-17 10:43:01 -04:00
2008-04-25 00:25:08 +02:00
2008-02-07 08:42:34 -08:00
2008-04-28 08:58:32 -07:00
2008-04-15 13:26:52 -04:00
2008-02-07 08:42:30 -08:00
2008-02-07 08:42:34 -08:00
2008-04-28 08:58:20 -07:00
2008-04-28 08:58:29 -07:00
2008-04-19 19:44:59 +02:00
2008-05-04 17:07:03 -07:00
2008-05-21 17:40:05 -07:00
2008-04-29 02:48:01 -04:00
2008-02-01 17:45:14 +01:00
2008-05-01 08:03:59 -07:00
2008-04-30 08:29:47 -07:00
2008-04-17 20:05:36 +02:00
2008-04-24 21:16:57 -07:00
2008-05-09 07:45:18 -07:00
2008-02-04 23:50:13 +11:00
2008-04-28 08:58:21 -07:00
2008-02-06 10:41:03 -08:00
2008-05-23 22:05:14 +02:00