Red Hat's newlib C library with support for Jehanne
Go to file
Ken Brown 4811889e0c Cygwin: FIFO: support opening multiple readers
Although we can have multiple readers open because of dup/fork/exec,
the current code does not support multiple readers opening a FIFO by
explicitly calling 'open'.

The main complication in supporting this is that when a blocking
reader tries to open and there's already one open, it has to check
whether there any writers open.  It can't rely on the write_ready
event, whose state hasn't changed since the first writer opened.

To fix this, add two new named events, check_write_ready_evt and
write_ready_ok_evt, and a new method, check_write_ready().

The first event signals the owner's reader thread to call
check_write_ready(), which polls the fc_handler list to check for
connected writers.  If it finds none, it checks to see if there's a
writer in the process and then sets/resets write_ready appropriately.

When check_write_ready() finishes it sets write_ready_ok_evt to signal
the reader that write_ready has been updated.

The polling is done via fifo_client_handler::pipe_state().  As long as
it's calling that function anyway, check_write_ready() updates the
state of each handler.

Also add a new lock to prevent a race if two readers are trying to
open simultaneously.
2020-05-08 06:45:24 -04:00
config Sync with upstream gcc. 2016-06-23 15:54:55 -04:00
etc Remove spurious empty line in changelog entry. 2016-03-22 10:29:22 +01:00
include Sync with upstream gcc. 2016-06-23 15:54:55 -04:00
libgloss arm: Finish moving newlib to unified syntax for Thumb1 2020-03-02 13:33:11 +00:00
newlib newlib/libm/math: Make pow/powf return qnan for snan arg 2020-03-26 12:21:33 +01:00
texinfo * texinfo/texinfo.tex: Update to version 2009-03-28.05. 2009-04-21 12:36:46 +00:00
winsup Cygwin: FIFO: support opening multiple readers 2020-05-08 06:45:24 -04:00
.drone.yml Continuous Integration: Add Tea CI build configuration. 2016-06-28 13:42:59 +02:00
.gitattributes Add .gitattributes 2015-03-09 20:53:11 +01:00
.gitignore Add *.swp (Vim swap files) to .gitignore 2015-03-17 12:03:30 +01:00
COPYING 2005-07-14 Kelley Cook <kcook@gcc.gnu.org> 2005-07-14 01:24:56 +00:00
COPYING.LIB Sync toplevel with upstream GCC. 2016-03-22 10:25:20 +01:00
COPYING.LIBGLOSS Add PRU license to COPYING.NEWLIB and COPYING.LIBGLOSS 2019-10-31 15:09:07 -04:00
COPYING.NEWLIB Add PRU license to COPYING.NEWLIB and COPYING.LIBGLOSS 2019-10-31 15:09:07 -04:00
COPYING3 * COPYING3: New file. Contains version 3 of the GNU General Public License. 2007-07-17 13:50:23 +00:00
COPYING3.LIB * COPYING3: New file. Contains version 3 of the GNU General Public License. 2007-07-17 13:50:23 +00:00
ChangeLog Sync with upstream gcc. 2016-06-23 15:54:55 -04:00
MAINTAINERS MAINTAINERS: clarify policy with config/ (and other top level files) 2012-05-12 03:10:17 +00:00
Makefile.def Sync with upstream gcc. 2016-06-23 15:54:55 -04:00
Makefile.in Introduce @unless/@endunless and postbootstrap Makefile targets 2018-06-30 00:12:40 -03:00
Makefile.tpl Introduce @unless/@endunless and postbootstrap Makefile targets 2018-06-30 00:12:40 -03:00
README
README-maintainer-mode Cleanups after the update to Autoconf 2.64, Automake 1.11. 2009-08-22 17:08:06 +00:00
compile Sync toplevel with upstream GCC. 2016-03-22 10:25:20 +01:00
config-ml.in Sync toplevel with upstream GCC. 2016-03-22 10:25:20 +01:00
config.guess Update config.guess, config.sub to gcc master branch versions 2019-01-15 14:13:30 -05:00
config.rpath Remove freebsd1 from libtool.m4 macros and config.rpath. 2011-02-13 21:00:08 +00:00
config.sub Update config.guess, config.sub to gcc master branch versions 2019-01-15 14:13:30 -05:00
configure Introduce @unless/@endunless and postbootstrap Makefile targets 2018-06-30 00:12:40 -03:00
configure.ac Introduce @unless/@endunless and postbootstrap Makefile targets 2018-06-30 00:12:40 -03:00
depcomp Sync toplevel with upstream GCC. 2016-03-22 10:25:20 +01:00
djunpack.bat * djunpack.bat: Use ".." quoting in Sed command, for the sake of 2009-03-27 13:37:09 +00:00
install-sh Sync toplevel with upstream GCC. 2016-03-22 10:25:20 +01:00
libtool.m4 Sync toplevel with upstream GCC. 2016-03-22 10:25:20 +01:00
ltgcc.m4 * libtool.m4: Update to libtool 2.2.6. 2008-09-29 15:28:14 +00:00
ltmain.sh PR target/59788 2014-02-05 13:17:47 +00:00
ltoptions.m4 Sync Libtool from GCC. 2010-01-09 21:11:32 +00:00
ltsugar.m4 * libtool.m4: Update to libtool 2.2.6. 2008-09-29 15:28:14 +00:00
ltversion.m4 Sync Libtool from GCC. 2010-01-09 21:11:32 +00:00
lt~obsolete.m4 Sync Libtool from GCC. 2010-01-09 21:11:32 +00:00
makefile.vms
missing Sync toplevel with upstream GCC. 2016-03-22 10:25:20 +01:00
mkdep Use remove-advertising-clause script to edit BSD licenses 2020-01-29 19:03:31 +01:00
mkinstalldirs Sync toplevel with upstream GCC. 2016-03-22 10:25:20 +01:00
move-if-change Sync toplevel with upstream GCC. 2016-03-22 10:25:20 +01:00
setup.com 2009-09-01 Tristan Gingold <gingold@adacore.com> 2009-09-01 13:38:26 +00:00
src-release * src-release (do-proto-toplevel): Support subdir-path-prefixed 2013-10-15 20:45:52 +00:00
symlink-tree 2005-07-14 Kelley Cook <kcook@gcc.gnu.org> 2005-07-14 01:24:56 +00:00
ylwrap Sync toplevel with upstream GCC. 2016-03-22 10:25:20 +01:00

