Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 1522 → Rev 1523

/demos/trunk/newtrace/utils/extract.c
30,7 → 30,7
int pid;
};
 
struct endcycle {
struct task_event {
int ctx;
unsigned long long tsc;
unsigned long long nsec;
44,8 → 44,12
int context_total = 0,endcycle_total = 0,job_total = 0,exec_total = 0;
struct ctx_exec *exec_list;
struct ctx_to_pid *context_list;
struct endcycle *endcycle_list;
struct task_event *endcycle_list;
struct task_event *deadline_miss_list;
struct task_event *wcet_miss_list;
struct task_event *act_list;
struct ctx_exec *job_list;
int deadline_miss = 0, wcet_miss = 0, act_total = 0;
 
unsigned int clk_per_msec = 0;
unsigned int skip_clk_per_msec = 0;
416,7 → 420,10
/* Memory alloc */
exec_list = malloc(sizeof(struct ctx_exec) * MAXJOB);
context_list = malloc(sizeof(struct ctx_to_pid) * MAXCONTEXT);
endcycle_list = malloc(sizeof(struct endcycle) * MAXJOB);
endcycle_list = malloc(sizeof(struct task_event) * MAXJOB);
deadline_miss_list = malloc(sizeof(struct task_event) * MAXJOB);
wcet_miss_list = malloc(sizeof(struct task_event) * MAXJOB);
act_list = malloc(sizeof(struct task_event) * MAXJOB);
 
/* Finite-State machine
*
474,6 → 481,9
case 5:
case 9:
case 0:
case 20:
case 21:
 
/* 2 par */
fscanf(input_file,"%d %d",&par1,&par2);
break;
640,6 → 650,44
 
break;
 
/* Task activate */
case 6:
act_list[act_total].ctx = par1;
act_list[act_total].tsc = tsc;
act_list[act_total].nsec = current_nsec + (tsc-last_tsc) * 1000000 / clk_per_msec;
act_total++;
break;
 
/* Deadline miss */
case 20:
for (i=0;i<context_total;i++)
if (par1 == context_list[i].ctx) break;
if (i == context_total) Error(4,k);
deadline_miss_list[deadline_miss].ctx = par1;
deadline_miss_list[deadline_miss].tsc = tsc;
deadline_miss_list[deadline_miss].nsec = current_nsec + (tsc-last_tsc) * 1000000 / clk_per_msec;
deadline_miss++;
break;
 
/* Wcet miss */
case 21:
for (i=0;i<context_total;i++)
if (par1 == context_list[i].ctx) break;
if (i == context_total) Error(4,k);
wcet_miss_list[wcet_miss].ctx = par1;
wcet_miss_list[wcet_miss].tsc = tsc;
wcet_miss_list[wcet_miss].nsec = current_nsec + (tsc-last_tsc) * 1000000 / clk_per_msec;
wcet_miss++;
break;
 
/* Task id */
case 9:
679,8 → 727,9
exit(3);
}
 
if (current_endcycle == MAXJOB-1) {
printf("Too many endcycle...\n");
if (current_endcycle == MAXJOB-1 || act_total == MAXJOB-1
|| deadline_miss == MAXJOB-1 || wcet_miss == MAXJOB-1) {
printf("Too many jobs...\n");
exit(4);
}
 
695,6 → 744,32
 
}
 
int task_events(int num, int *act, int *dlinemiss, int *wcetmiss) {
 
unsigned long long i;
int tmp = 0;
 
*act = 0;
*dlinemiss = 0;
*wcetmiss = 0;
 
tmp = 0;
for (i=0;i<act_total;i++)
if (act_list[i].ctx == context_list[num].ctx) tmp++;
*act = tmp;
tmp = 0;
for (i=0;i<deadline_miss;i++)
if (deadline_miss_list[i].ctx == context_list[num].ctx) tmp++;
*dlinemiss = tmp;
tmp = 0;
for (i=0;i<wcet_miss;i++)
if (wcet_miss_list[i].ctx == context_list[num].ctx) tmp++;
*wcetmiss = tmp;
 
return 0;
 
}
 
int create_job_list() {
 
int current_job = 0, h, i, k;
756,7 → 831,7
 
char pidstr[10];
unsigned long long tot_nsec,mean_nsec,max_nsec,min_nsec,first_nsec;
int number;
int number,act,dlinemiss,wcetmiss;
 
switch (context_list[num].pid) {
case PID_NO_DEF:
862,6 → 937,12
printf(" Mean Job [%12llu ns]\n",mean_nsec);
printf(" Max Job [%12llu ns]\n\n",max_nsec);
 
task_events(num,&act,&dlinemiss,&wcetmiss);
 
printf(" Activations [%12d ]\n",act);
printf(" Deadline Miss [%12d ]\n",dlinemiss);
printf(" Wcet Miss [%12d ]\n\n",wcetmiss);
 
plot_job_c_distrib(num,max_nsec,pidstr);
 
arr_stats_from_jobs(num,&min_nsec,&mean_nsec,&max_nsec);
918,6 → 999,8
printf("Events [%12d]\n",events_total);
printf("Execs [%12d]\n",exec_total);
printf("EndCycles [%12d]\n",endcycle_total);
printf("Dline miss [%12d]\n",deadline_miss);
printf("WCET miss [%12d]\n",wcet_miss);
 
printf("\nPreemption Removing.... \n");
 
/demos/trunk/newtrace/utils/pwcet_gen.c
135,6 → 135,16
tsc = 1;
break;
 
case FTrace_EVT_task_deadline_miss:
printf("20 ");
tsc = 1;
break;
 
case FTrace_EVT_task_wcet_violation:
printf("21 ");
tsc = 1;
break;
 
}
 
tsc_value = (unsigned long long)(*(unsigned int *)(p+4)) << 32;
171,6 → 181,14
printf("%d %d",*(unsigned short int *)(p+2),*(unsigned int *)(p+12));
break;
 
case FTrace_EVT_task_deadline_miss:
printf("%d %d",*(unsigned short int *)(p+2),*(unsigned int *)(p+12));
break;
case FTrace_EVT_task_wcet_violation:
printf("%d %d",*(unsigned short int *)(p+2),*(unsigned int *)(p+12));
break;
 
case FTrace_EVT_task_activate:
printf("%d ",*(unsigned short int *)(p+2));
break;