|
|
@@ -20,6 +20,8 @@
|
|
|
#define __FXT_H__
|
|
|
|
|
|
|
|
|
+/** @file */
|
|
|
+
|
|
|
#ifndef _GNU_SOURCE
|
|
|
#define _GNU_SOURCE 1 /* ou _BSD_SOURCE ou _SVID_SOURCE */
|
|
|
#endif
|
|
|
@@ -311,13 +313,13 @@ static inline unsigned long _starpu_fxt_get_submit_order(void)
|
|
|
|
|
|
long _starpu_gettid(void);
|
|
|
|
|
|
-/* Initialize the FxT library. */
|
|
|
+/** Initialize the FxT library. */
|
|
|
void _starpu_fxt_init_profiling(uint64_t trace_buffer_size);
|
|
|
|
|
|
-/* Stop the FxT library, and generate the trace file. */
|
|
|
+/** Stop the FxT library, and generate the trace file. */
|
|
|
void _starpu_stop_fxt_profiling(void);
|
|
|
|
|
|
-/* Generate the trace file. Used when catching signals SIGINT and SIGSEGV */
|
|
|
+/** Generate the trace file. Used when catching signals SIGINT and SIGSEGV */
|
|
|
void _starpu_fxt_dump_file(void);
|
|
|
|
|
|
#ifdef FUT_NEEDS_COMMIT
|
|
|
@@ -326,15 +328,11 @@ void _starpu_fxt_dump_file(void);
|
|
|
#define _STARPU_FUT_COMMIT(size) do { } while (0)
|
|
|
#endif
|
|
|
|
|
|
-#ifdef FUT_FULL_PROBE1STR
|
|
|
-#define _STARPU_FUT_FULL_PROBE1STR(KEYMASK, CODE, P1, str) FUT_FULL_PROBE1STR(CODE, P1, str)
|
|
|
+#ifdef FUT_ALWAYS_PROBE1STR
|
|
|
+#define _STARPU_FUT_ALWAYS_PROBE1STR(CODE, P1, str) FUT_RAW_ALWAYS_PROBE1STR(CODE, P1, str)
|
|
|
#else
|
|
|
-/* Sometimes we need something a little more specific than the wrappers from
|
|
|
- * FxT: these macro permit to put add an event with 3 (or 4) numbers followed
|
|
|
- * by a string. */
|
|
|
-#define _STARPU_FUT_FULL_PROBE1STR(KEYMASK, CODE, P1, str) \
|
|
|
+#define _STARPU_FUT_ALWAYS_PROBE1STR(CODE, P1, str) \
|
|
|
do { \
|
|
|
- if(KEYMASK & fut_active) { \
|
|
|
/* No more than FXT_MAX_PARAMS args are allowed */ \
|
|
|
/* we add a \0 just in case ... */ \
|
|
|
size_t len = STARPU_MIN(strlen(str)+1, (FXT_MAX_PARAMS - 1)*sizeof(unsigned long));\
|
|
|
@@ -347,19 +345,28 @@ do { \
|
|
|
snprintf((char *)futargs, len, "%s", str); \
|
|
|
((char *)futargs)[len - 1] = '\0'; \
|
|
|
_STARPU_FUT_COMMIT(total_len); \
|
|
|
- } \
|
|
|
} while (0);
|
|
|
#endif
|
|
|
|
|
|
-#ifdef FUT_FULL_PROBE2STR
|
|
|
-#define _STARPU_FUT_FULL_PROBE2STR(KEYMASK, CODE, P1, P2, str) FUT_FULL_PROBE2STR(CODE, P1, P2, str)
|
|
|
+#ifdef FUT_FULL_PROBE1STR
|
|
|
+#define _STARPU_FUT_FULL_PROBE1STR(KEYMASK, CODE, P1, str) FUT_FULL_PROBE1STR(CODE, P1, str)
|
|
|
#else
|
|
|
-/* Sometimes we need something a little more specific than the wrappers from
|
|
|
+/** Sometimes we need something a little more specific than the wrappers from
|
|
|
* FxT: these macro permit to put add an event with 3 (or 4) numbers followed
|
|
|
* by a string. */
|
|
|
-#define _STARPU_FUT_FULL_PROBE2STR(KEYMASK, CODE, P1, P2, str) \
|
|
|
+#define _STARPU_FUT_FULL_PROBE1STR(KEYMASK, CODE, P1, str) \
|
|
|
+do { \
|
|
|
+ if(KEYMASK & fut_active) { \
|
|
|
+ _STARPU_FUT_ALWAYS_PROBE1STR(CODE, P1, str); \
|
|
|
+ } \
|
|
|
+} while (0);
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifdef FUT_ALWAYS_PROBE2STR
|
|
|
+#define _STARPU_FUT_ALWAYS_PROBE2STR(CODE, P1, P2, str) FUT_RAW_ALWAYS_PROBE2STR(CODE, P1, P2, str)
|
|
|
+#else
|
|
|
+#define _STARPU_FUT_ALWAYS_PROBE2STR(CODE, P1, P2, str) \
|
|
|
do { \
|
|
|
- if(KEYMASK & fut_active) { \
|
|
|
/* No more than FXT_MAX_PARAMS args are allowed */ \
|
|
|
/* we add a \0 just in case ... */ \
|
|
|
size_t len = STARPU_MIN(strlen(str)+1, (FXT_MAX_PARAMS - 2)*sizeof(unsigned long));\
|
|
|
@@ -373,16 +380,25 @@ do { \
|
|
|
snprintf((char *)futargs, len, "%s", str); \
|
|
|
((char *)futargs)[len - 1] = '\0'; \
|
|
|
_STARPU_FUT_COMMIT(total_len); \
|
|
|
+} while (0);
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifdef FUT_FULL_PROBE2STR
|
|
|
+#define _STARPU_FUT_FULL_PROBE2STR(KEYMASK, CODE, P1, P2, str) FUT_FULL_PROBE2STR(CODE, P1, P2, str)
|
|
|
+#else
|
|
|
+#define _STARPU_FUT_FULL_PROBE2STR(KEYMASK, CODE, P1, P2, str) \
|
|
|
+do { \
|
|
|
+ if(KEYMASK & fut_active) { \
|
|
|
+ _STARPU_FUT_ALWAYS_PROBE2STR(CODE, P1, P2, str); \
|
|
|
} \
|
|
|
} while (0);
|
|
|
#endif
|
|
|
|
|
|
-#ifdef FUT_FULL_PROBE3STR
|
|
|
-#define _STARPU_FUT_FULL_PROBE3STR(KEYMASK, CODE, P1, P2, P3, str) FUT_FULL_PROBE3STR(CODE, P1, P2, P3, str)
|
|
|
+#ifdef FUT_ALWAYS_PROBE3STR
|
|
|
+#define _STARPU_FUT_ALWAYS_PROBE3STR(CODE, P1, P2, P3, str) FUT_RAW_ALWAYS_PROBE3STR(CODE, P1, P2, P3, str)
|
|
|
#else
|
|
|
-#define _STARPU_FUT_FULL_PROBE3STR(KEYMASK, CODE, P1, P2, P3, str) \
|
|
|
+#define _STARPU_FUT_ALWAYS_PROBE3STR(CODE, P1, P2, P3, str) \
|
|
|
do { \
|
|
|
- if(KEYMASK & fut_active) { \
|
|
|
/* No more than FXT_MAX_PARAMS args are allowed */ \
|
|
|
/* we add a \0 just in case ... */ \
|
|
|
size_t len = STARPU_MIN(strlen(str)+1, (FXT_MAX_PARAMS - 3)*sizeof(unsigned long));\
|
|
|
@@ -397,16 +413,25 @@ do { \
|
|
|
snprintf((char *)futargs, len, "%s", str); \
|
|
|
((char *)futargs)[len - 1] = '\0'; \
|
|
|
_STARPU_FUT_COMMIT(total_len); \
|
|
|
+} while (0);
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifdef FUT_FULL_PROBE3STR
|
|
|
+#define _STARPU_FUT_FULL_PROBE3STR(KEYMASK, CODE, P1, P2, P3, str) FUT_FULL_PROBE3STR(CODE, P1, P2, P3, str)
|
|
|
+#else
|
|
|
+#define _STARPU_FUT_FULL_PROBE3STR(KEYMASK, CODE, P1, P2, P3, str) \
|
|
|
+do { \
|
|
|
+ if(KEYMASK & fut_active) { \
|
|
|
+ _STARPU_FUT_ALWAYS_PROBE3STR(CODE, P1, P2, P3, str); \
|
|
|
} \
|
|
|
} while (0);
|
|
|
#endif
|
|
|
|
|
|
-#ifdef FUT_FULL_PROBE4STR
|
|
|
-#define _STARPU_FUT_FULL_PROBE4STR(KEYMASK, CODE, P1, P2, P3, P4, str) FUT_FULL_PROBE4STR(CODE, P1, P2, P3, P4, str)
|
|
|
+#ifdef FUT_ALWAYS_PROBE4STR
|
|
|
+#define _STARPU_FUT_ALWAYS_PROBE4STR(CODE, P1, P2, P3, P4, str) FUT_RAW_ALWAYS_PROBE4STR(CODE, P1, P2, P3, P4, str)
|
|
|
#else
|
|
|
-#define _STARPU_FUT_FULL_PROBE4STR(KEYMASK, CODE, P1, P2, P3, P4, str) \
|
|
|
+#define _STARPU_FUT_ALWAYS_PROBE4STR(CODE, P1, P2, P3, P4, str) \
|
|
|
do { \
|
|
|
- if(KEYMASK & fut_active) { \
|
|
|
/* No more than FXT_MAX_PARAMS args are allowed */ \
|
|
|
/* we add a \0 just in case ... */ \
|
|
|
size_t len = STARPU_MIN(strlen(str)+1, (FXT_MAX_PARAMS - 4)*sizeof(unsigned long));\
|
|
|
@@ -422,16 +447,25 @@ do { \
|
|
|
snprintf((char *)futargs, len, "%s", str); \
|
|
|
((char *)futargs)[len - 1] = '\0'; \
|
|
|
_STARPU_FUT_COMMIT(total_len); \
|
|
|
+} while (0);
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifdef FUT_FULL_PROBE4STR
|
|
|
+#define _STARPU_FUT_FULL_PROBE4STR(KEYMASK, CODE, P1, P2, P3, P4, str) FUT_FULL_PROBE4STR(CODE, P1, P2, P3, P4, str)
|
|
|
+#else
|
|
|
+#define _STARPU_FUT_FULL_PROBE4STR(KEYMASK, CODE, P1, P2, P3, P4, str) \
|
|
|
+do { \
|
|
|
+ if(KEYMASK & fut_active) { \
|
|
|
+ _STARPU_FUT_ALWAYS_PROBE4STR(CODE, P1, P2, P3, P4, str); \
|
|
|
} \
|
|
|
} while (0);
|
|
|
#endif
|
|
|
|
|
|
-#ifdef FUT_FULL_PROBE5STR
|
|
|
-#define _STARPU_FUT_FULL_PROBE5STR(KEYMASK, CODE, P1, P2, P3, P4, P5, str) FUT_FULL_PROBE5STR(CODE, P1, P2, P3, P4, P5, str)
|
|
|
+#ifdef FUT_ALWAYS_PROBE5STR
|
|
|
+#define _STARPU_FUT_ALWAYS_PROBE5STR(CODE, P1, P2, P3, P4, P5, str) FUT_RAW_ALWAYS_PROBE5STR(CODE, P1, P2, P3, P4, P5, str)
|
|
|
#else
|
|
|
-#define _STARPU_FUT_FULL_PROBE5STR(KEYMASK, CODE, P1, P2, P3, P4, P5, str) \
|
|
|
+#define _STARPU_FUT_ALWAYS_PROBE5STR(CODE, P1, P2, P3, P4, P5, str) \
|
|
|
do { \
|
|
|
- if(KEYMASK & fut_active) { \
|
|
|
/* No more than FXT_MAX_PARAMS args are allowed */ \
|
|
|
/* we add a \0 just in case ... */ \
|
|
|
size_t len = STARPU_MIN(strlen(str)+1, (FXT_MAX_PARAMS - 5)*sizeof(unsigned long));\
|
|
|
@@ -448,16 +482,25 @@ do { \
|
|
|
snprintf((char *)futargs, len, "%s", str); \
|
|
|
((char *)futargs)[len - 1] = '\0'; \
|
|
|
_STARPU_FUT_COMMIT(total_len); \
|
|
|
+} while (0);
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifdef FUT_FULL_PROBE5STR
|
|
|
+#define _STARPU_FUT_FULL_PROBE5STR(KEYMASK, CODE, P1, P2, P3, P4, P5, str) FUT_FULL_PROBE5STR(CODE, P1, P2, P3, P4, P5, str)
|
|
|
+#else
|
|
|
+#define _STARPU_FUT_FULL_PROBE5STR(KEYMASK, CODE, P1, P2, P3, P4, P5, str) \
|
|
|
+do { \
|
|
|
+ if(KEYMASK & fut_active) { \
|
|
|
+ _STARPU_FUT_ALWAYS_PROBE5STR(CODE, P1, P2, P3, P4, P5, str); \
|
|
|
} \
|
|
|
} while (0);
|
|
|
#endif
|
|
|
|
|
|
-#ifdef FUT_FULL_PROBE6STR
|
|
|
-#define _STARPU_FUT_FULL_PROBE6STR(KEYMASK, CODE, P1, P2, P3, P4, P5, P6, str) FUT_FULL_PROBE6STR(CODE, P1, P2, P3, P4, P5, P6, str)
|
|
|
+#ifdef FUT_ALWAYS_PROBE6STR
|
|
|
+#define _STARPU_FUT_ALWAYS_PROBE6STR(CODE, P1, P2, P3, P4, P5, P6, str) FUT_RAW_ALWAYS_PROBE6STR(CODE, P1, P2, P3, P4, P5, P6, str)
|
|
|
#else
|
|
|
-#define _STARPU_FUT_FULL_PROBE6STR(KEYMASK, CODE, P1, P2, P3, P4, P5, P6, str) \
|
|
|
+#define _STARPU_FUT_ALWAYS_PROBE6STR(CODE, P1, P2, P3, P4, P5, P6, str) \
|
|
|
do { \
|
|
|
- if(KEYMASK & fut_active) { \
|
|
|
/* No more than FXT_MAX_PARAMS args are allowed */ \
|
|
|
/* we add a \0 just in case ... */ \
|
|
|
size_t len = STARPU_MIN(strlen(str)+1, (FXT_MAX_PARAMS - 6)*sizeof(unsigned long));\
|
|
|
@@ -475,16 +518,25 @@ do { \
|
|
|
snprintf((char *)futargs, len, "%s", str); \
|
|
|
((char *)futargs)[len - 1] = '\0'; \
|
|
|
_STARPU_FUT_COMMIT(total_len); \
|
|
|
+} while (0);
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifdef FUT_FULL_PROBE6STR
|
|
|
+#define _STARPU_FUT_FULL_PROBE6STR(KEYMASK, CODE, P1, P2, P3, P4, P5, P6, str) FUT_FULL_PROBE6STR(CODE, P1, P2, P3, P4, P5, P6, str)
|
|
|
+#else
|
|
|
+#define _STARPU_FUT_FULL_PROBE6STR(KEYMASK, CODE, P1, P2, P3, P4, P5, P6, str) \
|
|
|
+do { \
|
|
|
+ if(KEYMASK & fut_active) { \
|
|
|
+ _STARPU_FUT_ALWAYS_PROBE6STR(CODE, P1, P2, P3, P4, P5, P6, str); \
|
|
|
} \
|
|
|
} while (0);
|
|
|
#endif
|
|
|
|
|
|
-#ifdef FUT_FULL_PROBE7STR
|
|
|
-#define _STARPU_FUT_FULL_PROBE7STR(KEYMASK, CODE, P1, P2, P3, P4, P5, P6, P7, str) FUT_FULL_PROBE7STR(CODE, P1, P2, P3, P4, P5, P6, P7, str)
|
|
|
+#ifdef FUT_ALWAYS_PROBE7STR
|
|
|
+#define _STARPU_FUT_ALWAYS_PROBE7STR(CODE, P1, P2, P3, P4, P5, P6, P7, str) FUT_RAW_ALWAYS_PROBE7STR(CODE, P1, P2, P3, P4, P5, P6, P7, str)
|
|
|
#else
|
|
|
-#define _STARPU_FUT_FULL_PROBE7STR(KEYMASK, CODE, P1, P2, P3, P4, P5, P6, P7, str) \
|
|
|
+#define _STARPU_FUT_ALWAYS_PROBE7STR(CODE, P1, P2, P3, P4, P5, P6, P7, str) \
|
|
|
do { \
|
|
|
- if(KEYMASK & fut_active) { \
|
|
|
/* No more than FXT_MAX_PARAMS args are allowed */ \
|
|
|
/* we add a \0 just in case ... */ \
|
|
|
size_t len = STARPU_MIN(strlen(str)+1, (FXT_MAX_PARAMS - 7)*sizeof(unsigned long));\
|
|
|
@@ -503,6 +555,16 @@ do { \
|
|
|
snprintf((char *)futargs, len, "%s", str); \
|
|
|
((char *)futargs)[len - 1] = '\0'; \
|
|
|
_STARPU_FUT_COMMIT(total_len); \
|
|
|
+} while (0);
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifdef FUT_FULL_PROBE7STR
|
|
|
+#define _STARPU_FUT_FULL_PROBE7STR(KEYMASK, CODE, P1, P2, P3, P4, P5, P6, P7, str) FUT_FULL_PROBE7STR(CODE, P1, P2, P3, P4, P5, P6, P7, str)
|
|
|
+#else
|
|
|
+#define _STARPU_FUT_FULL_PROBE7STR(KEYMASK, CODE, P1, P2, P3, P4, P5, P6, P7, str) \
|
|
|
+do { \
|
|
|
+ if(KEYMASK & fut_active) { \
|
|
|
+ _STARPU_FUT_ALWAYS_PROBE7STR(CODE, P1, P2, P3, P4, P5, P6, P7, str); \
|
|
|
} \
|
|
|
} while (0);
|
|
|
#endif
|
|
|
@@ -1203,10 +1265,10 @@ do { \
|
|
|
FUT_FULL_PROBE4(_STARPU_FUT_KEYMASK_SCHED, _STARPU_FUT_SCHED_COMPONENT_POP_PRIO, _starpu_gettid(), workerid, ntasks, exp_len);
|
|
|
|
|
|
#define _STARPU_TRACE_SCHED_COMPONENT_NEW(component) \
|
|
|
- _STARPU_FUT_FULL_PROBE1STR(_STARPU_FUT_KEYMASK_SCHED, _STARPU_FUT_SCHED_COMPONENT_NEW, component, (component)->name);
|
|
|
+ _STARPU_FUT_ALWAYS_PROBE1STR(_STARPU_FUT_SCHED_COMPONENT_NEW, component, (component)->name);
|
|
|
|
|
|
#define _STARPU_TRACE_SCHED_COMPONENT_CONNECT(parent, child) \
|
|
|
- FUT_FULL_PROBE2(_STARPU_FUT_KEYMASK_SCHED, _STARPU_FUT_SCHED_COMPONENT_CONNECT, parent, child);
|
|
|
+ FUT_RAW_ALWAYS_PROBE2(FUT_CODE(_STARPU_FUT_SCHED_COMPONENT_CONNECT,2), parent, child);
|
|
|
|
|
|
#define _STARPU_TRACE_SCHED_COMPONENT_PUSH(from, to, task) \
|
|
|
FUT_FULL_PROBE5(_STARPU_FUT_KEYMASK_SCHED, _STARPU_FUT_SCHED_COMPONENT_PUSH, _starpu_gettid(), from, to, task, (task)->priority);
|