]> sourceware.org Git - newlib-cygwin.git/commit
Cygwin: FIFO: fix problems finding new owner
authorKen Brown <kbrown@cornell.edu>
Wed, 15 Jul 2020 13:46:42 +0000 (09:46 -0400)
committerKen Brown <kbrown@cornell.edu>
Thu, 16 Jul 2020 19:59:53 +0000 (15:59 -0400)
commitda9fea07592987474203a531b88d83312f569141
treea7aa182273abc8d0db71b6971eb8402136ed8206
parent0ee972d1b095bfea89499b358646e44d60aa4a4b
Cygwin: FIFO: fix problems finding new owner

When the owning reader closes and there are still readers open, the
owner needs to wait for a new owner to be found before closing its
fifo_client handlers.  This involves a loop in which dec_nreaders is
called at the beginning and inc_nreaders is called at the end.  Any
other reader that tries to access shmem->_nreaders during this loop
will therefore get an inaccurate answer.

Fix this by adding an nreaders method and using it instead of
dec_nreaders and inc_nreaders.  Also add nreaders_lock to control
access to the shmem->_nreaders.

Make various other changes to improve the reliability of finding a new
owner.
winsup/cygwin/fhandler.h
winsup/cygwin/fhandler_fifo.cc
This page took 0.026942 seconds and 5 git commands to generate.