From: Erik van der Kouwe Date: Wed, 23 Feb 2011 10:27:48 +0000 (+0000) Subject: Restart process after response from async driver on non-blocking select X-Git-Tag: v3.2.0~646 X-Git-Url: http://zhaoyanbai.com/repos/doc/man.3.txt?a=commitdiff_plain;h=36f9c1155a38392555e0bdaf39fd6ebabb9ac9b4;p=minix.git Restart process after response from async driver on non-blocking select --- diff --git a/servers/vfs/select.c b/servers/vfs/select.c index 5a40dc654..96c2c54d0 100644 --- a/servers/vfs/select.c +++ b/servers/vfs/select.c @@ -767,19 +767,18 @@ PUBLIC void select_reply1() dp->dmap_sel_filp= NULL; fp->filp_select_flags &= ~FSF_BUSY; if (!(fp->filp_select_flags & (FSF_UPDATE|FSF_BLOCK))) - fp->filp_select_ops= 0; - if (status != 0) + fp->filp_select_ops= 0; + + if (status > 0) { - if (status > 0) - { - /* Clear the replied bits from the request mask unless - * FSF_UPDATE is set. - */ - if (!(fp->filp_select_flags & FSF_UPDATE)) - fp->filp_select_ops &= ~status; - } - filp_status(fp, status); + /* Clear the replied bits from the request mask unless + * FSF_UPDATE is set. + */ + if (!(fp->filp_select_flags & FSF_UPDATE)) + fp->filp_select_ops &= ~status; } + filp_status(fp, status); + if (fp->filp_count > 1) fp->filp_count--; else