1,5 → 1,6 |
#include "func.h" |
#include "calibrate.h" |
#include <tracer.h> |
|
extern int cal_cycles; |
extern struct timespec zero_time; |
88,15 → 89,70 |
|
return NULL; |
|
} |
} |
|
TASK finish_task() { |
|
extern unsigned int TracerEventsPresent; |
unsigned int k; |
|
SYS_FLAGS f; |
|
tracer_init_udp(1,"192.168.82.46","192.168.82.20"); |
|
tracer_create_udp_task(NULL,80); |
|
f = kern_fsave(); |
k = TracerEventsPresent; |
kern_frestore(f); |
while(k > 0) { |
f = kern_fsave(); |
k = TracerEventsPresent; |
kern_frestore(f); |
} |
|
tracer_flush_sent_events(); |
|
sys_end(); |
|
return NULL; |
|
} |
|
void end_simulation() { |
|
int i; |
struct loader_task *l = loader_task_list; |
|
NRT_TASK_MODEL nrt; |
|
TRACER_LOGEVENT(FTrace_EVT_trace_stop,0,0,0); |
|
tracer_disable(); |
|
i = 0; |
while (i < total_loader_task) { |
|
group_kill(l->group); |
|
i++; |
l=&loader_task_list[i]; |
|
} |
|
nrt_task_default_model(nrt); |
|
task_activate(task_create("Finish",finish_task,&nrt,NULL)); |
|
} |
|
void set_simulation_time (struct timespec *total) { |
struct timespec end_time; |
|
ADDTIMESPEC(&zero_time,total,&end_time); |
kern_event_post(&end_time,(void *)((void *)(sys_end)),NULL); |
kern_event_post(&end_time,(void *)((void *)(end_simulation)),NULL); |
|
} |
} |
|
/* Set the zero_time and post the first activation event */ |
void start_simulation() { |
107,6 → 163,12 |
|
i = 0; |
|
tracer_initialize(10000000); |
|
tracer_enable(); |
|
TRACER_LOGEVENT(FTrace_EVT_trace_start,0,0,0); |
|
kern_gettime(&zero_time); |
|
while (i < total_loader_task) { |