X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fyangxx%2Fconvert%2Fconvert.c;h=0aaa8f93f663dbf325f4cd2887e343c7d5832f28;hb=fc032b6be7431e97c4ed51c672aa3ab8141df10d;hp=717e09e931e12b8cf97609b384fb4454e4bcbe11;hpb=cb4cdc19888ab1780039baf456eef5aac0619c3c;p=lttv.git diff --git a/ltt/branches/yangxx/convert/convert.c b/ltt/branches/yangxx/convert/convert.c index 717e09e9..0aaa8f93 100644 --- a/ltt/branches/yangxx/convert/convert.c +++ b/ltt/branches/yangxx/convert/convert.c @@ -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; @@ -263,6 +263,9 @@ int main(int argc, char ** argv){ beat_count = 0; for(j=0;jTime.tv_sec; end.nanoseconds = tBufEnd->Time.tv_usec; end.cycle_count = tBufEnd->TSC; @@ -414,7 +417,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); @@ -461,23 +464,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); @@ -485,14 +488,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){