Hi,

So while working on cleaning up the vboxguest driver for mainline
linux kernel submission (*) I noticed some inconsistent behavior
wrt vgdrvIoCtl_CancelAllWaitEvents vs vgdrvIoCtl_WaitEvent.

If there are no waiters then vgdrvIoCtl_CancelAllWaitEvents
sets pSession->fPendingCancelWaitEvents and then when
vgdrvIoCtl_WaitEvent calls vbdgCheckWaitEventCondition it
will return VINF_SUCCESS + VBOXGUEST_WAITEVENT_OK even
if u32EventFlagsOut is 0.

While as vgdrvIoCtl_WaitEvent actually waits and then
vgdrvIoCtl_CancelAllWaitEvents gets called u32Result
gets set to VBOXGUEST_WAITEVENT_INTERRUPTED.

I'm planning on rewriting all this code to directly
use Linux waitqueues and I was wondering if I should
preserve this behavior ?

Regards,

Hans



*) Very much WIP, see: https://github.com/jwrdegoede/vboxguest
_______________________________________________
vbox-dev mailing list
[email protected]
https://www.virtualbox.org/mailman/listinfo/vbox-dev

Reply via email to