OSDN Git Service

* cygthread.cc (cygthread::terminate_thread): In debugging output, use name of
authorcgf <cgf>
Sat, 3 Jun 2006 21:44:01 +0000 (21:44 +0000)
committercgf <cgf>
Sat, 3 Jun 2006 21:44:01 +0000 (21:44 +0000)
thread being terminated rather than thread doing terminating.
* fhandler.h (fhandler_pty_master::slave): Delete.
(fhandler_pty_master::get_unit): Ditto.
(fhandler_pty_master::setup): Change argument declaration to accommodate new
usage.
* fhandler_tty.cc (fhandler_tty_master::init): Remove obsolete slave
assignment.  Pass argument to setup indicating that this is a tty.
(fhandler_tty_slave::open): Use dev() method rather than referencing pc.dev
directly.
(fhandler_pty_master::open): Don't create archetype based on ptym device
number.  Set device number to use DEV_TTYM_MAJOR and tty number.  Pass argument
to setup indicating that this is a pty.
(fhandler_pty_master::setup): Change single argument to a flag indicating
whether we're creating a pty and use appropriately.  Calculate 't' variable
here rather than in caller.
* fhandler_dsp.cc (fhandler_dev_dsp::open): Use dev() method rather than
referencing pc.dev directly.

winsup/cygwin/ChangeLog
winsup/cygwin/cygthread.cc
winsup/cygwin/fhandler.h
winsup/cygwin/fhandler_dsp.cc
winsup/cygwin/fhandler_tty.cc

index 022ce76..b7ad00b 100644 (file)
@@ -1,5 +1,28 @@
 2006-06-03  Christopher Faylor  <cgf@timesys.com>
 
+       * cygthread.cc (cygthread::terminate_thread): In debugging output, use
+       name of thread being terminated rather than thread doing terminating.
+
+       * fhandler.h (fhandler_pty_master::slave): Delete.
+       (fhandler_pty_master::get_unit): Ditto.
+       (fhandler_pty_master::setup): Change argument declaration to
+       accommodate new usage.
+       * fhandler_tty.cc (fhandler_tty_master::init): Remove obsolete slave
+       assignment.  Pass argument to setup indicating that this is a tty.
+       (fhandler_tty_slave::open): Use dev() method rather than referencing
+       pc.dev directly.
+       (fhandler_pty_master::open): Don't create archetype based on ptym
+       device number.  Set device number to use DEV_TTYM_MAJOR and tty number.
+       Pass argument to setup indicating that this is a pty.
+       (fhandler_pty_master::setup): Change single argument to a flag
+       indicating whether we're creating a pty and use appropriately.
+       Calculate 't' variable here rather than in caller.
+
+       * fhandler_dsp.cc (fhandler_dev_dsp::open): Use dev() method rather
+       than referencing pc.dev directly.
+
+2006-06-03  Christopher Faylor  <cgf@timesys.com>
+
        * 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.
