Official MINIX sources - Automatically replicated from gerrit.minix3.org
If a select(2) call was issued on a file descriptor for which the file pointer was closed due to invalidation (FILP_CLOSED), typically as the result of a character/socket driver dying, the call would previously return with an error: EINTR upon call entry or EIO on invalidation at at a later time. Especially the former could severely confuse applications, which would assume the call was interrupted by a signal, restart the select call and immediately get EINTR again, ad infinitum. This patch changes the select(2) semantics such that for closed filps, the file descriptor is returned as readable and/or writable (depending on the requested operations), as such letting the entire select call finish successfully. Applications will then typically attempt to read from and/or write to the file descriptor, resulting in an I/O error that they should generally be better equipped to handle. This patch also fixes a potential problem with returning early from a select(2) call if a bad file descriptor is given: previously, in such cases not all actions taken so far would be undone; now they are. Change-Id: Ia6581f8789473a8a6c200852fccf552691a17025 |
||
|---|---|---|
| bin | ||
| common | ||
| crypto | ||
| dist/pf/sbin/pfctl | ||
| distrib | ||
| docs | ||
| etc | ||
| external | ||
| games | ||
| gnu | ||
| include | ||
| lib | ||
| libexec | ||
| minix | ||
| releasetools | ||
| sbin | ||
| share | ||
| sys | ||
| tests | ||
| tools | ||
| usr.bin | ||
| usr.sbin | ||
| .gitignore | ||
| .gitreview | ||
| build.sh | ||
| LICENSE | ||
| Makefile | ||
| Makefile.inc | ||