I have a driver that needs to do async TCP in the background while other
UEFI apps are running. The flow needs to go like this:
{
Tcp4->Accept(); // async
}
AcceptCallback() {
Tcp4->Transmit(); // async
}
TransmitCallback() {
Tcp4->Receive(); // async
}
This works up until Tcp4->Receive() which immediately returns
EFI_ACCESS_DENIED. I traced it back to Status = EfiAcquireLockOrFail
(&(Sock->Lock)); in SockRcv().
So the socket is locked while in the callback, which is very inconvenient.
I worked around it by setting a timer to call Tcp4->Receive() a few
milliseconds later. That way the callback finishes and the socket's lock is
released before my code is run. I'd rather not do it that way, though.
Is this intended? Thank you for any insight.
Thomas Rognon
------------------------------------------------------------------------------
Slashdot TV.
Video for Nerds. Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel