diff options
author | Christopher Faylor <me@cgf.cx> | 2006-06-03 20:32:07 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2006-06-03 20:32:07 +0000 |
commit | 71d59a926f9d632b15c531325bad15edb32b8f81 (patch) | |
tree | 217f62dffc9dfac5b8142b33a70d1db67e75c201 /winsup/cygwin/pinfo.cc | |
parent | a615ed802386065c9ea3aa409767d4fcd8bfc4ed (diff) | |
download | cygnal-71d59a926f9d632b15c531325bad15edb32b8f81.tar.gz cygnal-71d59a926f9d632b15c531325bad15edb32b8f81.tar.bz2 cygnal-71d59a926f9d632b15c531325bad15edb32b8f81.zip |
* dcrt0.cc (dll_crt0_0): Call tty_list::init_session here.
(dll_crt0_1): Reflect renaming from tty_init to tty::init_session.
(do_exit): Reflect moving of tty_terminate into tty_list.
* exceptions.cc (events_init): Move tty_mutex stuff elsewhere.
* fhandler_console.cc (set_console_title): Use lock_ttys class.
* fhandler_termios.cc (fhandler_termios::bg_check): Make debug output more
accurate.
* fhandler_tty.cc (fhandler_tty_slave::open): Reflect move of attach_tty into
tty_list class. Don't attempt to grab master end of pty if master doesn't
exist.
(fhandler_pty_master::open): Reflect move of allocate_tty into tty_list class.
Use lock_ttys::release to release mutex. Improve debugging output.
(fhandler_pty_master::setup): Remove if 0'ed block. Fix argument to
SetNamedPipeHandleState.
* pinfo.cc (_pinfo::set_ctty): Lock ttys before setting sid/pgid. Improve
debugging. Add temporary debugging.
* tty.cc (tty_list::init_session): New function.
(tty::init_session): Rename from tty_init. Reflect move of attach_tty to
tty_list class.
(tty::create_master): Rename from create_tty_master.
(tty_list::attach): Rename from attach_tty. Reflect renaming of connect_tty to
connect. Ditto for allocate_tty.
(tty_terminate): Delete.
(tty_list::terminate): Subsume tty_terminate. Use lock_ttys rather than
manipulating mutex directly.
(tty_list::allocate): Rename from allocate_tty. Use lock_ttys rather than
manipulating mutex directly. Don't set sid here since linux apparently doesn't
do this. Reflect move of create_tty_master into tty.
(lock_ttys::lock_ttys): Define new constructor.
(lock_ttys::release): New function.
* tty.h (tty::exists): Return false immediately if !master_pid.
(tty::set_master_closed): Define new function.
(tty::create_master): Ditto.
(tty::init_session): Ditto.
(tty_list::mutex): New field.
(tty_list::allocate): Define new function.
(tty_list::connect): Ditto.
(tty_list::attach): Ditto.
(tty_list::init_session): Ditto.
(lock_ttys): New class.
(tty_init): Delete declaration.
(tty_terminate): Ditto.
(attach_tty): Ditto.
(create_tty_master): Ditto.
Diffstat (limited to 'winsup/cygwin/pinfo.cc')
-rw-r--r-- | winsup/cygwin/pinfo.cc | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/winsup/cygwin/pinfo.cc b/winsup/cygwin/pinfo.cc index 504c1c9f2..93ab9b945 100644 --- a/winsup/cygwin/pinfo.cc +++ b/winsup/cygwin/pinfo.cc @@ -331,14 +331,20 @@ _pinfo::set_ctty (tty_min *tc, int flags, fhandler_tty_slave *arch) if ((ctty < 0 || ctty == tc->ntty) && !(flags & O_NOCTTY)) { ctty = tc->ntty; - syscall_printf ("attached %s sid %d, pid %d, tty->pgid %d, tty->sid %d", - __ctty (), sid, pid, pgid, tc->getsid ()); + lock_ttys here; + syscall_printf ("attaching %s sid %d, pid %d, pgid %d, tty->pgid %d, tty->sid %d", + __ctty (), sid, pid, pgid, tc->getpgid (), tc->getsid ()); pinfo p (tc->getsid ()); if (sid == pid && (!p || p->pid == pid || !p->exists ())) { +#ifdef DEBUGGING + debug_printf ("resetting %s sid. Was %d, now %d. pgid was %d, now %d.", + __ctty (), tc->getsid (), sid, tc->getpgid (), pgid); +#else paranoid_printf ("resetting %s sid. Was %d, now %d. pgid was %d, now %d.", __ctty (), tc->getsid (), sid, tc->getpgid (), pgid); +#endif /* We are the session leader */ tc->setsid (sid); tc->setpgid (pgid); @@ -346,7 +352,9 @@ _pinfo::set_ctty (tty_min *tc, int flags, fhandler_tty_slave *arch) else sid = tc->getsid (); if (tc->getpgid () == 0) - tc->setpgid (pgid); +{debug_printf ("setting pgid to %d", pgid); + tc->setpgid (pgid); +} if (cygheap->ctty != arch) { debug_printf ("cygheap->ctty %p, arch %p", cygheap->ctty, arch); |