/shark/trunk/ports/first/first-contract.c |
---|
328,7 → 328,7 |
} |
void fsf_init_shared_object(fsf_shared_object_t *obj, |
int fsf_init_shared_object(fsf_shared_object_t *obj, |
fsf_shared_obj_id_t id) { |
int index; |
int oldindex; |
338,9 → 338,15 |
PISTAR_mutexattr_default(a); |
//kern_printf("(SI SO)\n"); |
f=kern_fsave(); |
obj->size=0; |
index=hash_fun(&id); |
//kern_printf("Index %d Hash %d", index, htable[index].id); |
if (htable[index].id == id) { |
kern_frestore(f); |
return -1; |
} |
if (htable[index].id>=0) { |
oldindex=index; |
index = (index + 1) % MAX_HASH_ENTRY; |
349,13 → 355,19 |
// table is full |
if (index==oldindex) { |
kern_frestore(f); |
return; |
return -1; |
} |
} |
obj->size=0; |
mutex_init(&(htable[index]).mx, &a); |
htable[index].id=id; |
obj->obj_id=id; |
kern_frestore(f); |
return 0; |
//kern_printf("(EI SO)\n"); |
} |
391,13 → 403,16 |
kern_frestore(f); |
return -1; |
} |
//kern_printf("(DO SO)"); |
obj->size++; |
obj->shared_op[i].op_id=op->op_id; |
obj->shared_op[i].wcet=op->wcet; |
TIMESPEC_ASSIGN(&obj->shared_op[i].wcet,&op->wcet); |
obj->shared_op[i].obj_id=obj->obj_id; |
op->obj_id=obj->obj_id; |
kern_frestore(f); |
return 0; |
/shark/trunk/ports/first/include/fsf_contract.h |
---|
579,7 → 579,7 |
// initialization |
// The shared object id is set equal to the second parameter. |
void fsf_init_shared_object(fsf_shared_object_t *obj, |
int fsf_init_shared_object(fsf_shared_object_t *obj, |
fsf_shared_obj_id_t id); |
// Declare an operation |
/shark/trunk/ports/first/modules/pistar.c |
---|
20,11 → 20,11 |
/** |
------------ |
CVS : $Id: pistar.c,v 1.7 2004-09-07 09:46:14 trimarchi Exp $ |
CVS : $Id: pistar.c,v 1.8 2004-09-08 16:51:34 giacomo Exp $ |
File: $File$ |
Revision: $Revision: 1.7 $ |
Last update: $Date: 2004-09-07 09:46:14 $ |
Revision: $Revision: 1.8 $ |
Last update: $Date: 2004-09-08 16:51:34 $ |
------------ |
Priority Inhertitance protocol. see pi.h for more details... |
179,6 → 179,9 |
fsf_server_id_t server; |
f = kern_fsave(); |
TRACER_LOGEVENT(FTrace_EVT_set_mutex_lock,(unsigned short int)proc_table[exec_shadow].context,(unsigned int)m); |
//kern_printf("(PISTAR lock)"); |
p = (PISTAR_mutex_t *)m->opt; |
if (!p) { |
210,7 → 213,6 |
kern_cli(); |
} |
fsf_get_server(&server, exec_shadow); |
if (server==-1) kern_printf("error"); |
if (fsf_get_remain_budget(server)>wcet) cond=0; |
else { |
SERVER_disable_server(fsf_get_server_level(),server); |
/shark/trunk/ports/first/modules/grubstar.c |
---|
773,12 → 773,11 |
int GRUBSTAR_get_remain_capacity(LEVEL l, int budget) |
{ |
struct timespec actual,ty; |
TIME tx; |
int tx; |
GRUBSTAR_level_des *lev = (GRUBSTAR_level_des *)(level_table[l]); |
kern_gettime(&actual); |
SUBTIMESPEC(&actual, &lev->cap_lasttime, &ty); |
SUBTIMESPEC(&actual, &schedule_time, &ty); |
tx = TIMESPEC2USEC(&ty); |
// the remain capacity is from the first dispatch so is less then |
// actual capacity |
return (lev->b[budget].avail-tx); |
833,7 → 832,7 |
/* force a hard reservation event */ |
avail_budget=lev->b[lev->tb[exec]].avail; |
lev->b[lev->tb[exec]].flags = GRUBSTAR_NOACTIVE; |
//kern_printf("(GS DS %d)", exec); |
/* save the unused capacity */ |
spare=avail_budget+lev->b[lev->tb[exec]].avail; |
if (spare<=0) spare=0; |
/shark/trunk/ports/first/first-server.c |
---|
446,13 → 446,17 |
switch (scheduler_id) { |
case FSF_SCHEDULER_POSIX: |
return POSIXSTAR_getbudget(local_scheduler_level,thread); |
*server = POSIXSTAR_getbudget(local_scheduler_level,thread); |
return 0; |
case FSF_SCHEDULER_EDF: |
return EDFSTAR_getbudget(local_scheduler_level,thread); |
*server = EDFSTAR_getbudget(local_scheduler_level,thread); |
return 0; |
case FSF_SCHEDULER_RM: |
return RMSTAR_getbudget(local_scheduler_level,thread); |
*server = RMSTAR_getbudget(local_scheduler_level,thread); |
return 0; |
case FSF_SCHEDULER_MPEG: |
return MPEGSTAR_getbudget(local_scheduler_level,thread); |
*server = MPEGSTAR_getbudget(local_scheduler_level,thread); |
return 0; |
default: |
return -1; |
} |