303,7 → 303,7 |
} |
//kern_printf("(SO LK)"); |
// we need a special implementation for mutex_lock ... additional parameter |
return PISTAR_lock(FSF_get_shared_object_level(), &htable[index].mx,TIMESPEC2USEC(&op->wcet) ); |
return PISTAR_lock(FSF_get_shared_object_level(), &htable[index].mx,TIMESPEC2USEC(&op->wcet)); |
|
} |
|
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; |
obj->shared_op[i].obj_id=obj->obj_id; |
op->obj_id=obj->obj_id; |
obj->shared_op[i].op_id = op->op_id; |
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; |
|
|