]> Zhao Yanbai Git Server - minix.git/commit
Clean up and fix multiple bugs in select:
authorThomas Veerman <thomas@minix3.org>
Wed, 13 Apr 2011 13:25:34 +0000 (13:25 +0000)
committerThomas Veerman <thomas@minix3.org>
Wed, 13 Apr 2011 13:25:34 +0000 (13:25 +0000)
commitaba392e630a2e68cad903b3750ffe9e55a93a206
treed3490d8ecaf0a4a0960883cfc060b706515e96b2
parentf0740680cd5909e18fcc0422493361005eb17fd7
Clean up and fix multiple bugs in select:
 - Remove redundant code.
 - Always wait for the initial reply from an asynchronous select request,
   even if the select has been satisfied on another file descriptor or
   was canceled due to a serious error.
 - Restart asynchronous selects if upon reply from the driver turns out
   that there are deferred operations (and do not forget we're still
   interested in the results of the deferred operations).
 - Do not hang a non-blocking select when another blocking select on
   the same filp is still blocking.
 - Split blocking operations in read, write, and exceptions (i.e.,
   blocking on read does not imply the write will block as well).
 - Some loops would iterate over OPEN_MAX file descriptors instead of
   the "highest" file descriptor.
 - Use proper internal error return values.
 - A secondary reply from a synchronous driver is essentially the same
   as from an asynchronous driver (the only difference being how the
   answer is received). Merge.
 - Return proper error code after a driver failure.
 - Auto-detect whether a driver is synchronous or asynchronous.
 - Remove some code duplication.
 - Clean up code (coding style, add missing comments, put all select
   related code together).
servers/vfs/device.c
servers/vfs/dmap.c
servers/vfs/dmap.h
servers/vfs/file.h
servers/vfs/main.c
servers/vfs/pipe.c
servers/vfs/proto.h
servers/vfs/select.c