This series of patches looks good to me at this point, enough that I think it's fair to drop the RFC from the title.
I feel like 1-2 are kind of awkward split the way they are—and the fact that you have to edit an earlier comment shows this. I might recommend merging those two.
Sorry for the persistent slowness in review—this is a hard patch set, but I should try to be more prompt regardless.
I just have one more nitpick:
On 2/4/22 14:52, Jinoh Kang wrote:
- /* recv() returned EWOULDBLOCK, i.e. no data available yet */
- if (status == STATUS_DEVICE_NOT_READY && !sock->nonblocking)
- /* Synchronous, *blocking* I/O requested? */
- if (!req->force_async && !sock->nonblocking) { /* Set a timeout on the async if necessary. *
Note that the subsequent comment about when we set a timeout is pretty much superfluous now. The client isn't giving us a status anymore, and I think we don't need the comment anyway—the code is pretty clear now, and matches the expectation of when timeouts are set.