Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 933 → Rev 934

/shark/trunk/ports/first/first-sync.c
76,6 → 76,9
 
PID p;
int index, oldindex;
fsf_server_id_t server;
SYS_FLAGS f;
f=kern_fsave();
 
index=hash_fun(*synch_handle);
 
84,16 → 87,23
index = (index + 1) % MAX_HASH_ENTRY;
// find
while (htable[index].id != *synch_handle && index!=oldindex) index=(index+1) % MAX_HASH_ENTRY;
if (index==oldindex) return FSF_ERR_INVALID_SYNCH_OBJ_HANDLE;
if (index==oldindex) {
kern_frestore(f);
return FSF_ERR_INVALID_SYNCH_OBJ_HANDLE;
}
}
 
//if (!synch_handle) return FSF_ERR_INVALID_SYNCH_OBJECT_HANDLE;
if ((p = iq_getfirst(&(htable[index].threads))) != NIL)
if ((p = iq_getfirst(&(htable[index].threads))) != NIL) {
fsf_get_server(p, &server);
fsf_settask_preemptive(&server, p);
task_activate(p);
}
else
htable[index].events++;
 
kern_frestore(f);
return 0;
 
}
123,7 → 133,6
}
 
int restart_task(PID p) {
int budget, local_scheduler_level, scheduler_id;
fsf_server_id_t server;
 
fsf_get_server(p, &server);
225,6 → 234,7
TIME T,Q,D;
int index,oldindex;
int budget, local_scheduler_level, scheduler_id;
fsf_server_id_t server;
SYS_FLAGS f;
 
f=kern_fsave();
293,8 → 303,11
if (htable[index].events > 0) {
task_activate(exec_shadow);
htable[index].events--;
} else
} else {
fsf_get_server(exec_shadow, &server);
fsf_settask_nopreemptive(&server, exec_shadow);
iq_insertlast(exec_shadow,&(htable[index].threads));
}
 
#ifdef FSF_DEBUG
kern_printf("(Synch_Handle Events %d)",synch_handle->events);