Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 1233 → Rev 1234

/demos/trunk/loader/newloader.c
5,8 → 5,6
#include "func.h"
#include "event_header.h"
 
 
 
/* Activate task output */
#define TASK_OUTPUT
 
17,19 → 15,12
TASK test_task(void *arg)
{
long long i,exec_cycles = 0;
//int crit_start,crit_len;
//long long crit_start_cycles = 0, crit_len_cycles = 0;
//struct timespec next_time;
int act = 0;
struct loader_task *l;
l=&loader_task_list[get_current_exec_task()];
struct loader_task *l = (struct loader_task *)(arg);
char tmp[20];
 
while((l->act_number) > act) {
 
while((l->act_number)>act) {
 
//task_testcancel();
 
act++;
 
#ifdef TASK_OUTPUT
36,20 → 27,20
sprintf(tmp,"X[%06d]",act);
printf_xy((get_current_exec_task() % 5) * 9 + 34,get_current_exec_task() / 5 + 5, GREEN, tmp);
#endif
 
generic_set_next_activation(&l->act[act]);
 
exec_cycles = (long long)(TIMESPEC2USEC(&l->exec[act])) * CALIBRATION_DELTA / cal_cycles;
#ifdef TASK_OUTPUT
sprintf(tmp,"X[%06d]",act);
printf_xy((get_current_exec_task() % 5) * 9 + 34, get_current_exec_task() / 5 + 5, GREEN, tmp);
#endif
#ifdef TASK_OUTPUT
sprintf(tmp,"X[%06d]",act);
printf_xy((get_current_exec_task() % 5) * 9 + 34, get_current_exec_task() / 5 + 5, GREEN, tmp);
#endif
for (i=0;i<exec_cycles;i++) calibration_func();
//generic_task_endcycle();
generic_task_endcycle();
}
57,53 → 48,17
}
 
 
/* Mutex create */
/*
void loader_mutex_create(struct loader_task *start_loader_task)
{
 
struct loader_task *current = start_loader_task;
int i,res = 0;
PI_mutexattr_t a;
int init_array[MAX_MUTEX];
 
PI_mutexattr_default(a);
 
for (i = 0;i < MAX_MUTEX;i++) init_array[i] = 0;
 
while (current != NULL) {
if (current->crit_type == PAR_CRIT) {
if (init_array[current->resource] == 0) {
mutex_init(&mux_table[current->resource],&a);
init_array[current->resource] = 1;
res++;
}
}
 
current = current->next;
 
}
 
cprintf("Created %d mutex\n",res);
 
}
*/
 
/* Task create */
void loader_task_create(struct loader_task *start_loader_task)
void loader_task_create()
{
 
struct loader_task *current = &loader_task_list[0];
//char tmp[30];
int i=0,k=0, total_task;
struct loader_task *current = loader_task_list;
int i=0, k=0, total_task;
int total_group = 0;
//PID p;
 
total_task = sizeof(loader_task_list)/sizeof(struct loader_task);
 
while (k<total_task) {
while (k < total_task) {
k++;
total_group++;
current->group = total_group;
120,11 → 75,13
}
}
current = &loader_task_list[i];
 
current = &loader_task_list[k];
 
}
cprintf("Created %d tasks\n",total_task);
cprintf("Created %d loader tasks\n",total_task);
 
}
 
132,22 → 89,18
int main()
{
 
struct loader_task *start_loader_task = &loader_task_list[0];
struct timespec total={20,0};
struct timespec total = {20,0};
generic_calibrate_cycle();
 
kern_gettime(&zero_time);
 
generic_fsfinit();
 
//loader_mutex_create(start_loader_task);
loader_task_create(start_loader_task);
loader_task_create();
 
generic_set_simulation_time(&total);
 
 
return 0;
 
}
/demos/trunk/loader/shark.c
58,12 → 58,13
hard_task_def_usemath(ht);
return &ht;
}
 
return NULL;
}
 
void set_simulation_time (struct timespec *total) {
struct timespec end_time;
kern_gettime(&zero_time);
ADDTIMESPEC(&zero_time,total,&end_time);
kern_event_post(&end_time,(void *)((void *)(sys_end)),NULL);
/demos/trunk/loader/event_gen.c
28,32 → 28,8
file_event_header = fopen(EVENT_HEADER,"w");
if (file_event_header == NULL) return 1;
 
fprintf(file_event_header, "\nstruct loader_task {\n");
fprintf(file_event_header, "\n#include \"%s\"\n\n",ACT_LIST);
 
fprintf(file_event_header, "char name[20];\n");
 
fprintf(file_event_header, "int number;\n");
fprintf(file_event_header, "int group;\n");
fprintf(file_event_header, "int server;\n");
fprintf(file_event_header, "int local_scheduler;\n");
 
fprintf(file_event_header, "struct timespec deadline;\n");
fprintf(file_event_header, "struct timespec wcet;\n");
fprintf(file_event_header, "int act_number;\n");
fprintf(file_event_header, "struct timespec *act;\n");
fprintf(file_event_header, "struct timespec *exec;\n");
 
fprintf(file_event_header, "};\n\n");
 
fprintf(file_event_header, "#define LOADER_POSIX_SCHEDULER 0\n");
fprintf(file_event_header, "#define LOADER_EDF_SCHEDULER 1\n");
fprintf(file_event_header, "#define LOADER_RM_SCHEDULER 2\n");
fprintf(file_event_header, "#define LOADER_MPEGSTAR_SCHEDULER 3\n\n");
 
fprintf(file_event_header, "#include \"%s\"\n\n",ACT_LIST);
 
fprintf(file_event_header, "struct loader_task loader_task_list[] = {\n");
 
fclose(file_event_header);