Initialize traceNb in the processing modules
[lttv.git] / lttv / lttv / sync / event_processing_lttng_standard.c
index cc9ada288353797096f954d5ea3361baf7840224..e6457fa4e96a0278b6457834e5639b7b87928e36 100644 (file)
@@ -25,6 +25,7 @@
 #include <linux/if_ether.h>
 #include <math.h>
 #include <netinet/in.h>
+#include <stdarg.h>
 #include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 #include "event_processing_lttng_standard.h"
 
 
-#ifndef g_info
-#define g_info(format...) g_log (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, format)
-#endif
-
-
 // Functions common to all processing modules
-static void initProcessingLTTVStandard(SyncState* const syncState,
-       LttvTracesetContext* const traceSetContext);
+static void initProcessingLTTVStandard(SyncState* const syncState, ...);
 static void destroyProcessingLTTVStandard(SyncState* const syncState);
 
 static void finalizeProcessingLTTVStandard(SyncState* const syncState);
 static void printProcessingStatsLTTVStandard(SyncState* const syncState);
+static void writeProcessingGraphVariablesLTTVStandard(SyncState* const
+       syncState, const unsigned int i);
 static void writeProcessingTraceTraceOptionsLTTVStandard(SyncState* const
        syncState, const unsigned int i, const unsigned int j);
 static void writeProcessingTraceTimeOptionsLTTVStandard(SyncState* const
@@ -65,6 +62,7 @@ static ProcessingModule processingModuleLTTVStandard = {
        .finalizeProcessing= &finalizeProcessingLTTVStandard,
        .printProcessingStats= &printProcessingStatsLTTVStandard,
        .graphFunctions= {
+               .writeVariables= &writeProcessingGraphVariablesLTTVStandard,
                .writeTraceTraceOptions= &writeProcessingTraceTraceOptionsLTTVStandard,
                .writeTraceTimeOptions= &writeProcessingTraceTimeOptionsLTTVStandard,
        },
@@ -93,37 +91,46 @@ static void registerProcessingLTTVStandard()
  *                 pendingRecv
  *                 hookListList
  *                 stats
- *   traceSetContext: set of LTTV traces
+ *   traceSetContext: LttvTracesetContext*, set of LTTV traces
  */
-static void initProcessingLTTVStandard(SyncState* const syncState, LttvTracesetContext*
-       const traceSetContext)
+static void initProcessingLTTVStandard(SyncState* const syncState, ...)
 {
        unsigned int i;
        ProcessingDataLTTVStandard* processingData;
+       va_list ap;
 
        processingData= malloc(sizeof(ProcessingDataLTTVStandard));
        syncState->processingData= processingData;
-       processingData->traceSetContext= traceSetContext;
+       va_start(ap, syncState);
+       processingData->traceSetContext= va_arg(ap, LttvTracesetContext*);
+       va_end(ap);
+       syncState->traceNb=
+               lttv_traceset_number(processingData->traceSetContext->ts);
+       processingData->hookListList= g_array_sized_new(FALSE, FALSE,
+               sizeof(GArray*), syncState->traceNb);
 
-       if (syncState->stats)
-       {
-               processingData->stats= calloc(1, sizeof(ProcessingStatsLTTVStandard));
-       }
-       else
+       processingData->traceNumTable= g_hash_table_new(&g_direct_hash, NULL);
+       for(i= 0; i < syncState->traceNb; i++)
        {
-               processingData->stats= NULL;
+               g_hash_table_insert(processingData->traceNumTable,
+                       processingData->traceSetContext->traces[i]->t, (gpointer) i);
        }
 
-       processingData->traceNumTable= g_hash_table_new(&g_direct_hash, NULL);
-       processingData->hookListList= g_array_sized_new(FALSE, FALSE,
-               sizeof(GArray*), syncState->traceNb);
        processingData->pendingRecv= malloc(sizeof(GHashTable*) *
                syncState->traceNb);
-
        for(i= 0; i < syncState->traceNb; i++)
        {
-               g_hash_table_insert(processingData->traceNumTable,
-                       processingData->traceSetContext->traces[i]->t, (gpointer) i);
+               processingData->pendingRecv[i]= g_hash_table_new_full(&g_direct_hash,
+                       NULL, NULL, &gdnDestroyEvent);
+       }
+
+       if (syncState->stats)
+       {
+               processingData->stats= calloc(1, sizeof(ProcessingStatsLTTVStandard));
+       }
+       else
+       {
+               processingData->stats= NULL;
        }
 
        if (syncState->graphsStream)
@@ -133,7 +140,7 @@ static void initProcessingLTTVStandard(SyncState* const syncState, LttvTracesetC
 
                for(i= 0; i < syncState->traceNb; i++)
                {
-                       LttTrace* traceI= traceSetContext->traces[i]->t;
+                       LttTrace* traceI= processingData->traceSetContext->traces[i]->t;
 
                        processingData->graphs[i].startFreq= traceI->start_freq;
                        processingData->graphs[i].freqScale= traceI->freq_scale;
@@ -144,14 +151,8 @@ static void initProcessingLTTVStandard(SyncState* const syncState, LttvTracesetC
                processingData->graphs= NULL;
        }
 
-       for(i= 0; i < syncState->traceNb; i++)
-       {
-               processingData->pendingRecv[i]= g_hash_table_new_full(&g_direct_hash,
-                       NULL, NULL, &gdnDestroyEvent);
-       }
-
-       registerHooks(processingData->hookListList, traceSetContext,
-               &processEventLTTVStandard, syncState,
+       registerHooks(processingData->hookListList,
+               processingData->traceSetContext, &processEventLTTVStandard, syncState,
                syncState->matchingModule->canMatch);
 }
 
@@ -234,7 +235,7 @@ static void finalizeProcessingLTTVStandard(SyncState* const syncState)
        lttv_traceset_context_compute_time_span(processingData->traceSetContext,
                &processingData->traceSetContext->time_span);
 
-       g_debug("traceset start %ld.%09ld end %ld.%09ld\n",
+       g_debug("traceset start %ld.%09ld end %ld.%09ld",
                processingData->traceSetContext->time_span.start_time.tv_sec,
                processingData->traceSetContext->time_span.start_time.tv_nsec,
                processingData->traceSetContext->time_span.end_time.tv_sec,
@@ -349,7 +350,7 @@ static void partialDestroyProcessingLTTVStandard(SyncState* const syncState)
        for(i= 0; i < syncState->traceNb; i++)
        {
 
-               g_debug("Cleaning up pendingRecv list\n");
+               g_debug("Cleaning up pendingRecv list");
                g_hash_table_destroy(processingData->pendingRecv[i]);
        }
        free(processingData->pendingRecv);
@@ -399,7 +400,7 @@ static gboolean processEventLTTVStandard(void* hookData, void* callData)
        g_assert(g_hash_table_lookup_extended(processingData->traceNumTable,
                        trace, NULL, (gpointer*) &traceNum));
 
-       g_debug("XXXX process event: time: %ld.%09ld trace: %ld (%p) name: %s ",
+       g_debug("Process event: time: %ld.%09ld trace: %ld (%p) name: %s ",
                time.tv_sec, time.tv_nsec, traceNum, trace,
                g_quark_to_string(info->name));
 
@@ -470,7 +471,7 @@ static gboolean processEventLTTVStandard(void* hookData, void* callData)
 
                syncState->matchingModule->matchEvent(syncState, outE);
 
-               g_debug("Output event done\n");
+               g_debug("Output event done");
        }
        else if (info->name == LTT_EVENT_DEV_RECEIVE)
        {
@@ -507,11 +508,7 @@ static gboolean processEventLTTVStandard(void* hookData, void* callData)
                        g_hash_table_replace(processingData->pendingRecv[traceNum], skb,
                                inE);
 
-                       g_debug("Adding inE %p for skb %p to pendingRecv\n", inE, skb);
-               }
-               else
-               {
-                       g_debug("\n");
+                       g_debug("Adding inE %p for skb %p to pendingRecv", inE, skb);
                }
        }
        else if (info->name == LTT_EVENT_TCPV4_RCV_EXTENDED)
@@ -588,7 +585,7 @@ static gboolean processEventLTTVStandard(void* hookData, void* callData)
 
                        syncState->matchingModule->matchEvent(syncState, inE);
 
-                       g_debug("TCP input event %p for skb %p done\n", inE, skb);
+                       g_debug("TCP input event %p for skb %p done", inE, skb);
                }
        }
        else if (info->name == LTT_EVENT_UDPV4_RCV_EXTENDED)
@@ -662,7 +659,7 @@ static gboolean processEventLTTVStandard(void* hookData, void* callData)
 
                        syncState->matchingModule->matchEvent(syncState, inE);
 
-                       g_debug("UDP input event %p for skb %p done\n", inE, skb);
+                       g_debug("UDP input event %p for skb %p done", inE, skb);
                }
        }
        else
@@ -674,6 +671,24 @@ static gboolean processEventLTTVStandard(void* hookData, void* callData)
 }
 
 
+/*
+ * Write the processing-specific variables in the gnuplot script.
+ *
+ * Args:
+ *   syncState:    container for synchronization data
+ *   i:            trace number
+ */
+static void writeProcessingGraphVariablesLTTVStandard(SyncState* const
+       syncState, const unsigned int i)
+{
+       ProcessingDataLTTVStandard* processingData= syncState->processingData;
+       ProcessingGraphsLTTVStandard* traceI= &processingData->graphs[i];
+
+       fprintf(syncState->graphsStream, "clock_freq_%u= %.3f\n", i, (double)
+               traceI->startFreq / traceI->freqScale);
+}
+
+
 /*
  * Write the processing-specific options in the gnuplot script.
  *
@@ -697,15 +712,14 @@ static void writeProcessingTraceTraceOptionsLTTVStandard(SyncState* const
         "set key inside right bottom\n"
         "set xlabel \"Clock %1$u\"\n"
         "set xtics nomirror\n"
-        "set ylabel \"Clock %3$u\"\n"
+        "set ylabel \"Clock %2$u\"\n"
         "set ytics nomirror\n"
                "set x2label \"Clock %1$d (s)\"\n"
-               "set x2range [GPVAL_X_MIN / %2$.1f : GPVAL_X_MAX / %2$.1f]\n"
+               "set x2range [GPVAL_X_MIN / clock_freq_%1$u : GPVAL_X_MAX / clock_freq_%1$u]\n"
                "set x2tics\n"
-               "set y2label \"Clock %3$d (s)\"\n"
-               "set y2range [GPVAL_Y_MIN / %4$.1f : GPVAL_Y_MAX / %4$.1f]\n"
-               "set y2tics\n", i, (double) traceI->startFreq / traceI->freqScale, j,
-               (double) traceJ->startFreq / traceJ->freqScale);
+               "set y2label \"Clock %2$d (s)\"\n"
+               "set y2range [GPVAL_Y_MIN / clock_freq_%2$u : GPVAL_Y_MAX / clock_freq_%2$u]\n"
+               "set y2tics\n", i, j);
 }
 
 
@@ -735,6 +749,6 @@ static void writeProcessingTraceTimeOptionsLTTVStandard(SyncState* const
         "set ylabel \"time (s)\"\n"
         "set ytics nomirror\n"
                "set x2label \"Clock %1$d (s)\"\n"
-               "set x2range [GPVAL_X_MIN / %2$.1f : GPVAL_X_MAX / %2$.1f]\n"
-               "set x2tics\n", i, (double) traceI->startFreq / traceI->freqScale);
+               "set x2range [GPVAL_X_MIN / clock_freq_%1$u : GPVAL_X_MAX / clock_freq_%1$u]\n"
+               "set x2tics\n", i);
 }
This page took 0.027541 seconds and 4 git commands to generate.