0,0 → 1,119 |
/* |
* Project: S.Ha.R.K. |
* |
* Coordinators: |
* Giorgio Buttazzo <giorgio@sssup.it> |
* Paolo Gai <pj@gandalf.sssup.it> |
* |
* Authors : |
* Giacomo Guidi <giacomo@gandalf.sssup.it> |
* |
* ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy) |
* |
* http://www.sssup.it |
* http://retis.sssup.it |
* http://shark.sssup.it |
*/ |
|
#include <stdio.h> |
#include <unistd.h> |
#include <stdlib.h> |
#include <string.h> |
|
#include <FTrace.h> |
|
#define READ_BUFFER 2000 |
#define DELTA_BUFFER 100 |
|
int main(int argc, char *argv[]) |
{ |
|
char buffer[READ_BUFFER+DELTA_BUFFER]; |
void *p, *last; |
int n,delta,size; |
|
unsigned long long ev = 0, tsc_value; |
|
FILE *input_file; |
|
if (argc < 2) { |
printf("%s: Enter the input file name [%s filename]\n",argv[0],argv[0]); |
exit(1); |
} |
|
input_file = fopen(argv[1],"rb"); |
|
last = buffer + READ_BUFFER; |
|
while(!feof(input_file)) { |
|
//move remaining byte |
delta = (unsigned int)(buffer) + READ_BUFFER - (unsigned int)(last); |
if (delta > 0) memcpy(buffer,last,delta); |
|
n = fread(buffer+delta,1,READ_BUFFER+10,input_file); |
fseek(input_file,-(delta+10),SEEK_CUR); |
|
p = buffer; |
|
while ((unsigned int)(p) + 16 <= (unsigned int)(buffer + READ_BUFFER) && |
(unsigned int)(p) + 16 <= (unsigned int)(buffer + n + delta)) { |
|
switch (*(unsigned short int *)(p)) { |
|
case FTrace_EVT_ipoint: |
printf("%d ",*(unsigned short int *)(p+2)); |
break; |
|
case FTrace_EVT_trace_start: |
printf("0 "); |
break; |
|
case FTrace_EVT_trace_stop: |
printf("1 "); |
break; |
|
case FTrace_EVT_timer_wakeup_start: |
case FTrace_EVT_interrupt_start: |
printf("2 "); |
break; |
|
|
case FTrace_EVT_timer_wakeup_end: |
case FTrace_EVT_interrupt_end: |
printf("3 "); |
break; |
|
case FTrace_EVT_context_switch: |
printf("4 "); |
break; |
|
} |
|
tsc_value = (unsigned long long)(*(unsigned int *)(p+4)) << 32; |
tsc_value += (unsigned long long)(*(unsigned int *)(p+8)); |
|
printf("%llu ",tsc_value); |
|
size = 16; |
|
ev++; |
|
p += 16; |
|
if ((unsigned int)(p) + 10 > (unsigned int)(buffer + n + delta)) break; |
|
last = p; |
|
} |
|
if ((unsigned int)(p) + 10 > (unsigned int)(buffer + n + delta)) break; |
|
} |
|
fclose(input_file); |
|
return 0; |
|
} |
|