Hi Voljta, On 9.4.2012 22:15, Vojtech Horky wrote: > Thus, the idea is to check for waiting IPC even if expired timeouts > were processed.
I think this is a sane idea. > It seems to me that the current implementation is > trying to be fair: once something was done (expired timeouts were > handled), the manager fibril switches to a normal fibril to give > chance to other fibrils to run. It seems to me that the current implementation understands the timeouts rather strictly. In other words, zero timeout indicates a very impatient waiter which doesn't allow any time for the wakeup condition to become true even if that would have happened instantly. I think it won't hurt if the wakeup condition is given one-more non-blocking test to see if the waiter can get the message. Even if the message arrived just after the timeout, the caller will get the message and the timeout event will be silently ignored. Please double check that calling handle_expired_timeouts() also before going to ipc_wait_cycle() will not have any undesired side effects. + timeout = 0; + flags = SYNCH_FLAGS_NON_BLOCKING; I don't think you need to clear timeout as SYNCH_FLAGS_NON_BLOCKING will make the kernel ignore it. Jakub _______________________________________________ HelenOS-devel mailing list [email protected] http://lists.modry.cz/cgi-bin/listinfo/helenos-devel