README

		   README for GNU development tools

This directory contains various GNU compilers, assemblers, linkers, 
debuggers, etc., plus their support routines, definitions, and documentation.

If you are receiving this as part of a GDB release, see the file gdb/README.
If with a binutils release, see binutils/README;  if with a libg++ release,
see libg++/README, etc.  That'll give you info about this
package -- supported targets, how to use it, how to report bugs, etc.

It is now possible to automatically configure and build a variety of
tools with one command.  To build all of the tools contained herein,
run the ``configure'' script here, e.g.:

	./configure 
	make

To install them (by default in /usr/local/bin, /usr/local/lib, etc),
then do:
	make install

(If the configure script can't determine your type of computer, give it
the name as an argument, for instance ``./configure sun4''.  You can
use the script ``config.sub'' to test whether a name is recognized; if
it is, config.sub translates it to a triplet specifying CPU, vendor,
and OS.)

If you have more than one compiler on your system, it is often best to
explicitly set CC in the environment before running configure, and to
also set CC when running make.  For example (assuming sh/bash/ksh):

	CC=gcc ./configure
	make

A similar example using csh:

	setenv CC gcc
	./configure
	make

Much of the code and documentation enclosed is copyright by
the Free Software Foundation, Inc.  See the file COPYING or
COPYING.LIB in the various directories, for a description of the
GNU General Public License terms under which you can copy the files.

REPORTING BUGS: Again, see gdb/README, binutils/README, etc., for info
on where and how to report problems.