Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 824 → Rev 825

/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);
}