X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=lttv%2Flttv%2Fsync%2Fevent_matching_tcp.c;h=2d4fe51827cd88279562560e1a84267eb25dbbfd;hb=7b20eed1e2a33658249baf49488b6c93028639f9;hp=a8fdf5f007683630abfb967c0e29ac1a7889ad9f;hpb=76be6fc24daf61767bf7f0c2e64f4691fbb56c63;p=lttv.git diff --git a/lttv/lttv/sync/event_matching_tcp.c b/lttv/lttv/sync/event_matching_tcp.c index a8fdf5f0..2d4fe518 100644 --- a/lttv/lttv/sync/event_matching_tcp.c +++ b/lttv/lttv/sync/event_matching_tcp.c @@ -1,19 +1,18 @@ /* This file is part of the Linux Trace Toolkit viewer - * Copyright (C) 2009 Benjamin Poirier + * Copyright (C) 2009, 2010 Benjamin Poirier * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License Version 2 as - * published by the Free Software Foundation; + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 2.1 of the License, or (at + * your option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + * License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, - * MA 02111-1307, USA. + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . */ #ifdef HAVE_CONFIG_H @@ -21,6 +20,7 @@ #endif #include +#include #include #include #include @@ -31,26 +31,17 @@ #include "event_matching_tcp.h" -#ifndef g_info -#define g_info(format...) g_log (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, format) -#endif - - // Functions common to all matching modules static void initMatchingTCP(SyncState* const syncState); static void destroyMatchingTCP(SyncState* const syncState); static void matchEventTCP(SyncState* const syncState, Event* const event); -static GArray* finalizeMatchingTCP(SyncState* const syncState); +static AllFactors* finalizeMatchingTCP(SyncState* const syncState); static void printMatchingStatsTCP(SyncState* const syncState); -static void writeMatchingGraphsPlotsTCP(FILE* stream, SyncState* const - syncState, const unsigned int i, const unsigned int j); -static void writeMatchingGraphsOptionsTCP(FILE* stream, SyncState* const - syncState, const unsigned int i, const unsigned int j); +static void writeMatchingGraphsPlotsTCPMessages(SyncState* const syncState, + const unsigned int i, const unsigned int j); // Functions specific to this module -static void registerMatchingTCP() __attribute__((constructor (101))); - static void matchEvents(SyncState* const syncState, Event* const event, GHashTable* const unMatchedList, GHashTable* const unMatchedOppositeList, const size_t fieldOffset, const size_t @@ -76,15 +67,16 @@ static MatchingModule matchingModuleTCP = { .matchEvent= &matchEventTCP, .finalizeMatching= &finalizeMatchingTCP, .printMatchingStats= &printMatchingStatsTCP, - .writeMatchingGraphsPlots= &writeMatchingGraphsPlotsTCP, - .writeMatchingGraphsOptions= &writeMatchingGraphsOptionsTCP, + .graphFunctions= { + .writeTraceTraceForePlots= &writeMatchingGraphsPlotsTCPMessages, + } }; /* * Matching module registering function */ -static void registerMatchingTCP() +void registerMatchingTCP() { g_queue_push_tail(&matchingModules, &matchingModuleTCP); } @@ -139,7 +131,7 @@ static void initMatchingTCP(SyncState* const syncState) matchingData->stats= NULL; } - if (syncState->graphs) + if (syncState->graphsStream) { openGraphDataFiles(syncState); } @@ -219,7 +211,7 @@ static void partialDestroyMatchingTCP(SyncState* const syncState) g_hash_table_destroy(matchingData->unMatchedOutE); g_hash_table_destroy(matchingData->unAcked); - if (syncState->graphs && matchingData->messagePoints) + if (syncState->graphsStream && matchingData->messagePoints) { closeGraphDataFiles(syncState); } @@ -258,15 +250,15 @@ static void matchEventTCP(SyncState* const syncState, Event* const event) /* - * Call the partial matching destroyer and Obtain the factors from downstream + * Call the partial matching destroyer and obtain the factors from downstream * * Args: * syncState container for synchronization data. * * Returns: - * Factors[traceNb] synchronization factors for each trace + * AllFactors* synchronization factors for each trace pair */ -static GArray* finalizeMatchingTCP(SyncState* const syncState) +static AllFactors* finalizeMatchingTCP(SyncState* const syncState) { partialDestroyMatchingTCP(syncState); @@ -275,8 +267,8 @@ static GArray* finalizeMatchingTCP(SyncState* const syncState) /* - * Print statistics related to matching and downstream modules. Must be - * called after finalizeMatching. + * Print statistics related to matching. Must be called after + * finalizeMatching. * * Args: * syncState container for synchronization data. @@ -318,11 +310,6 @@ static void printMatchingStatsTCP(SyncState* const syncState) printf("\ttotal synchronization exchanges: %u\n", matchingData->stats->totExchangeSync); } - - if (syncState->analysisModule->printAnalysisStats != NULL) - { - syncState->analysisModule->printAnalysisStats(syncState); - } } @@ -379,7 +366,7 @@ static void matchEvents(SyncState* const syncState, Event* const event, return; } - if (syncState->graphs) + if (syncState->graphsStream) { writeMessagePoint(matchingData->messagePoints[packet->inE->traceNum][packet->outE->traceNum], packet); @@ -597,7 +584,7 @@ static void openGraphDataFiles(SyncState* const syncState) matchingData= (MatchingDataTCP*) syncState->matchingData; - cwd= changeToGraphDir(syncState->graphs); + cwd= changeToGraphsDir(syncState->graphsDir); matchingData->messagePoints= malloc(syncState->traceNb * sizeof(FILE**)); for (i= 0; i < syncState->traceNb; i++) @@ -617,7 +604,7 @@ static void openGraphDataFiles(SyncState* const syncState) if ((matchingData->messagePoints[i][j]= fopen(name, "w")) == NULL) { - g_error(strerror(errno)); + g_error("%s", strerror(errno)); } } } @@ -626,7 +613,7 @@ static void openGraphDataFiles(SyncState* const syncState) retval= chdir(cwd); if (retval == -1) { - g_error(strerror(errno)); + g_error("%s", strerror(errno)); } free(cwd); } @@ -637,11 +624,11 @@ static void openGraphDataFiles(SyncState* const syncState) * * Args: * stream: FILE*, file pointer where to write the point - * message: message for which to write the point + * message: message for which to write the point */ static void writeMessagePoint(FILE* stream, const Message* const message) { - LttCycleCount x, y; + uint64_t x, y; if (message->inE->traceNum < message->outE->traceNum) { @@ -656,7 +643,7 @@ static void writeMessagePoint(FILE* stream, const Message* const message) y= message->inE->cpuTime; } - fprintf(stream, "%20llu %20llu\n", x, y); + fprintf(stream, "%20" PRIu64 " %20" PRIu64 "\n", x, y); } @@ -689,7 +676,7 @@ static void closeGraphDataFiles(SyncState* const syncState) retval= fclose(matchingData->messagePoints[i][j]); if (retval != 0) { - g_error(strerror(errno)); + g_error("%s", strerror(errno)); } } } @@ -702,50 +689,21 @@ static void closeGraphDataFiles(SyncState* const syncState) /* - * Write the matching-specific graph lines in the gnuplot script. Call the - * downstream module's graph function. + * Write the matching-specific graph lines in the gnuplot script. * * Args: - * stream: stream where to write the data * syncState: container for synchronization data * i: first trace number * j: second trace number, garanteed to be larger than i */ -static void writeMatchingGraphsPlotsTCP(FILE* stream, SyncState* const - syncState, const unsigned int i, const unsigned int j) +static void writeMatchingGraphsPlotsTCPMessages(SyncState* const syncState, + const unsigned int i, const unsigned int j) { - fprintf(stream, + fprintf(syncState->graphsStream, "\t\"matching_tcp-%1$03d_to_%2$03d.data\" " "title \"Sent messages\" with points linetype 4 " "linecolor rgb \"#98fc66\" pointtype 9 pointsize 2, \\\n" "\t\"matching_tcp-%2$03d_to_%1$03d.data\" " "title \"Received messages\" with points linetype 4 " "linecolor rgb \"#6699cc\" pointtype 11 pointsize 2, \\\n", i, j); - - if (syncState->analysisModule->writeAnalysisGraphsPlots != NULL) - { - syncState->analysisModule->writeAnalysisGraphsPlots(stream, syncState, - i, j); - } -} - - -/* - * Write the matching-specific options in the gnuplot script (none). Call the - * downstream module's options function. - * - * Args: - * stream: stream where to write the data - * syncState: container for synchronization data - * i: first trace number - * j: second trace number, garanteed to be larger than i - */ -static void writeMatchingGraphsOptionsTCP(FILE* stream, SyncState* const - syncState, const unsigned int i, const unsigned int j) -{ - if (syncState->analysisModule->writeAnalysisGraphsOptions != NULL) - { - syncState->analysisModule->writeAnalysisGraphsOptions(stream, - syncState, i, j); - } }