]> Zhao Yanbai Git Server - minix.git/commit
VFS: process char driver replies from main thread 50/950/2
authorDavid van Moolenbroek <david@minix3.org>
Fri, 30 Aug 2013 11:42:51 +0000 (13:42 +0200)
committerLionel Sambuc <lionel@minix3.org>
Tue, 18 Feb 2014 10:25:03 +0000 (11:25 +0100)
commitf707937192c6ffd5add956f99e88feaf264836e4
treef8417e04fa4fcb28a6330b2b548beb2d9422faf2
parent2e9f4d01980d12b008a6cdcc2bd2beec73f622f7
VFS: process char driver replies from main thread

Previously, processing of some replies coming from character drivers
could block on locks, and therefore, such processing was done from
threads that were associated to the character driver process. The
hidden consequence of this was that if all threads were in use, VFS
could drop replies coming from the driver. This patch returns VFS to
a situation where the replies from character drivers are processed
instantly from the main thread, by removing the situations that may
cause VFS to block while handling those replies.

- change the locking model for select, so that it will never block
  on any processing that happens after the select call has been set
  up, in particular processing of character driver select replies;
- clearly mark all select routines that may never block;
- protect against race conditions in do_select as result of the
  locking that still does happen there (as is required for pipes);
- also handle select timers from the main thread;
- move processing of character driver replies into device.c.

Change-Id: I4dc8e69f265cbd178de0fbf321d35f58f067cc57
servers/vfs/README
servers/vfs/device.c
servers/vfs/file.h
servers/vfs/main.c
servers/vfs/open.c
servers/vfs/pipe.c
servers/vfs/proto.h
servers/vfs/select.c