Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 1191 → Rev 1192

/demos/trunk/fsf/test3.c
116,6 → 116,7
// --------------------------------------------------
// --------------------------------------------------
 
pthread_t jposix = -1;
pthread_t j1 = -1;
pthread_t j2 = -1;
pthread_t j3 = -1;
128,6 → 129,43
 
pthread_mutex_t mux;
 
void *posix(void *arg)
{
struct timespec actual,end;
int actpersecond,act;
int cycle;
 
act = 0;
actpersecond = 0;
cycle = 0;
for (;;) {
cycle++;
kern_gettime(&actual);
 
if (act == 0) {
TIMESPEC_ASSIGN(&end,&actual);
end.tv_sec++;
}
 
if (TIMESPEC_A_LT_B(&actual,&end)) {
act++;
} else {
actpersecond = act;
act = 0;
}
 
pthread_mutex_lock(&mux);
printf_xy(0,exec_shadow,GREEN,"Thread %3d Act_per_Second = %8d cycle = %8d",
exec_shadow,actpersecond,cycle);
pthread_mutex_unlock(&mux);
 
}
 
return NULL;
 
}
 
void *star(void *arg)
{
struct timespec actual,end;
142,7 → 180,7
cycle++;
kern_gettime(&actual);
rec = GRUBSTAR_get_last_reclaiming(grubstar_level);
rec = SERVER_get_last_reclaiming(grubstar_level);
 
if (act == 0) {
TIMESPEC_ASSIGN(&end,&actual);
156,10 → 194,10
act = 0;
}
 
//pthread_mutex_lock(&mux);
pthread_mutex_lock(&mux);
printf_xy(0,exec_shadow,WHITE,"Thread %3d Act_per_Second = %8d cycle = %8d rec = %8d",
exec_shadow,actpersecond,cycle,rec);
//pthread_mutex_unlock(&mux);
pthread_mutex_unlock(&mux);
 
}
 
181,7 → 219,7
cycle++;
kern_gettime(&actual);
rec = GRUBSTAR_get_last_reclaiming(grubstar_level);
rec = SERVER_get_last_reclaiming(grubstar_level);
 
if (act == 0) {
TIMESPEC_ASSIGN(&end,&actual);
195,10 → 233,10
act = 0;
}
 
//pthread_mutex_lock(&mux);
pthread_mutex_lock(&mux);
printf_xy(0,exec_shadow,RED,"Thread %3d Act_per_Second = %8d cycle = %8d rec = %8d",
exec_shadow,actpersecond,cycle,rec);
//pthread_mutex_unlock(&mux);
pthread_mutex_unlock(&mux);
 
task_endcycle();
 
208,19 → 246,16
 
}
 
int keyinc = 5;
 
void *edftask(void *arg)
{
int i,j;
long long j;
while(1) {
for (i=0;i<5; i++) {
for (j=0; j<10; j++);
//cputc('#');
//cputs((char *)(arg));
for (j=0; j<10000*keyinc; j++);
task_endcycle();
}
 
task_endcycle();
}
 
return NULL;
}
 
228,12 → 263,13
void create()
{
HARD_TASK_MODEL mhard;
int err;
 
struct timespec period1 = {0,100000000}; //30%
struct timespec period2 = {0,200000000}; //15%
struct timespec period1 = {0,90000000}; //30%
struct timespec period2 = {0,300000000}; //20%
struct timespec period3 = {0,300000000}; //10%
struct timespec budget1 = {0,30000000};
struct timespec budget2 = {0,30000000};
struct timespec budget2 = {0,60000000};
struct timespec budget3 = {0,30000000};
PID t1, t2;
242,8 → 278,8
 
hard_task_default_model(mhard);
hard_task_def_ctrl_jet(mhard);
hard_task_def_mit(mhard,30000);
hard_task_def_wcet(mhard,3000);
hard_task_def_mit(mhard,30000); //5%
hard_task_def_wcet(mhard,1500);
hard_task_def_arg(mhard,(void *)"X");
hard_task_def_group(mhard,1);
hard_task_def_periodic(mhard);
255,8 → 291,8
sys_end();
}
 
hard_task_def_mit(mhard,30000);
hard_task_def_wcet(mhard,3000);
hard_task_def_mit(mhard,30000); //5%
hard_task_def_wcet(mhard,1500);
hard_task_def_arg(mhard,(void *)"Y");
t2 = task_create("Y", edftask, &mhard, NULL);
if (t2 == NIL) {
264,7 → 300,7
sys_end();
}
 
