/shark/trunk/ports/first/first-contract.c |
---|
347,7 → 347,10 |
// collision detection |
while (htable[index].id >=0 && index!=oldindex) index=(index+1) % MAX_HASH_ENTRY; |
// table is full |
if (index==oldindex) return; |
if (index==oldindex) { |
kern_frestore(f); |
return; |
} |
} |
mutex_init(&(htable[index]).mx, &a); |
htable[index].id=id; |
371,15 → 374,23 |
int fsf_declare_shared_object_operation(fsf_shared_object_t *obj, |
fsf_shared_operation_t *op) { |
int i; |
SYS_FLAGS f; |
f=kern_fsave(); |
for (i=0; i<obj->size; i++) { |
// fail if the operation already declared |
if (op->op_id==obj->shared_op[i].op_id) |
if (op->op_id==obj->shared_op[i].op_id) { |
kern_frestore(f); |
return -1; |
} |
} |
// fail if the object is full |
if (obj->size>(FSF_MAX_SHARED_OPERATION-1)) |
if (obj->size>(FSF_MAX_SHARED_OPERATION-1)) { |
kern_frestore(f); |
return -1; |
} |
//kern_printf("(DO SO)"); |
obj->size++; |
obj->shared_op[i].op_id=op->op_id; |
386,7 → 397,7 |
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/modules/grubstar.c |
---|
252,11 → 252,13 |
SUBTIMESPEC(&schedule_time, &lev->cap_lasttime, &ty); |
tx = TIMESPEC2USEC(&ty); |
b->avail -= tx; |
b->avail += lev->b[lev->tb[p]].last_reclaiming; |
if (tx>=lev->b[lev->tb[p]].last_reclaiming) { |
b->avail -= tx; |
b->avail += lev->b[lev->tb[p]].last_reclaiming; |
} |
#ifdef GRUBSTAR_DEBUG |
kern_printf("(GS:Cap p%d av=%d tx=%d)", p, b->avail,(int)tx); |
kern_printf("(GS:Cap p%d av=%d tx=%d lr=%d)", p, b->avail,(int)tx, (int)lev->b[lev->tb[p]].last_reclaiming); |
#endif |
if (b->avail <= 0) { |
826,11 → 828,11 |
int spare; |
/* force a hard reservation event */ |
avail_budget=lev->b[lev->tb[exec_shadow]].avail; |
lev->b[lev->tb[exec_shadow]].avail=0; |
//level_table[proc_table[exec_shadow].task_level]->public_epilogue(proc_table[exec_shadow].task_level, exec_shadow); |
avail_budget=lev->b[lev->tb[exec]].avail; |
lev->b[lev->tb[exec]].flags = GRUBSTAR_NOACTIVE; |
/* save the unused capacity */ |
spare=avail_budget+lev->b[lev->tb[exec_shadow]].avail; |
spare=avail_budget+lev->b[lev->tb[exec]].avail; |
if (spare<=0) spare=0; |
} |
/shark/trunk/ports/first/first-server.c |
---|
669,10 → 669,5 |
int fsf_get_remain_budget(fsf_server_id_t server) { |
int remain; |
remain = SERVER_get_remain_capacity(fsf_server_level, server); |
if (remain<0) return 0; |
return remain; |
return SERVER_get_remain_capacity(fsf_server_level, server); |
} |