X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Fltt%2Ftracefile.c;h=4f10f0829e79c54bd52f4484e02bd493ee90f7b1;hb=1812dbb9f10d3bd6325ef03d46249935a480560b;hp=420cb9d008bc9cc74e1e3e936621994e612c4e6b;hpb=908f42fafd8d7dc4d1ed17d5b2eede4d7d64a4e3;p=lttv.git diff --git a/ltt/branches/poly/ltt/tracefile.c b/ltt/branches/poly/ltt/tracefile.c index 420cb9d0..4f10f082 100644 --- a/ltt/branches/poly/ltt/tracefile.c +++ b/ltt/branches/poly/ltt/tracefile.c @@ -551,7 +551,7 @@ unsigned ltt_trace_facility_find(LttTrace *t, char *name, unsigned *position) { int i, count=0; LttFacility * f; - for(i=0;i=t->facility_number;i++){ + for(i=0;ifacility_number;i++){ f = (LttFacility*)g_ptr_array_index(t->facilities, i); if(strcmp(f->name,name)==0){ count++; @@ -654,7 +654,7 @@ int ltt_trace_per_cpu_tracefile_find(LttTrace *t, unsigned i) LttTracefile *ltt_trace_control_tracefile_get(LttTrace *t, unsigned i) { - return (LttTracefile*)g_ptr_array_index(t->per_cpu_tracefiles, i); + return (LttTracefile*)g_ptr_array_index(t->control_tracefiles, i); } LttTracefile *ltt_trace_per_cpu_tracefile_get(LttTrace *t, unsigned i) @@ -758,6 +758,15 @@ LttEvent *ltt_tracefile_read(LttTracefile *t) LttEvent * lttEvent = (LttEvent *)g_new(LttEvent, 1); int err; + if(t->cur_event_pos == t->buffer + t->block_size){ + if(t->which_block == t->block_number){ + g_free(lttEvent); + return NULL; + } + err = readBlock(t, t->which_block + 1); + if(err)g_error("Can not read tracefile"); + } + lttEvent->event_id = (int)(*(uint16_t *)(t->cur_event_pos)); if(lttEvent->event_id == TRACE_TIME_HEARTBEAT) t->cur_heart_beat_number++; @@ -778,13 +787,7 @@ LttEvent *ltt_tracefile_read(LttTracefile *t) //update the fields of the current event and go to the next event err = skipEvent(t); - if(err == ENOMEM){ - g_free(lttEvent); - return NULL; - } - if(err == ENOENT) return lttEvent; if(err == ERANGE) g_error("event id is out of range\n"); - if(err)g_error("Can not read tracefile\n"); return lttEvent; } @@ -889,10 +892,6 @@ void updateTracefile(LttTracefile * tf) * t : tracefile *return value * 0 : success - * EINVAL : lseek fail - * EIO : can not read from the file - * ENOMEM : end of file - * ENOENT : last event * ERANGE : event id is out of range ****************************************************************************/ @@ -902,14 +901,6 @@ int skipEvent(LttTracefile * t) void * evData; LttEventType * evT; LttField * rootFld; - static int evCount = 0; - - if(evCount){ - if(t->which_block == t->block_number && - evCount == t->which_event){ - return ENOMEM; - }else evCount = 0; - } evId = (int)(*(uint16_t *)(t->cur_event_pos)); evData = t->cur_event_pos + EVENT_HEADER_SIZE; @@ -933,13 +924,7 @@ int skipEvent(LttTracefile * t) //the next event is in the next block if(evId == TRACE_BLOCK_END){ - if(t->which_block == t->block_number){ - t->which_event++; - evCount = t->which_event; - return ENOENT; - } - err = readBlock(t, t->which_block + 1); - if(err) return err; + t->cur_event_pos = t->buffer + t->block_size; }else{ t->which_event++; t->current_event_time = getEventTime(t);