newlib/winsup/cygwin
Ken Brown 0fda55133a Cygwin: FIFO: synchronize the fifo_reader and fifosel threads
The fifo_reader thread function and the function select.cc:peek_fifo()
can both change the state of a fifo_client_handler.  These changes are
made under fifo_client_lock, so there is no race, but the changes can
still be incompatible.

Add code to make sure that only one of these functions can change the
state from its initial fc_listening state.  Whichever function does
this calls the fhandler_fifo::record_connection method, which is now
public so that peek_fifo can call it.

Slightly modify that method to make it suitable for being called by
peek_fifo.

Make a few other small changes to the fifo_reader thread function to
change how it deals with the STATUS_PIPE_CLOSING value that can
(rarely) be returned by NtFsControlFile.

Add commentary to fhandler_fifo.cc to explain fifo_client connect
states and where they can be changed.
2020-08-04 08:15:19 -04:00
..
include Cygwin: Add a new win32_pstatus data type for modules on x86_64 2020-07-12 15:09:40 +01:00
lib Cygwin: update C++ dialect to gnu++14 2020-05-30 19:41:18 +02:00
libc Cygwin: fix formatting: drop trailing whitespace 2020-03-11 13:45:58 +01:00
math Cygwin: fix formatting: drop trailing whitespace 2020-03-11 13:45:58 +01:00
regex Cygwin: fix formatting: drop spaces leading tabs 2020-03-11 13:45:58 +01:00
release Cygwin: mmap: document recent bugfix 2020-07-21 17:57:37 -04:00
tzcode Cygwin: drop useless comment 2020-05-26 10:22:41 +02:00
DevNotes
Makefile.in Cygwin: update C++ dialect to gnu++14 2020-05-30 19:41:18 +02:00
ROADMAP
aclocal.m4
advapi32.cc
aio.cc Cygwin: fix formatting: drop trailing whitespace 2020-03-11 13:45:58 +01:00
analyze_sigfe
assert.cc
autogen.sh
autoload.cc Cygwin: memory: declare extended memory API 2020-04-07 17:42:02 +02:00
automode.c
binmode.c
child_info.h Cygwin: posix_spawn: add Cygwin-specific code fixing process synchronisation 2020-08-03 12:41:44 +02:00
clock.cc Cygwin: clocks: Add CLOCK_REALTIME_ALARM/CLOCK_BOOTTIME_ALARM clocks 2019-01-22 15:42:07 +01:00
clock.h Cygwin: clocks: Add CLOCK_REALTIME_ALARM/CLOCK_BOOTTIME_ALARM clocks 2019-01-22 15:42:07 +01:00
collate.h
common.din Cygwin: Export newlib ndbm functions 2019-07-24 22:32:48 +02:00
config.h.in
configure
configure.ac
cpuid.h
crt0.c Cygwin: 32 bit: remove old code to 16 bit align stack 2020-02-28 15:02:09 +01:00
ctype.cc
cxx.cc
cygerrno.h Cygwin: set/getsockopt: Move implementation into fhandler_socket class 2018-02-20 18:01:40 +01:00
cygheap.cc Cygwin: fix formatting: collapse whitespace-only lines 2020-03-11 13:45:58 +01:00
cygheap.h Cygwin: Revert attempting to unload user profile after use 2019-03-04 17:31:27 +01:00
cygheap_malloc.h Cygwin: posix timers: allocate timer_tracker on system heap. 2019-01-22 16:38:14 +01:00
cyglsa.h
cygmagic
cygmalloc.h
cygserver.h Cygwin: cygserver: drop useless packed attribute 2020-02-26 20:55:14 +01:00
cygserver_ipc.h
cygserver_msg.h
cygserver_pwdgrp.h Cygwin: fix formatting: drop spaces leading tabs 2020-03-11 13:45:58 +01:00
cygserver_sem.h
cygserver_setpwd.h
cygserver_shm.h
cygthread.cc Cygwin: cygthread: set thread name before calling thread func 2019-01-23 21:45:59 +01:00
cygthread.h
cygtls.cc
cygtls.h Cygwin: select: revamp non-polling code for signalfd 2019-08-18 14:02:01 +02:00
cygtls_padsize.h
cygwait.cc Cygwin: cygwait.cc: fix formatting of debug statement 2018-03-05 17:49:50 +01:00
cygwait.h
cygwin-cxx.h
cygwin-shilka
cygwin.ldif
cygwin.sc.in
cygwin_version.h
cygxdr.cc
cygxdr.h
dcrt0.cc Cygwin: fix formatting: collapse whitespace-only lines 2020-03-11 13:45:58 +01:00
debug.cc
debug.h
devices.cc Cygwin: Provide more COM devices 2019-10-23 10:05:42 +02:00
devices.h Cygwin: devices: drop MAX_CONSOLES and fix FH_CONS_MAX 2019-11-04 10:34:59 +01:00
devices.in Cygwin: Provide more COM devices 2019-10-23 10:05:42 +02:00
dir.cc Cygwin: fix formatting: drop spaces leading tabs 2020-03-11 13:45:58 +01:00
dlfcn.cc forkables: inline dll_list::forkables_supported 2019-02-07 15:58:02 +01:00
dll_init.cc Cygwin: dll_list: stat_real_file_once with ntname 2019-06-03 18:37:52 +02:00
dll_init.h Cygwin: dll_list: drop unused read_fbi method 2019-05-05 10:04:43 -04:00
dllfixdbg
dtable.cc Cygwin: fix formatting: drop spaces leading tabs 2020-03-11 13:45:58 +01:00
dtable.h
environ.cc Cygwin: remove CYGWIN=dos_file_warning option 2020-01-28 21:59:25 +01:00
environ.h
errno.cc Cygwin: clean error mapping 2018-02-20 17:59:53 +01:00
exception.h cygwin: convert most #ifndef __x86_64__ to #ifdef __i386__ 2017-11-27 14:36:06 +01:00
exceptions.cc Cygwin: fix formatting: drop trailing whitespace 2020-03-11 13:45:58 +01:00
exec.cc
external.cc Cygwin: fix formatting: collapse whitespace-only lines 2020-03-11 13:45:58 +01:00
fcntl.cc Cygwin: fix formatting: collapse whitespace-only lines 2020-03-11 13:45:58 +01:00
fenv.cc Add default implementation of fenv.h and all methods 2019-08-09 17:49:16 +02:00
fhandler.cc Cygwin: file I/O: make sure to treat write return value as ssize_t 2020-04-24 16:14:43 +02:00
fhandler.h Cygwin: FIFO: synchronize the fifo_reader and fifosel threads 2020-08-04 08:15:19 -04:00
fhandler_clipboard.cc
fhandler_console.cc Cygwin: convert sys_wcstombs/sys_mbstowcs wrapper to inline functions 2020-07-10 10:29:33 +02:00
fhandler_cygdrive.cc Cygwin: move fhandler_cygdrive methods into own source file 2019-01-07 12:29:07 +01:00
fhandler_dev.cc
fhandler_disk_file.cc Cygwin: stat: fix st_mode of fifos again 2020-05-28 13:34:19 -04:00
fhandler_dsp.cc cygwin: Remove comparisons of 'this' to 'NULL' in fhandler_dsp.cc 2017-10-09 11:44:10 +02:00
fhandler_fifo.cc Cygwin: FIFO: synchronize the fifo_reader and fifosel threads 2020-08-04 08:15:19 -04:00
fhandler_floppy.cc Cygwin: raw disk I/O: lock floppys as well 2020-04-24 16:22:26 +02:00
fhandler_netdrive.cc Cygwin: fix formatting: collapse whitespace-only lines 2020-03-11 13:45:58 +01:00
fhandler_nodevice.cc
fhandler_pipe.cc Cygwin: [gs]et_io_handle(): renamed to [gs]et_handle(). 2019-03-30 20:08:36 +01:00
fhandler_proc.cc fhandler_proc.cc(format_proc_cpuinfo): use _small_sprintf %X for microcode 2020-08-04 10:10:40 +02:00
fhandler_process.cc Cygwin: fix formatting: drop spaces leading tabs 2020-03-11 13:45:58 +01:00
fhandler_process_fd.cc Cygwin: [gs]et_io_handle(): renamed to [gs]et_handle(). 2019-03-30 20:08:36 +01:00
fhandler_procnet.cc Cygwin: change virtual_ftype_t to not rely on negative values 2019-07-22 18:42:39 +02:00
fhandler_procsys.cc Cygwin: change virtual_ftype_t to not rely on negative values 2019-07-22 18:42:39 +02:00
fhandler_procsysvipc.cc Cygwin: change virtual_ftype_t to not rely on negative values 2019-07-22 18:42:39 +02:00
fhandler_random.cc
fhandler_raw.cc Cygwin: fhandler_*: remove isdevice() and is_auto_device() 2019-07-22 08:15:16 -04:00
fhandler_registry.cc Cygwin: fix one more check for positive virtual_ftype_t values 2019-07-22 14:06:35 -04:00
fhandler_serial.cc Cygwin: serial: fix GCC warning 2020-03-26 14:13:37 +01:00
fhandler_signalfd.cc Cygwin: return full sigset_t from sig_send 2019-07-12 17:27:26 +02:00
fhandler_socket.cc Cygwin: AF_UNIX: store per-socket info in shared memory 2018-03-12 15:26:12 +01:00
fhandler_socket_inet.cc Cygwin: sockets: Rearrange check for connect failure 2020-07-20 09:49:34 +02:00
fhandler_socket_local.cc Cygwin: AF_LOCAL: fix fcntl and dup if O_PATH is set 2020-01-30 09:43:19 -05:00
fhandler_socket_unix.cc Cygwin: AF_UNIX: rework fixup_after_exec 2020-02-28 15:27:16 +01:00
fhandler_tape.cc Cygwin: tape: Handle non-standard "no medium" error code 2018-06-29 15:31:15 +02:00
fhandler_termios.cc Cygwin: pty, termios: Unify thoughts of read ahead beffer handling. 2020-07-01 09:25:54 +02:00
fhandler_timerfd.cc Cygwin: timerfd: rework implementation 2019-02-25 21:01:32 +01:00
fhandler_tty.cc Cygwin: pty: Fix a bug on redirecting something to /dev/pty*. 2020-07-20 10:06:37 +02:00
fhandler_virtual.cc Cygwin: change virtual_ftype_t to not rely on negative values 2019-07-22 18:42:39 +02:00
fhandler_virtual.h Cygwin: fix formatting: drop trailing whitespace 2020-03-11 13:45:58 +01:00
fhandler_windows.cc
fhandler_zero.cc
flock.cc Cygwin: fix formatting: drop spaces leading tabs 2020-03-11 13:45:58 +01:00
fork.cc Cygwin: posix_spawn: add Cygwin-specific code fixing process synchronisation 2020-08-03 12:41:44 +02:00
forkable.cc Cygwin: dll_list: no recursive use of nt_max_path_buf 2019-06-03 18:38:16 +02:00
gcrt0.c
gendef
gendevices
gentls_offsets Cygwin: gentls_offsets: Remove obsolte 'o' regex option 2019-01-15 13:19:41 +01:00
glob.cc
glob_pattern_p.cc
globals.cc Cygwin: remove CYGWIN=dos_file_warning option 2020-01-28 21:59:25 +01:00
gmon.c
gmon.h
grp.cc Cygwin: fix formatting: drop trailing whitespace 2020-03-11 13:45:58 +01:00
heap.cc Cygwin: Allow accessing 48 bit address space in Windows 8.1 or later 2019-06-04 16:58:53 +02:00
heap.h
hookapi.cc Cygwin: fix formatting: drop spaces leading tabs 2020-03-11 13:45:58 +01:00
how-autoload-works.txt
how-cygheap-works.txt
how-cygtls-works.txt
how-fhandlers-work.txt
how-signals-work.txt
how-spawn-works.txt
how-startup-shutdown-works.txt
how-to-debug-cygwin.txt
i686.din Remove matherr, and SVID and X/Open math library configurations 2019-01-23 10:46:24 +01:00
init.cc Cygwin: 32 bit: remove old code to 16 bit align stack 2020-02-28 15:02:09 +01:00
ioctl.cc Cygwin: open: support Linux-specific O_PATH flag 2019-01-07 19:35:00 +01:00
ipc.cc
kernel32.cc
lc_era.h Cygwin: update era and message locale data 2019-04-30 11:55:04 +02:00
lc_msg.h Cygwin: update era and message locale data 2019-04-30 11:55:04 +02:00
ldap.cc Cygwin: ldap: Fix overwriting domain when creating naming context 2019-03-02 12:43:34 +01:00
ldap.h Cygwin: fix formatting: drop trailing whitespace 2020-03-11 13:45:58 +01:00
libstdcxx_wrapper.cc Cygwin: update C++ dialect to gnu++14 2020-05-30 19:41:18 +02:00
loadavg.cc Cygwin: loadavg: improve debugging of load_init 2019-03-12 17:09:42 +01:00
loadavg.h Implement getloadavg() 2017-03-27 22:03:58 +01:00
lsearch.cc
malloc.cc
malloc_wrapper.cc Cygwin: fix formatting: drop spaces leading tabs 2020-03-11 13:45:58 +01:00
math.h
mcount.c
mcountFunc.S
miscfuncs.cc Cygwin: threads: use extended memory API if available 2020-04-07 18:23:11 +02:00
miscfuncs.h Cygwin: fix formatting: collapse whitespace-only lines 2020-03-11 13:45:58 +01:00
mkglobals_h
mkimport * Merge in cygwin-64bit-branch. 2013-04-23 09:44:36 +00:00
mkstatic
mktemp.cc
mkvers.sh Cygwin: version: Use UTC timestamp as build time 2019-01-24 11:39:43 +01:00
mmap.cc Cygwin: mmap: Remove AT_ROUND_TO_PAGE workaround 2020-07-22 10:51:27 +02:00
mmap_alloc.cc Cygwin: mmap_alloc: fix comment to document using the extended memory API 2020-04-07 18:23:11 +02:00
mmap_alloc.h Cygwin: shmat: use mmap allocator strategy on 64 bit 2019-08-08 11:27:52 +02:00
mmap_helper.h
mount.cc Cygwin: mount: define binary mount as default 2019-02-18 10:26:53 +01:00
mount.h Cygwin: mount: remove unused method mount_info::set_flags_from_win32_path 2019-02-18 10:23:15 +01:00
msg.cc
mtinfo.h
net.cc Cygwin: fix formatting: drop trailing whitespace 2020-03-11 13:45:58 +01:00
netdb.cc
nfs.cc
nfs.h
nlsfuncs.cc Cygwin: convert sys_wcstombs/sys_mbstowcs wrapper to inline functions 2020-07-10 10:29:33 +02:00
ntdll.h Cygwin: mmap: Remove AT_ROUND_TO_PAGE workaround 2020-07-22 10:51:27 +02:00
ntea.cc Cygwin: fix formatting: drop trailing whitespace 2020-03-11 13:45:58 +01:00
ntsecapi.h
passwd.cc Cygwin: fix formatting: drop trailing whitespace 2020-03-11 13:45:58 +01:00
path.cc Cygwin: symlinks: fix WSL symlink creation if cygdrive prefix is / 2020-04-21 10:39:36 +02:00
path.h Cygwin: remove CYGWIN=dos_file_warning option 2020-01-28 21:59:25 +01:00
pathfinder.h
perprocess.h
pinfo.cc Cygwin: remove CYGWIN=dos_file_warning option 2020-01-28 21:59:25 +01:00
pinfo.h Cygwin: fix process parent/child relationship after execve 2019-11-02 19:55:24 +01:00
poll.cc Cygwin: encapsulate Winsock based fhandler_socket classes 2018-02-23 15:24:18 +01:00
posix_ipc.cc Cygwin: clock.h: add valid_timespec() to check timespec for validity 2019-01-18 14:31:01 +01:00
posix_timer.cc Cygwin: posix timers: fix uninitialized variable 2020-02-26 16:59:56 +01:00
posix_timer.h Cygwin: posix timers: fix overrun count always being 1 too big 2019-01-22 18:20:18 +01:00
profil.c
profil.h
pseudo-reloc.cc
pthread.cc Cygwin: Implement pthread_tryjoin_np and pthread_timedjoin_np 2018-06-27 17:56:59 +02:00
pwdgrp.h Cygwin: fix formatting: drop spaces leading tabs 2020-03-11 13:45:58 +01:00
quotactl.cc Cygwin: fix formatting: drop trailing whitespace 2020-03-11 13:45:58 +01:00
random.cc Cygwin: fix build with GCC 7 2018-04-16 22:46:11 -05:00
registry.cc
registry.h
regparm.h
resource.cc Cygwin: Cleanup time handling 2018-02-07 13:07:44 +01:00
scandir.cc cygwin: export strverscmp, add versionsort 2017-06-19 08:16:42 -05:00
sched.cc Cygwin: Fix return value of sched_getaffinity 2019-06-28 17:10:39 +02:00
sec_acl.cc Cygwin: get_posix_access: avoid negative subscript 2019-08-26 13:38:31 -04:00
sec_auth.cc Cygwin: fix: seteuid32() must return EPERM if privileges are not held. 2019-03-27 17:08:49 +01:00
sec_helper.cc Cygwin: fix formatting: drop trailing whitespace 2020-03-11 13:45:58 +01:00
sec_posixacl.cc
sec_posixacl.h Fix invalid acl_entry_t on 32-bit Cygwin 2020-07-10 10:29:47 +02:00
security.cc Cygwin: fix formatting: drop spaces leading tabs 2020-03-11 13:45:58 +01:00
security.h Cygwin: fix formatting: collapse whitespace-only lines 2020-03-11 13:45:58 +01:00
select.cc Cygwin: FIFO: synchronize the fifo_reader and fifosel threads 2020-08-04 08:15:19 -04:00
select.h Cygwin: serial: use per call OVERLAPPED structs 2020-03-23 21:06:03 +01:00
sem.cc
setlsapwd.cc
shared.cc forkables: simplify disabling via shm 2019-02-07 15:58:02 +01:00
shared_info.h forkables: inline dll_list::forkables_supported 2019-02-07 15:58:02 +01:00
shm.cc Cygwin: shmat: use mmap allocator strategy on 64 bit 2019-08-08 11:27:52 +02:00
signal.cc Cygwin: rename NSIG to _NSIG, change visibility of NSIG to MISC 2020-02-18 11:25:12 +01:00
sigproc.cc Cygwin: rename NSIG to _NSIG, change visibility of NSIG to MISC 2020-02-18 11:25:12 +01:00
sigproc.h Cygwin: rename NSIG to _NSIG, change visibility of NSIG to MISC 2020-02-18 11:25:12 +01:00
smallprint.cc Cygwin: fix declaration of __small_{v}sprintf 2020-05-25 13:32:49 +02:00
sortdin
spawn.cc Cygwin: posix_spawn: add Cygwin-specific code fixing process synchronisation 2020-08-03 12:41:44 +02:00
speclib
spinlock.h Cygwin: spinlock: remove useless get_ll call 2018-11-26 17:59:10 +01:00
strace.cc Cygwin: pty: Limit API hook to the program linked with the APIs. 2019-09-04 15:59:38 +02:00
strfuncs.cc Cygwin: convert sys_wcstombs/sys_mbstowcs wrapper to inline functions 2020-07-10 10:29:33 +02:00
string.h
strsep.cc Use remove-advertising-clause script to edit BSD licenses 2020-01-29 19:03:31 +01:00
strsig.cc Cygwin: rename NSIG to _NSIG, change visibility of NSIG to MISC 2020-02-18 11:25:12 +01:00
sync.cc
sync.h
syscalls.cc Cygwin: symlink/mknod: fix ACL handling 2020-01-28 17:58:06 +01:00
sysconf.cc Add support for Hygon Dhyana processor 2019-06-03 10:32:58 +02:00
syslog.cc Fix a problem that connection to syslogd fails. 2018-07-06 10:41:21 +02:00
termios.cc
textmode.c
textreadmode.c
thread.cc Cygwin: return full sigset_t from sig_send 2019-07-12 17:27:26 +02:00
thread.h Cygwin: Implement pthread_tryjoin_np and pthread_timedjoin_np 2018-06-27 17:56:59 +02:00
timerfd.cc Cygwin: timerfd: avoid a deadlock 2019-06-25 15:44:43 -04:00
timerfd.h Cygwin: timerfd: avoid a deadlock 2019-06-25 15:44:43 -04:00
times.cc Cygwin: fix formatting: drop spaces leading tabs 2020-03-11 13:45:58 +01:00
tls_pbuf.cc
tls_pbuf.h Cygwin: fix formatting: drop trailing whitespace 2020-03-11 13:45:58 +01:00
tlsoffsets.h Cygwin: select: revamp non-polling code for signalfd 2019-08-18 14:02:01 +02:00
tlsoffsets64.h Cygwin: select: revamp non-polling code for signalfd 2019-08-18 14:02:01 +02:00
tty.cc Cygwin: pty: Fix screen distortion after less for native apps again. 2020-06-05 21:34:52 -04:00
tty.h Cygwin: pty: Fix screen distortion after less for native apps again. 2020-06-05 21:34:52 -04:00
uinfo.cc Cygwin: accounts: Report unrecognized db_* nsswitch.conf keywords 2020-04-22 09:32:33 +02:00
uname.cc Cygwin: unbreak the build with GCC 7 2019-07-19 14:14:33 -04:00
update-copyright
userinfo.h
vstrlist.h
wait.cc
wchar.h Cygwin: convert sys_wcstombs/sys_mbstowcs wrapper to inline functions 2020-07-10 10:29:33 +02:00
wincap.cc Cygwin: tcp: Support TCP_USER_TIMEOUT 2020-07-01 20:30:52 +02:00
wincap.h Cygwin: tcp: Support TCP_USER_TIMEOUT 2020-07-01 20:30:52 +02:00
window.cc
winf.cc
winf.h
wininfo.h
winlean.h Cygwin: memory: declare extended memory API 2020-04-07 17:42:02 +02:00
winsup.h Cygwin: fix declaration of __small_{v}sprintf 2020-05-25 13:32:49 +02:00
winver.rc
x86_64.din