Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 944 → Rev 945

/shark/trunk/ports/first/first-sync.c
51,9 → 51,15
fsf_create_synch_obj(fsf_synch_obj_handle_t *synch_handle)
{
int index,oldindex;
SYS_FLAGS f;
f=kern_fsave();
 
index=hash_fun(synch_handle);
index=hash_fun(synch_handle);
if (index<0) exit(-1);
if (index<0 || index>=MAX_HASH_ENTRY) {
kern_frestore(f);
return FSF_ERR_INVALID_SYNCH_OBJ_HANDLE;
}
 
if (htable[index].id==1) {
oldindex=index;
60,7 → 66,10
index = (index + 1) % MAX_HASH_ENTRY;
// find
while (htable[index].id == 1 && index!=oldindex) index=(index+1) % MAX_HASH_ENTRY;
if (index==oldindex) return FSF_ERR_TOO_MANY_SYNCH_OBJS;
if (index==oldindex) {
kern_frestore(f);
return FSF_ERR_TOO_MANY_SYNCH_OBJS;
}
}
//if (!synch_handle) return FSF_ERR_INVALID_SYNCH_OBJECT_HANDLE;
 
67,6 → 76,9
iq_init(&(htable[index].threads), NULL, 0);
htable[index].events = 0;
htable[index].id = 1;
 
kern_frestore(f);
 
*synch_handle=index;
 
return 0;
82,7 → 94,12
fsf_server_id_t server;
SYS_FLAGS f;
f=kern_fsave();
 
if (synch_handle<0 || synch_handle>=MAX_HASH_ENTRY) {
kern_frestore(f);
return FSF_ERR_INVALID_SYNCH_OBJ_HANDLE;
}
 
if (htable[index].id==-1) {
kern_frestore(f);
return FSF_ERR_INVALID_SYNCH_OBJ_HANDLE;
109,6 → 126,12
int index=synch_handle;
SYS_FLAGS f;
f=kern_fsave();
if (synch_handle<0 || synch_handle>=MAX_HASH_ENTRY) {
kern_frestore(f);
return FSF_ERR_INVALID_SYNCH_OBJ_HANDLE;
}
 
if (htable[index].id==-1) {
kern_frestore(f);
return FSF_ERR_INVALID_SYNCH_OBJ_HANDLE;
118,6 → 141,7
 
while (iq_getfirst(&(htable[index].threads)) != NIL);
htable[index].events = 0;
kern_frestore(f);
 
return 0;
 
143,12 → 167,6
SYS_FLAGS f;
fsf_server_id_t server;
 
if (next_budget->tv_sec < 0 || next_budget->tv_nsec > 1000000000)
return FSF_ERR_BAD_ARGUMENT;
if (next_period->tv_sec < 0 || next_period->tv_nsec > 1000000000)
return FSF_ERR_BAD_ARGUMENT;
 
if (at_absolute_time->tv_sec < 0 || at_absolute_time->tv_nsec > 1000000000)
return FSF_ERR_BAD_ARGUMENT;
 
239,12 → 257,6
fsf_server_id_t server;
SYS_FLAGS f;
 
if (next_budget->tv_sec < 0 || next_budget->tv_nsec > 1000000000)
return FSF_ERR_BAD_ARGUMENT;
if (next_period->tv_sec < 0 || next_period->tv_nsec > 1000000000)
return FSF_ERR_BAD_ARGUMENT;
 
f=kern_fsave();
local_scheduler_level = SERVER_get_local_scheduler_level_from_pid(fsf_server_level, exec_shadow);
337,12 → 349,6
 
SYS_FLAGS f;
 
if (next_budget->tv_sec < 0 || next_budget->tv_nsec > 1000000000)
return FSF_ERR_BAD_ARGUMENT;
if (next_period->tv_sec < 0 || next_period->tv_nsec > 1000000000)
return FSF_ERR_BAD_ARGUMENT;
 
if (abs_timeout->tv_sec < 0 || abs_timeout->tv_nsec > 1000000000)
return FSF_ERR_BAD_ARGUMENT;