Subversion Repositories shark

Compare Revisions

Regard whitespace Rev 1301 → Rev 1302

/demos/trunk/newtrace/utils/isolation.c
36,6 → 36,7
};
 
struct ctx_time_type ctx_time[256];
struct ctx_time_type int_time;
unsigned long long last_time;
int total_ctx = 0;
int last_ctx = -1;
44,17 → 45,12
 
int i;
 
if (e->type == 0x3B || e->type == 0x15) {
// Start interrupt
if (e->type == 0x2b || e->type == 0x03) {
 
i = 0;
while (ctx_time[i].ctx != e->par[0] && i < total_ctx) {
i++;
}
if (int_time.start_time == 0) int_time.start_time = e->tsc;
 
if (ctx_time[i].start_time == 0) {
ctx_time[i].ctx = e->par[0];
ctx_time[i].start_time = e->tsc;
ctx_time[i].total_time = 0;
if (last_ctx != -1) {
 
if (e->tsc < last_time) {
printf("Error events sequence\n");
61,52 → 57,93
exit(2);
}
 
if (last_ctx != -1) ctx_time[last_ctx].total_time += (e->tsc - last_time);
 
ctx_time[last_ctx].total_time += (e->tsc - last_time);
last_time = e->tsc;
last_ctx = i;
total_ctx++;
 
} else {
 
last_time = e->tsc;
 
}
 
}
 
//End Interrupt
if (e->type == 0x3b || e->type == 0x13) {
 
if (int_time.start_time == 0) int_time.start_time = e->tsc;
 
if (last_time != 0) {
 
if (e->tsc < last_time) {
printf("Error events sequence\n");
exit(2);
}
 
ctx_time[last_ctx].total_time += (e->tsc - last_time);
int_time.total_time += (e->tsc - last_time);
last_time = e->tsc;
 
} else {
 
last_time = e->tsc;
 
}
 
i = 0;
while (ctx_time[i].ctx != e->par[0] && i < total_ctx) {
i++;
}
 
if (ctx_time[i].start_time == 0) {
ctx_time[i].start_time = e->tsc;
ctx_time[i].total_time = 0;
ctx_time[i].ctx = e->par[0];
last_ctx = i;
total_ctx++;
} else {
last_ctx = i;
}
 
}
 
//Context Switch
if (e->type == 0x15) {
 
i = 0;
while (ctx_time[i].ctx != e->par[0] && i < total_ctx) {
i++;
}
 
if (e->type == 0x2b || e->type == 0x03) {
if (ctx_time[i].start_time == 0) {
ctx_time[i].ctx = e->par[0];
ctx_time[i].start_time = e->tsc;
ctx_time[i].total_time = 0;
 
if (last_ctx == -1) return;
 
if (e->tsc < last_time) {
printf("Error events sequence\n");
exit(2);
}
ctx_time[last_ctx].total_time += (e->tsc - last_time);
if (last_ctx != -1) ctx_time[last_ctx].total_time += (e->tsc - last_time);
 
last_time = e->tsc;
last_ctx = i;
total_ctx++;
 
}
} else {
 
if (e->type == 0x13) {
 
if (e->tsc < last_time) {
printf("Error events sequence\n");
exit(2);
}
 
if (last_ctx != -1) ctx_time[last_ctx].total_time += (e->tsc - last_time);
last_time = e->tsc;
last_ctx = i;
 
}
 
}
}
 
129,6 → 166,7
}
 
memset(ctx_time,0,sizeof(ctx_time));
memset(&int_time,0,sizeof(int_time));
total_ctx = 0;
 
input_file = fopen(argv[1],"rb");
197,6 → 235,8
 
printf ("Total Ctx = %d\n",total_ctx);
 
printf("Total Interrupt = %d\n",(unsigned int)(int_time.total_time * 1000 / 501162));
 
total_simulation = 0;
for (i=0;i<total_ctx;i++) {
printf("Total Time Ctx %d => %d\n",ctx_time[i].ctx,(unsigned int)(ctx_time[i].total_time * 1000 / 501162));