[Embeddedxen-devel] Domain blocking - wrong behaviour
Brought to you by:
rossierd
From: ROSSIER D. <Dan...@he...> - 2009-06-19 20:26:32
|
Hello, Doing some tests with miniOS, we faced the following problem: The guest OS may block itself until the next event (whatever the event is) via the appropriate hypercall (HYPERVISOR_sched_op(SCHEDOP_block, 0). However, the hypervisor unblocks the domain as soon as an event occurs. If the next event happens to early, the hypervisor will unblock the domain even before the hypercall has blocked it, hence the guest OS waits indefinitely. To avoid this behaviour, we adapted the common/schedule.c hypervisor scheduler: the do_set_timer_op() has been modified in order to check if the offset is negative; in this case, it returns -1 and the guest OS can test return value before deciding if blocking itself or not. Cheers Daniel |