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; |
|
|