genode/repos/os/src/lib
Martin Stein 93a0c66589 timeout: do not handle timeouts while scheduling
To handle all pending timeouts in the context of scheduling a timeout
was only necessary because the Timeout framework once made use of the
Alarm framework. The method Alarm_scheduler::schedule_absolute took an
absolute deadline as argument and we couldn't change this beause the
Alarm framework was also used without the Timeout framework. We had to
calculate this absolute deadline with the now time of the Timeout
framework but the Alarm framework has its own now time that is always a
bit behind the one of the Timeout framework. This lead to bad decisisons
when finding the right position for the new timeout. Now, we can call
schedule_absolute with a relative duration and thereby fix the problem.

When we schedule an absolute timeout without considering the small time
difference, the end-time for the timeout that is calculated using the
local time value is also smaller than the expected end-time. This can
also lead to directly triggering timeouts that should have triggered
with a certain delay.

As it is not trivial to update the local time value while scheduling a
timeout _without_ calling other timeout handlers, we simply raise the
duration of the new timeout by the age of the local time value.

Issue #2704
2018-04-10 11:18:18 +02:00
..
alarm alarm: fix bug in _setup_alarm 2017-10-19 13:29:41 +02:00
blit Adjust file headers to refer to the AGPLv3 2017-02-28 12:59:29 +01:00
net net: ICMP protocol 2018-04-10 11:11:52 +02:00
server base: classify signals as I/O and application level 2017-05-31 13:15:58 +02:00
timed_semaphore timed_semaphore: fix deprecated warning 2017-05-31 13:16:19 +02:00
timeout timeout: do not handle timeouts while scheduling 2018-04-10 11:18:18 +02:00
trace/policy trace/policy/rpc_name: enable building again 2018-02-09 13:34:20 +01:00
vfs Notification support for the VFS library 2018-04-10 11:11:51 +02:00