X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=lttv%2Flttv%2Fsync%2Fevent_processing_lttng_standard.c;h=55806dfa8922826c814a4c6ed5c6eee2e265e606;hb=2f961b65e3422f23019286e9531b0a40070278ea;hp=1bec81f0ef01058a445adb91a88f6945a3231e4b;hpb=d5b038ec901e9753a8569f33516a49361c54254c;p=lttv.git diff --git a/lttv/lttv/sync/event_processing_lttng_standard.c b/lttv/lttv/sync/event_processing_lttng_standard.c index 1bec81f0..55806dfa 100644 --- a/lttv/lttv/sync/event_processing_lttng_standard.c +++ b/lttv/lttv/sync/event_processing_lttng_standard.c @@ -22,9 +22,9 @@ #include #endif -#include #include #include +#include #include #include #include @@ -34,10 +34,14 @@ #include "event_processing_lttng_standard.h" +/* IPv4 Ethertype, taken from , unlikely to change as it's + * defined by IANA: http://www.iana.org/assignments/ethernet-numbers + */ +#define ETH_P_IP 0x0800 + // 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); @@ -50,7 +54,6 @@ static void writeProcessingTraceTimeOptionsLTTVStandard(SyncState* const syncState, const unsigned int i, const unsigned int j); // Functions specific to this module -static void registerProcessingLTTVStandard() __attribute__((constructor (102))); static gboolean processEventLTTVStandard(void* hookData, void* callData); static void partialDestroyProcessingLTTVStandard(SyncState* const syncState); @@ -72,7 +75,7 @@ static ProcessingModule processingModuleLTTVStandard = { /* * Processing Module registering function */ -static void registerProcessingLTTVStandard() +void registerProcessingLTTVStandard() { g_queue_push_tail(&processingModules, &processingModuleLTTVStandard); @@ -91,37 +94,47 @@ 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, + GUINT_TO_POINTER(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) @@ -131,7 +144,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; @@ -142,14 +155,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); } @@ -381,6 +388,7 @@ static gboolean processEventLTTVStandard(void* hookData, void* callData) struct marker_info* info; SyncState* syncState; ProcessingDataLTTVStandard* processingData; + gpointer traceNumP; traceHook= (LttvTraceHook*) hookData; tfc= (LttvTracefileContext*) callData; @@ -395,7 +403,8 @@ static gboolean processEventLTTVStandard(void* hookData, void* callData) wTime.nanosec= time.tv_nsec; g_assert(g_hash_table_lookup_extended(processingData->traceNumTable, - trace, NULL, (gpointer*) &traceNum)); + trace, NULL, &traceNumP)); + traceNum= GPOINTER_TO_INT(traceNumP); g_debug("Process event: time: %ld.%09ld trace: %ld (%p) name: %s ", time.tv_sec, time.tv_nsec, traceNum, trace, @@ -697,14 +706,6 @@ static void writeProcessingGraphVariablesLTTVStandard(SyncState* const static void writeProcessingTraceTraceOptionsLTTVStandard(SyncState* const syncState, const unsigned int i, const unsigned int j) { - ProcessingDataLTTVStandard* processingData; - ProcessingGraphsLTTVStandard* traceI, * traceJ; - - processingData= (ProcessingDataLTTVStandard*) syncState->processingData; - - traceI= &processingData->graphs[i]; - traceJ= &processingData->graphs[j]; - fprintf(syncState->graphsStream, "set key inside right bottom\n" "set xlabel \"Clock %1$u\"\n" @@ -731,14 +732,6 @@ static void writeProcessingTraceTraceOptionsLTTVStandard(SyncState* const static void writeProcessingTraceTimeOptionsLTTVStandard(SyncState* const syncState, const unsigned int i, const unsigned int j) { - ProcessingDataLTTVStandard* processingData; - ProcessingGraphsLTTVStandard* traceI, * traceJ; - - processingData= (ProcessingDataLTTVStandard*) syncState->processingData; - - traceI= &processingData->graphs[i]; - traceJ= &processingData->graphs[j]; - fprintf(syncState->graphsStream, "set key inside right bottom\n" "set xlabel \"Clock %1$u\"\n"