PAJE_PopState,
PAJE_StartLink,
PAJE_EndLink,
- PAJE_NewEvent,
+ PAJE_NewEvent
} e_event_type;
typedef struct paje_event *paje_event_t;
{
char *filename = TRACE_get_filename();
tracing_file = fopen(filename, "w");
- xbt_assert (tracing_file != NULL, "Tracefile %s could not be opened for writing.", filename);
+ if (tracing_file == NULL){
+ THROWF (system_error, 1, "Tracefile %s could not be opened for writing.", filename);
+ }
XBT_DEBUG("Filename %s is open for writing", filename);
{
fclose(tracing_file);
char *filename = TRACE_get_filename();
+ xbt_dynar_free (&buffer);
XBT_DEBUG("Filename %s is closed", filename);
}
//dumps the trace file until the timestamp TRACE_last_timestamp_to_dump
void TRACE_paje_dump_buffer (int force)
{
+ if (!TRACE_is_enabled()) return;
XBT_DEBUG("%s: dump until %f. starts", __FUNCTION__, TRACE_last_timestamp_to_dump);
if (force){
paje_event_t event;
buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
}else{
paje_event_t event;
- while (xbt_dynar_length (buffer) > 0){
+ while (!xbt_dynar_is_empty(buffer)){
double head_timestamp = (*(paje_event_t*)xbt_dynar_get_ptr(buffer, 0))->timestamp;
if (head_timestamp > TRACE_last_timestamp_to_dump){
break;
%%EndEventDef \n\
%%EventDef PajeDefineEventType %d \n\
%% Alias string \n\
-%% EntityType string \n\
+%% ContainerType string \n\
%% Name string \n\
%% Color color \n\
%%EndEventDef \n\
%%EventDef PajeDestroyContainer %d \n\
%% Time date \n\
%% Type string \n\
-%% Container string \n\
+%% Name string \n\
%%EndEventDef \n\
%%EventDef PajeSetVariable %d \n\
%% Time date \n\
-%% EntityType string \n\
+%% Type string \n\
%% Container string \n\
-%% Value string \n\
+%% Value double \n\
%%EndEventDef\n\
%%EventDef PajeAddVariable %d \n\
%% Time date \n\
-%% EntityType string \n\
+%% Type string \n\
%% Container string \n\
-%% Value string \n\
+%% Value double \n\
%%EndEventDef\n\
%%EventDef PajeSubVariable %d \n\
%% Time date \n\
-%% EntityType string \n\
+%% Type string \n\
%% Container string \n\
-%% Value string \n\
+%% Value double \n\
%%EndEventDef\n\
%%EventDef PajeSetState %d \n\
%% Time date \n\
-%% EntityType string \n\
+%% Type string \n\
%% Container string \n\
%% Value string \n\
%%EndEventDef\n\
%%EventDef PajePushState %d \n\
%% Time date \n\
-%% EntityType string \n\
+%% Type string \n\
%% Container string \n\
%% Value string \n\
%%EndEventDef\n\
%%EventDef PajePopState %d \n\
%% Time date \n\
-%% EntityType string \n\
+%% Type string \n\
%% Container string \n\
%%EndEventDef\n\
%%EventDef PajeStartLink %d \n\
%% Time date \n\
-%% EntityType string \n\
+%% Type string \n\
%% Container string \n\
%% Value string \n\
%% SourceContainer string \n\
%%EndEventDef\n\
%%EventDef PajeEndLink %d \n\
%% Time date \n\
-%% EntityType string \n\
+%% Type string \n\
%% Container string \n\
%% Value string \n\
%% DestContainer string \n\
%%EndEventDef\n\
%%EventDef PajeNewEvent %d \n\
%% Time date \n\
-%% EntityType string \n\
+%% Type string \n\
%% Container string \n\
%% Value string \n\
%%EndEventDef\n",
/* internal do the instrumentation module */
static void insert_into_buffer (paje_event_t tbi)
{
+ if (TRACE_buffer() == 0){
+ tbi->print (tbi);
+ tbi->free (tbi);
+ return;
+ }
XBT_DEBUG("%s: insert event_type=%d, timestamp=%f, buffersize=%ld)", __FUNCTION__, tbi->event_type, tbi->timestamp, xbt_dynar_length(buffer));
unsigned int i;
- unsigned long len = xbt_dynar_length(buffer);
- if (len == 0){
- xbt_dynar_push (buffer, &tbi);
- XBT_DEBUG("%s: inserted at beginning", __FUNCTION__);
- }else{
- //check if last event has the same timestamp that tbi event
- paje_event_t e2 = *(paje_event_t*)xbt_dynar_get_ptr (buffer, len-1);
- if (e2->timestamp == tbi->timestamp){
- //insert at the end
- XBT_DEBUG("%s: inserted at end, pos = %ld", __FUNCTION__, len);
- xbt_dynar_insert_at (buffer, len, &tbi);
- return;
- }
- int inserted = 0;
- for (i = 0; i < len; i++){
- paje_event_t e1 = *(paje_event_t*)xbt_dynar_get_ptr(buffer, i);
- if (e1->timestamp > tbi->timestamp){
- xbt_dynar_insert_at (buffer, i, &tbi);
- XBT_DEBUG("%s: inserted at %d", __FUNCTION__, i);
- inserted = 1;
- break;
- }
- }
- if (!inserted){
- xbt_dynar_push (buffer, &tbi);
- XBT_DEBUG("%s: inserted at end", __FUNCTION__);
- }
+ for (i = xbt_dynar_length(buffer); i > 0; i--) {
+ paje_event_t e1 = *(paje_event_t*)xbt_dynar_get_ptr(buffer, i - 1);
+ if (e1->timestamp <= tbi->timestamp)
+ break;
}
+ xbt_dynar_insert_at(buffer, i, &tbi);
+ if (i == 0)
+ XBT_DEBUG("%s: inserted at beginning", __FUNCTION__);
+ else
+ XBT_DEBUG("%s: inserted at%s %d", __FUNCTION__,
+ (i == xbt_dynar_length(buffer) - 1 ? " end, pos =" : ""), i);
}
static void print_pajeDefineContainerType(paje_event_t event)
{
XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
if (event->timestamp == 0){
- fprintf(tracing_file, "%d 0 %s %s %s %s\n",
+ fprintf(tracing_file, "%d 0 %s %s %s \"%s\"\n",
event->event_type,
((createContainer_t)event->data)->container->id,
((createContainer_t)event->data)->container->type->id,
((createContainer_t)event->data)->container->father->id,
((createContainer_t)event->data)->container->name);
}else{
- fprintf(tracing_file, "%d %lf %s %s %s %s\n",
+ fprintf(tracing_file, "%d %lf %s %s %s \"%s\"\n",
event->event_type,
event->timestamp,
((createContainer_t)event->data)->container->id,
static void free_paje_event (paje_event_t event)
{
XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
- if (event->event_type == PAJE_StartLink){
+ switch (event->event_type){
+ case PAJE_StartLink:
xbt_free (((startLink_t)(event->data))->value);
xbt_free (((startLink_t)(event->data))->key);
- }else if (event->event_type == PAJE_EndLink){
+ break;
+ case PAJE_EndLink:
xbt_free (((endLink_t)(event->data))->value);
xbt_free (((endLink_t)(event->data))->key);
+ break;
+ default:
+ break;
}
xbt_free (event->data);
xbt_free (event);