CVSROOT:        /cvs/uberbaum
Module name:    winsup
Changes by:     c...@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

Reply via email to