//group_activate(1);
group_activate(1);
 
fsf_initialize_contract(&contract);
 
277,10 → 313,13
fsf_set_contract_basic_parameters(&contract,&budget3,&period3,NULL,NULL,FSF_DEFAULT_WORKLOAD);
fsf_negotiate_contract(&contract,&server3);
fsf_set_contract_basic_parameters(&contract,&budget1,&period1,NULL,NULL,FSF_DEFAULT_WORKLOAD);
fsf_set_contract_basic_parameters(&contract,&budget2,&period2,NULL,NULL,FSF_DEFAULT_WORKLOAD);
fsf_set_local_scheduler_parameter(&contract, FSF_SCHEDULER_EDF);
fsf_negotiate_contract(&contract,&server4);
 
err = pthread_create(&jposix, NULL, posix, NULL);
if (err) kern_printf("(Error creating posix task)");
 
kern_printf("(End Create)");
 
}
288,43 → 327,49
int main(int argc, char **argv)
{
 
char ch = 0;
int err;
HARD_TASK_MODEL ht;
struct timespec endtimer;
 
pthread_mutex_init(&mux,NULL);
 
srand(kern_gettime(NULL));
create();
kern_gettime(&endtimer);
endtimer.tv_sec += 20;
kern_event_post(&endtimer, (void (*)(void *))(sys_end), NULL);
 
do {
ch = keyb_getch(BLOCK);
err = fsf_create_thread(server1,&j1,NULL,star,NULL,NULL);
kern_printf("(%d)",err);
err = fsf_create_thread(server2,&j2,NULL,star,NULL,NULL);
kern_printf("(%d)",err);
err = fsf_create_thread(server3,&j3,NULL,star,NULL,NULL);
kern_printf("(%d)",err);
hard_task_default_model(ht);
hard_task_def_mit(ht,200000);
hard_task_def_wcet(ht,50000);
err = fsf_create_thread(server4,&j4,NULL,periodic_star,NULL,&ht);
kern_printf("(%d)",err);
 
switch(ch) {
case '1':
err = fsf_create_thread(server1,&j1,NULL,star,NULL,NULL);
kern_printf("(%d)",err);
break;
case '2':
err = fsf_create_thread(server2,&j2,NULL,star,NULL,NULL);
kern_printf("(%d)",err);
break;
case '3':
err = fsf_create_thread(server3,&j3,NULL,star,NULL,NULL);
kern_printf("(%d)",err);
break;
case '4':
hard_task_default_model(ht);
hard_task_def_mit(ht,200000);
hard_task_def_wcet(ht,100000);
err = fsf_create_thread(server4,&j4,NULL,periodic_star,NULL,&ht);
kern_printf("(%d)",err);
break;
}
/* hard_task_default_model(ht);
hard_task_def_mit(ht,159000);
hard_task_def_wcet(ht,50000);
err = fsf_create_thread(server4,&j4,NULL,periodic_star,NULL,&ht);
kern_printf("(%d)",err);
*/
err = fsf_create_thread(server1,&j1,NULL,star,NULL,NULL);
kern_printf("(%d)",err);
err = fsf_create_thread(server2,&j2,NULL,star,NULL,NULL);
kern_printf("(%d)",err);
err = fsf_create_thread(server3,&j3,NULL,star,NULL,NULL);
kern_printf("(%d)",err);
 
} while(ch != ESC);
 
sys_end();
 
return 0;
 
}
/demos/trunk/pse51/pinit.c
18,11 → 18,11
 
/**
------------
CVS : $Id: pinit.c,v 1.1.1.1 2002-09-02 09:37:47 pj Exp $
CVS : $Id: pinit.c,v 1.2 2003-10-07 09:30:18 giacomo Exp $
 
File: $File$
Revision: $Revision: 1.1.1.1 $
Last update: $Date: 2002-09-02 09:37:47 $
Revision: $Revision: 1.2 $
Last update: $Date: 2003-10-07 09:30:18 $
------------
 
This is a minimal initialization file for the PSE51 profile.
87,7 → 87,7
SEM_register_module();
 
/* for the Pthread library */
PTHREAD_register_module(1, 0, 1);
PTHREAD_register_module(0, 0, 1);
 
/* for the real time clock extensions */
TIMER_register_module();