This is the mail archive of the
cygwin-cvs@cygwin.com
mailing list for the Cygwin project.
winsup/cygwin ChangeLog cygheap.h dtable.cc dt ...
- From: cgf at cygwin dot com
- To: cygwin-cvs at cygwin dot com
- Date: 17 Dec 2011 00:03:32 -0000
- Subject: winsup/cygwin ChangeLog cygheap.h dtable.cc dt ...
CVSROOT: /cvs/uberbaum
Module name: winsup
Changes by: cgf@sourceware.org 2011-12-17 00:03:31
Modified files:
cygwin : ChangeLog cygheap.h dtable.cc dtable.h
exceptions.cc fhandler.cc fhandler.h
fhandler_termios.cc syscalls.cc
Log message:
Implement fhandler reference counting.
* cygheap.h
(cygheap_fdmanip::release): Make virtual.
(cygheap_fdnew::~cygheap_fdnew): New destructor increments reference count when
fd has been allocated.
(cygheap_fdget::fh): New (old?) field.
(cygheap_fdget::cygheap_fdget): Increment reference count when we've found an
active fd. Set fh appropriately.
(cygheap_fdget::~cygheap_fdget): Decrement reference count when appropriate.
Delete fh if reference count goes to zero.
(cygheap_fdget::release): New function. Do more bookkeping on release.
* dtable.cc (dtable::release): Change from void to boolean return. Only delete
the fhandler when its reference count is <= 0 (this should be a fairly unusual
case). Return true if fhandler has been deleted.
(cygwin_attach_handle_to_fd): Increment reference count when fh is assigned.
(dtable::init_std_file_from_handle): Ditto.
* dtable.h (dtable::release): Change return to boolean.
* fhandler.cc (fhandler_base::fhandler_base): Set new isclosed flag to false.
Set _refcnt to zero.
(fhandler_base::close): Simplify paranoid debugging output. Set new isclosed()
flag.
(fhandler_base_overlapped::wait_overlapped): Use isclosed() flag to avoid
querying the exception handle.
* fhandler.h (fhandler_base::_refcnt): New field.
(fhandler_base::refcnt): New function.
(fhandler_base::isclosed): Implement.
(fhandler_base::fhandler_base): Set isclosed to false.
* syscalls.cc: Remove space after function before parentheses for several
strace printfs.
(dup): Add standard strace "leaver" code.
(dup2): Ditto.
(dup3): Ditto.
(remove): Ditto.
(getpid): Ditto.
(getppid): Ditto.
(lseek64): Fix strace debugging to correctly use %R.
* fhandler_termios.cc (fhandler_termios::tcsetpgrp): Avoid sending signals to
other processes if we're debugging since it can cause a deadlock with the
calling debugger.
* exceptions.cc (_cygtls::call_signal_handler): Add debugging-only strace
output.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/winsup/cygwin/ChangeLog.diff?cvsroot=uberbaum&r1=1.5629&r2=1.5630
http://sourceware.org/cgi-bin/cvsweb.cgi/winsup/cygwin/cygheap.h.diff?cvsroot=uberbaum&r1=1.152&r2=1.153
http://sourceware.org/cgi-bin/cvsweb.cgi/winsup/cygwin/dtable.cc.diff?cvsroot=uberbaum&r1=1.240&r2=1.241
http://sourceware.org/cgi-bin/cvsweb.cgi/winsup/cygwin/dtable.h.diff?cvsroot=uberbaum&r1=1.54&r2=1.55
http://sourceware.org/cgi-bin/cvsweb.cgi/winsup/cygwin/exceptions.cc.diff?cvsroot=uberbaum&r1=1.371&r2=1.372
http://sourceware.org/cgi-bin/cvsweb.cgi/winsup/cygwin/fhandler.cc.diff?cvsroot=uberbaum&r1=1.417&r2=1.418
http://sourceware.org/cgi-bin/cvsweb.cgi/winsup/cygwin/fhandler.h.diff?cvsroot=uberbaum&r1=1.447&r2=1.448
http://sourceware.org/cgi-bin/cvsweb.cgi/winsup/cygwin/fhandler_termios.cc.diff?cvsroot=uberbaum&r1=1.92&r2=1.93
http://sourceware.org/cgi-bin/cvsweb.cgi/winsup/cygwin/syscalls.cc.diff?cvsroot=uberbaum&r1=1.604&r2=1.605