61,33 → 61,8 |
|
|
|
/* 10% */ |
struct timespec decoderPeriod = {0,30000000}; |
struct timespec decoderBudget = {0,3000000}; |
|
/* 10% */ |
struct timespec readTaskPeriod = {0,30000000}; |
struct timespec readTaskBudget = {0,3000000}; |
|
/* 45% */ |
struct timespec displayPeriod = {0,40000000}; |
struct timespec displayBudget = {0,18000000}; |
|
// 5 % |
struct timespec overloadPeriod = {0,10000000}; |
struct timespec overloadBudget = {0,500000}; |
|
fsf_server_id_t decoderServer; |
fsf_server_id_t readTaskServer; |
fsf_server_id_t displayServer; |
fsf_server_id_t overloadServer; |
|
fsf_contract_parameters_t overloadContract; |
fsf_contract_parameters_t decoderContract; |
fsf_contract_parameters_t readTaskContract; |
fsf_contract_parameters_t displayContract; |
|
|
void program_end() |
{ |
|
141,8 → 116,8 |
err = fsf_create_local_thread(server,(fsf_sched_params_t *)(&pr), &j,NULL, |
displayTask,NULL); |
if (err) { |
//grx_close(); |
//grx_text("failed to create displayTask",0,0,rgb16(255,255,255),0); |
grx_close(); |
grx_text("failed to create displayTask",0,0,rgb16(255,255,255),0); |
exit(err); |
} |
task_activate(j); |
189,8 → 164,8 |
err = fsf_create_local_thread(server,(fsf_sched_params_t *)(&pr), &j,NULL, |
readTask,NULL); |
if (err) { |
//grx_close(); |
//grx_text("failed to create displayTask",0,0,rgb16(255,255,255),0); |
grx_close(); |
grx_text("failed to create displayTask",0,0,rgb16(255,255,255),0); |
exit(err); |
} |
task_activate(j); |
237,8 → 212,8 |
err = fsf_create_local_thread(server,(fsf_sched_params_t *)(&pr), &j,NULL, |
mpeg2decoder,NULL); |
if (err) { |
//grx_close(); |
//grx_text("failed to create displayTask",0,0,rgb16(255,255,255),0); |
grx_close(); |
grx_text("failed to create displayTask",0,0,rgb16(255,255,255),0); |
exit(err); |
} |
task_activate(j); |
286,8 → 261,8 |
err = fsf_create_local_thread(server,(fsf_sched_params_t *)(&pr), &j,NULL, |
overLoadTask,NULL); |
if (err) { |
//grx_close(); |
//grx_text("failed to create displayTask",0,0,rgb16(255,255,255),0); |
grx_close(); |
grx_text("failed to create displayTask",0,0,rgb16(255,255,255),0); |
exit(err); |
} |
task_activate(j); |
310,22 → 285,46 |
int i = 1; |
char tmp[100]; |
struct timespec simtime; |
KEY_EVT k; |
//KEY_EVT k; |
union sigval no_sigval = {0}; |
|
PI_mutexattr_t a; |
KEY_EVT ev; |
|
/* 10% */ |
struct timespec decoderPeriod = {0,30000000}; |
struct timespec decoderBudget = {0,3000000}; |
|
/* 10% */ |
struct timespec readTaskPeriod = {0,30000000}; |
struct timespec readTaskBudget = {0,3000000}; |
|
/* 45% */ |
struct timespec displayPeriod = {0,40000000}; |
struct timespec displayBudget = {0,18000000}; |
|
// 5 % |
struct timespec overloadPeriod = {0,10000000}; |
struct timespec overloadBudget = {0,500000}; |
|
fsf_server_id_t decoderServer; |
fsf_server_id_t readTaskServer; |
fsf_server_id_t displayServer; |
fsf_server_id_t overloadServer; |
|
fsf_contract_parameters_t overloadContract; |
fsf_contract_parameters_t decoderContract; |
fsf_contract_parameters_t readTaskContract; |
fsf_contract_parameters_t displayContract; |
|
union sigval sval; |
|
|
ev.ascii = 'c'; |
ev.scan = KEY_C; |
ev.status = KEY_PRESSED; |
ev.flag = CNTR_BIT; |
keyb_hook(ev, ending_system, FALSE); |
//ev.ascii = 'c'; |
//ev.scan = KEY_C; |
//ev.status = KEY_PRESSED; |
//ev.flag = CNTR_BIT; |
//keyb_hook(ev, ending_system, FALSE); |
|
PI_mutexattr_default(a); |
fsf_init(); |
389,7 → 388,7 |
if (err) { |
exit(err); |
} |
|
|
err = fsf_negotiate_contract(&decoderContract,&decoderServer); |
if (err) { |
exit(err); |
404,32 → 403,30 |
exit(err); |
} |
|
print_server_list(); |
|
|
// Create and bind different ports to communication links (This ports a declared in global.h) |
if((readTaskPort = port_create(readFilePortName, sizeof(struct readDecodeMessage), NUMBER_OF_MESSAGE, STREAM, WRITE)) == -1) |
{ |
//grx_text("failed to create readTask Port",0,0,rgb16(255,255,255),0); |
grx_text("failed to create readTask Port",0,0,rgb16(255,255,255),0); |
exit(-1); |
} |
if((decoderTaskPort->displayTaskPort = port_create(displayPortName, sizeof(struct decodeDisplayMessage), NUMBER_OF_MESSAGE, STREAM, WRITE)) == -1) |
{ |
//grx_text("failed to create displayTask Port",0,0,rgb16(255,255,255),0); |
grx_text("failed to create displayTask Port",0,0,rgb16(255,255,255),0); |
exit(-1); |
} |
if((decoderTaskPort->readTaskPort = port_connect(readFilePortName, sizeof(struct readDecodeMessage), STREAM, READ)) == -1) |
{ |
//grx_text("failed to connect to readTask Port",0,0,rgb16(255,255,255),0); |
grx_text("failed to connect to readTask Port",0,0,rgb16(255,255,255),0); |
exit(-1); |
} |
if((displayTaskPort = port_connect(displayPortName, sizeof(struct decodeDisplayMessage), STREAM, READ)) == -1) |
{ |
//grx_text("failed to connect to displayTask Port",0,0,rgb16(255,255,255),0); |
grx_text("failed to connect to displayTask Port",0,0,rgb16(255,255,255),0); |
exit(-1); |
} |
|
// graphic card Initialization |
//graphic card Initialization |
if (grx_init() < 1) { |
exit(-1); |
} |
438,8 → 435,7 |
cprintf("GRX Err\n"); |
exit(-1); |
} |
|
/* |
|
kern_gettime(&simtime); |
for (i=1; i<10;i++) { |
simtime.tv_sec+=1; |
448,23 → 444,22 |
|
simtime.tv_sec+=10; |
kern_event_post(&simtime,(void *)((void *)(ending_system)), NULL); |
*/ |
ch = keyb_getch(BLOCK); |
kern_printf("Main %d\n", ch); |
/*ch = keyb_getch(BLOCK); |
|
while(ch != ESC) { |
|
switch (ch) |
{ |
|
case '1': |
case '1': */ |
addReadTaskToServer(readTaskServer); |
addDecoderThreadToServer(decoderServer); |
addDisplayTaskToServer(displayServer); |
|
/* |
break; |
case '2': |
sprintf(tmp,"Number of dummy task: %d", i); |
//grx_text(tmp,0,0,rgb16(255,255,255),0); |
grx_text(tmp,0,0,rgb16(255,255,255),0); |
i++; |
addOverLoadTaskToServer(overloadServer); |
break; |
476,9 → 471,9 |
ch = keyb_getch(BLOCK); |
|
} |
|
ending_system(NULL); |
// while(1); |
*/ |
//ending_system(NULL); |
while(1); |
|
return 0; |
|