index 4074543..b9e075a 100644 (file)
@@ -289,7 +289,7 @@ bool
 cygthread::terminate_thread ()
 {
   bool terminated = true;
-  debug_printf ("thread '%s', id %p, inuse %d, stack_ptr %p", name (), id, inuse, stack_ptr);
+  debug_printf ("thread '%s', id %p, inuse %d, stack_ptr %p", __name, id, inuse, stack_ptr);
   while (inuse && !stack_ptr)
     low_priority_sleep (0);
 
index 86b0feb..cd0ee57 100644 (file)
@@ -993,8 +993,6 @@ class fhandler_tty_slave: public fhandler_tty_common
 class fhandler_pty_master: public fhandler_tty_common
 {
   int pktmode;                 // non-zero if pty in a packet mode.
-protected:
-  device slave;                        // device type of slave
 public:
   int need_nl;                 // Next read should start with \n
   DWORD dwProcessId;           // Owner of master handles
@@ -1019,8 +1017,7 @@ public:
 
   HANDLE from_master, to_master;
   bool hit_eof ();
-  int get_unit () const { return slave.minor; }
-  bool setup (tty&);
+  bool setup (bool);
   int dup (fhandler_base *);
   void fixup_after_fork (HANDLE parent);
   void fixup_after_exec ();
index 33a8294..b9b5af4 100644 (file)
@@ -945,7 +945,7 @@ fhandler_dev_dsp::fhandler_dev_dsp ():
 int
 fhandler_dev_dsp::open (int flags, mode_t mode)
 {
-  if (cygheap->fdtab.find_archetype (pc.dev))
+  if (cygheap->fdtab.find_archetype (dev ()))
     {
       set_errno (EBUSY);
       return 0;
index b1d840a..86d5d88 100644 (file)
@@ -62,7 +62,6 @@ fhandler_tty_master::set_winsize (bool sendSIGWINCH)
 int
 fhandler_tty_master::init ()
 {
-  slave = dev ();
   termios_printf ("Creating master for tty%d", get_unit ());
 
   if (init_console ())
@@ -75,7 +74,7 @@ fhandler_tty_master::init ()
   memset (&ti, 0, sizeof (ti));
   console->tcsetattr (0, &ti);
 
-  if (!setup (*cygwin_shared->tty[get_unit ()]))
+  if (!setup (false))
     return 1;
 
   set_winsize (false);
@@ -458,7 +457,7 @@ int
 fhandler_tty_slave::open (int flags, mode_t)
 {
   if (get_device () == FH_TTY)
-    pc.dev.tty_to_real_device ();
+    dev().tty_to_real_device ();
   fhandler_tty_slave *arch = (fhandler_tty_slave *) cygheap->fdtab.find_archetype (pc.dev);
   if (arch)
     {
@@ -1084,23 +1083,13 @@ fhandler_pty_master::fhandler_pty_master ()
 int
 fhandler_pty_master::open (int flags, mode_t)
 {
-  fhandler_pty_master *arch = (fhandler_tty_master *) cygheap->fdtab.find_archetype (pc.dev);
-  if (arch)
-    {
-      *this = *(fhandler_pty_master *) arch;
-      termios_printf ("copied fhandler_pty_master archetype");
-      set_flags ((flags & ~O_TEXT) | O_BINARY);
-      goto out;
-    }
-
   int ntty;
   ntty = cygwin_shared->tty.allocate (false);
   if (ntty < 0)
     return 0;
 
-  slave = *ttys_dev;
-  slave.setunit (ntty);
-  if (!setup (*cygwin_shared->tty[ntty]))
+  dev().devn = FHDEV (DEV_TTYM_MAJOR, ntty);
+  if (!setup (true))
     {
       lock_ttys::release ();
       return 0;
@@ -1110,13 +1099,12 @@ fhandler_pty_master::open (int flags, mode_t)
   set_open_status ();
   //
   // FIXME: Do this better someday
-  arch = (fhandler_tty_master *) cmalloc (HEAP_ARCHETYPES, sizeof (*this));
+  fhandler_pty_master *arch = (fhandler_tty_master *) cmalloc (HEAP_ARCHETYPES, sizeof (*this));
   *((fhandler_pty_master **) cygheap->fdtab.add_archetype ()) = arch;
   archetype = arch;
   *arch = *this;
   arch->dwProcessId = GetCurrentProcessId ();
 
-out:
   usecount = 0;
   arch->usecount++;
   char buf[sizeof ("opened pty master for ttyNNNNNNNNNNN")];
@@ -1338,8 +1326,10 @@ fhandler_tty_master::init_console ()
   } while (0)
 
 bool
-fhandler_pty_master::setup (tty& t)
+fhandler_pty_master::setup (bool ispty)
 {
+  tty& t = *cygwin_shared->tty[get_unit ()];
+
   tcinit (&t, true);           /* Set termios information.  Force initialization. */
 
   const char *errstr = NULL;
@@ -1380,7 +1370,7 @@ fhandler_pty_master::setup (tty& t)
 
   /* Create synchronisation events */
 
-  if (get_major () == DEV_TTYM_MAJOR)
+  if (!ispty)
     {
       if (!(output_done_event = t.get_event (errstr = OUTPUT_DONE_EVENT)))
        goto err;