[ovs-dev] OvsEvent.c help

Samuel Ghinet sghinet at cloudbasesolutions.com
Sat Aug 2 17:39:27 UTC 2014


Hello guys,

Studying a bit deeper the code in OvsEvent.c, I came across several things I do not understand.
Perhaps you can help me a bit :)

I can see it is used for the "queue packet for userspace".
Being called "OvsEvent", I had expected that it has something to do with KEVENT, but it is not the case.

Two things that I find difficult to understand are:
a) the code sets a cancel IRP routine, but it nowhere calls IoCancelIrp.
b) the requests to the driver (read / write) can be satisfied instantaneously, so we normally have no "pending" IRPs.
I don't think it is correct to call the queuing of packets to userspace a "pending" operation. The packets in queue are pending, but not the request. In device drivers I think we get a pending operation when the data needs time to arrive, or to be written to the device, and can therefore be canceled while the operation is in progress. I don't understand how these terms apply to our case.

Is the intent of calls to IoSetCancelRoutine in OvsEvent.c to provide a cleanup, should the driver be unloaded while having requests ongoing?

Could you please give me some details on the architecture of OvsEvent and its use by packet queuing and km-um communication?

Thanks!
Samuel



More information about the dev mailing list