X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=libust%2Fmarker.h;h=06f2b93f826d25fbf4ec976668b3ff14a3658126;hb=75667d04f4c255687def1876cf15baf3bbd1ffc5;hp=246d174e67caca18597a684dd6a2eda881a6dbbf;hpb=3ea1e2fc7178db75f09e3d5630516858c8a783d5;p=ust.git diff --git a/libust/marker.h b/libust/marker.h index 246d174..06f2b93 100644 --- a/libust/marker.h +++ b/libust/marker.h @@ -51,7 +51,7 @@ struct marker; * format string to recover the variable argument list. */ typedef void marker_probe_func(const struct marker *mdata, - void *probe_private, void *call_private, + void *probe_private, struct registers *regs, void *call_private, const char *fmt, va_list *args); struct marker_probe_closure { @@ -70,7 +70,7 @@ struct marker { /* Probe wrapper */ u16 channel_id; /* Numeric channel identifier, dynamic */ u16 event_id; /* Numeric event identifier, dynamic */ - void (*call)(const struct marker *mdata, void *call_private, ...); + void (*call)(const struct marker *mdata, void *call_private, struct registers *regs, ...); struct marker_probe_closure single; struct marker_probe_closure *multi; const char *tp_name; /* Optional tracepoint name */ @@ -85,6 +85,7 @@ struct marker { static const char __mstrtab_##channel##_##name[] \ __attribute__((section("__markers_strings"))) \ = #channel "\0" #name "\0" format; \ + struct registers regs; \ static struct marker __mark_##channel##_##name \ __attribute__((section("__markers"), aligned(8))) = \ { __mstrtab_##channel##_##name, \ @@ -128,13 +129,13 @@ struct marker { __mark_##channel##_##name.state))) \ (*__mark_##channel##_##name.call) \ (&__mark_##channel##_##name, \ - call_private, ## args); \ + call_private, ®s, ## args); \ } else { \ if (unlikely(_imv_read( \ __mark_##channel##_##name.state))) \ (*__mark_##channel##_##name.call) \ (&__mark_##channel##_##name, \ - call_private, ## args); \ + call_private, ®s, ## args); \ } \ } while (0) @@ -148,7 +149,7 @@ struct marker { DEFINE_MARKER_TP(channel, name, tp_name, tp_cb, format);\ __mark_check_format(format, ## args); \ (*__mark_##channel##_##name.call)(&__mark_##channel##_##name, \ - call_private, ## args); \ + call_private, ®s, ## args); \ } while (0) extern void marker_update_probe_range(struct marker *begin, @@ -242,7 +243,7 @@ static inline void __printf(1, 2) ___mark_check_format(const char *fmt, ...) extern marker_probe_func __mark_empty_function; extern void marker_probe_cb(const struct marker *mdata, - void *call_private, ...); + void *call_private, struct registers *regs, ...); /* * Connect a probe to a marker.