X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fyangxx%2Fconvert%2Fconvert.c;h=b16e8fe353d52185ae40c6f26576645f5b957cce;hb=5f126063fcc875c8f0e71c98d74f132a03351202;hp=43f27986cfa9fec2fb87d9dbfee0af9db0c57ab8;hpb=5c11f653c80aaee3ae9e793674201e4f9e2fd7a4;p=lttv.git diff --git a/ltt/branches/yangxx/convert/convert.c b/ltt/branches/yangxx/convert/convert.c index 43f27986..b16e8fe3 100644 --- a/ltt/branches/yangxx/convert/convert.c +++ b/ltt/branches/yangxx/convert/convert.c @@ -97,8 +97,8 @@ int main(int argc, char ** argv){ trace_buffer_start *tBufStart; trace_buffer_end *tBufEnd; trace_file_system * tFileSys; - uint16_t newId; - uint8_t evId, startId; + uint16_t newId, startId; + uint8_t evId; uint32_t time_delta, startTimeDelta; void * cur_pos, *end_pos; buffer_start start; @@ -200,7 +200,7 @@ int main(int argc, char ** argv){ buffer = g_new(char, 4000); readFile(fd,(void*)buffer, 3500, "Unable to read block header"); - cur_pos = buffer; + cur_pos= buffer; evId = *(uint8_t *)cur_pos; cur_pos += sizeof(uint8_t); newId = evId; @@ -212,7 +212,6 @@ int main(int argc, char ** argv){ evId = *(uint8_t *)cur_pos; cur_pos += sizeof(uint8_t); - time_delta = *(uint32_t*)cur_pos; cur_pos += sizeof(uint32_t); tStart = (trace_start*)cur_pos; @@ -262,6 +261,7 @@ int main(int argc, char ** argv){ int event_count = 0; beat_count = 0; + for(j=1;jTime.tv_sec; + start.nanoseconds = tBufStart->Time.tv_usec; + start.cycle_count = tBufStart->TSC; + start.block_id = tBufStart->ID; + end.block_id = start.block_id; + end_pos = buffer + block_size; //end of the buffer size_lost = *(uint32_t*)(end_pos - sizeof(uint32_t)); end_pos = buffer + block_size - size_lost ; //buffer_end event - tBufEnd = (trace_buffer_end*)end_pos; + tBufEnd = (trace_buffer_end*)(end_pos+sizeof(uint8_t)+sizeof(uint32_t)); end.seconds = tBufEnd->Time.tv_sec; end.nanoseconds = tBufEnd->Time.tv_usec; end.cycle_count = tBufEnd->TSC; @@ -417,7 +435,7 @@ int main(int argc, char ** argv){ } break; case TRACE_FILE_SYSTEM: - event_size = sizeof(trace_file_system); + event_size = sizeof(trace_file_system)- sizeof(char*); break; case TRACE_TIMER: event_size = sizeof(trace_timer); @@ -464,23 +482,23 @@ int main(int argc, char ** argv){ if(evId == TRACE_HEARTBEAT){ if(ltt_log_cpu){ - write_to_buffer(write_pos[cpu_id], cur_pos, sizeof(heartbeat)); + size_count[cpu_id] += sizeof(heartbeat); + write_to_buffer(write_pos[cpu_id],(void*)&beat , sizeof(heartbeat)); }else{ - write_to_buffer(write_pos[0], cur_pos, sizeof(heartbeat)); + size_count[0] += sizeof(heartbeat); + write_to_buffer(write_pos[0], (void*)&beat, sizeof(heartbeat)); } } cur_pos += event_size + sizeof(uint16_t); //skip data_size }else if(evId == TRACE_FILE_SYSTEM){ size_t nbBytes; + char c = '\0'; tFileSys = (trace_file_system*)cur_pos; subId = tFileSys->event_sub_id; if(subId == TRACE_FILE_SYSTEM_OPEN || subId == TRACE_FILE_SYSTEM_EXEC){ nbBytes = tFileSys->event_data2 +1; }else nbBytes = 0; - nbBytes += event_size; - - // printf("bytes : %d\n", nbBytes); if(ltt_log_cpu){ size_count[cpu_id] += nbBytes + sizeof(uint16_t) + sizeof(uint32_t); @@ -488,14 +506,26 @@ int main(int argc, char ** argv){ printf("size count exceeds the limit of the buffer\n"); exit(1); } - write_to_buffer(write_pos[cpu_id], cur_pos, nbBytes); + write_to_buffer(write_pos[cpu_id], cur_pos, event_size); + cur_pos += event_size + sizeof(char*); + if(nbBytes){ + write_to_buffer(write_pos[cpu_id], cur_pos, nbBytes); + }else{ + write_to_buffer(write_pos[cpu_id], (void*)&c, 1); + } }else{ size_count[0] += nbBytes + sizeof(uint16_t) + sizeof(uint32_t); if(size_count[0] > block_size - reserve_size){ printf("size count exceeds the limit of the buffer\n"); exit(1); } - write_to_buffer(write_pos[0], cur_pos, nbBytes); + write_to_buffer(write_pos[0], cur_pos, event_size); + cur_pos += event_size + sizeof(char*); + if(nbBytes){ + write_to_buffer(write_pos[0], cur_pos, nbBytes); + }else{ + write_to_buffer(write_pos[0], (void*)&c, 1); + } } cur_pos += nbBytes + sizeof(uint16_t); //skip data_size }else if(event_size == -1){