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
