X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=lttv%2Fmodules%2Ftext%2Fsync_chain_batch.c;h=23d3e05f9c833aea7b7cca60d8fa0728c5b84a93;hb=053b4b77c527fa96a7a24967da9b2d0f6ef68cfc;hp=86d4a2aa710c7794e68029b4a52aff0de07d3f1e;hpb=8d7d16dd4f5f6ae09f556a9b0b477baaa93d468c;p=lttv.git diff --git a/lttv/modules/text/sync_chain_batch.c b/lttv/modules/text/sync_chain_batch.c index 86d4a2aa..23d3e05f 100644 --- a/lttv/modules/text/sync_chain_batch.c +++ b/lttv/modules/text/sync_chain_batch.c @@ -284,42 +284,21 @@ void setupSyncChain(LttvTracesetContext* const traceSetContext) struct TracesetChainState* tracesetChainState; SyncState* syncState; GList* result; - int retval; tracesetChainState= g_hash_table_lookup(tracesetChainStates, traceSetContext); syncState= malloc(sizeof(SyncState)); tracesetChainState->syncState= syncState; syncState->traceNb= lttv_traceset_number(traceSetContext->ts); + // Statistics are always on with eval syncState->stats= true; if (optionEvalGraphs) { - char* cwd; - int graphsFp; - // Create the graph directory right away in case the module initialization // functions have something to write in it. syncState->graphsDir= optionEvalGraphsDir; - cwd= changeToGraphDir(optionEvalGraphsDir); - - if ((graphsFp= open("graphs.gnu", O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | - S_IWUSR | S_IXUSR | S_IRGRP | S_IWGRP | S_IXGRP | S_IROTH - | S_IWOTH | S_IXOTH)) == -1) - { - g_error(strerror(errno)); - } - if ((syncState->graphsStream= fdopen(graphsFp, "w")) == NULL) - { - g_error(strerror(errno)); - } - - retval= chdir(cwd); - if (retval == -1) - { - g_error(strerror(errno)); - } - free(cwd); + syncState->graphsStream= createGraphsDir(syncState->graphsDir); } else { @@ -359,7 +338,7 @@ void teardownSyncChain(LttvTracesetContext* const traceSetContext) SyncState* syncState; struct timeval endTime; struct rusage endUsage; - unsigned int i, j; + unsigned int i; int retval; tracesetChainState= g_hash_table_lookup(tracesetChainStates, traceSetContext); @@ -370,67 +349,7 @@ void teardownSyncChain(LttvTracesetContext* const traceSetContext) // Write graphs file if (optionEvalGraphs) { - fprintf(syncState->graphsStream, - "#!/usr/bin/gnuplot\n\n" - "set terminal postscript eps color size 8in,6in\n"); - - // Cover the upper triangular matrix, i is the reference node. - for (i= 0; i < syncState->traceNb; i++) - { - for (j= i + 1; j < syncState->traceNb; j++) - { - long pos1, pos2, trunc; - - fprintf(syncState->graphsStream, - "\nset output \"%03d-%03d.eps\"\n" - "plot \\\n", i, j); - pos1= ftell(syncState->graphsStream); - - if (syncState->analysisModule->writeAnalysisGraphsPlots) - { - syncState->analysisModule->writeAnalysisGraphsPlots(syncState, - i, j); - } - - fflush(syncState->graphsStream); - pos2= ftell(syncState->graphsStream); - if (pos1 != pos2) - { - // Remove the ", \\\n" from the last graph plot line - trunc= pos2 - 4; - } - else - { - // Remove the "plot \\\n" line to avoid creating an invalid - // gnuplot script - trunc= pos2 - 7; - } - - if (ftruncate(fileno(syncState->graphsStream), trunc) == -1) - { - g_error(strerror(errno)); - } - if (fseek(syncState->graphsStream, 0, SEEK_END) == -1) - { - g_error(strerror(errno)); - } - - fprintf(syncState->graphsStream, - "\nset output \"%1$03d-%2$03d.eps\"\n" - "set title \"\"\n", i, j); - - if (syncState->analysisModule->writeAnalysisGraphsOptions) - { - syncState->analysisModule->writeAnalysisGraphsOptions(syncState, - i, j); - } - - if (pos1 != pos2) - { - fprintf(syncState->graphsStream, "replot\n"); - } - } - } + writeGraphsScript(syncState); if (fclose(syncState->graphsStream) != 0) { @@ -438,18 +357,7 @@ void teardownSyncChain(LttvTracesetContext* const traceSetContext) } } - if (syncState->processingModule->printProcessingStats != NULL) - { - syncState->processingModule->printProcessingStats(syncState); - } - if (syncState->matchingModule->printMatchingStats != NULL) - { - syncState->matchingModule->printMatchingStats(syncState); - } - if (syncState->analysisModule->printAnalysisStats != NULL) - { - syncState->analysisModule->printAnalysisStats(syncState); - } + printStats(syncState); printf("Resulting synchronization factors:\n"); for (i= 0; i < syncState->traceNb; i++)