Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/ChangeLog23
-rw-r--r--winsup/cygwin/cygthread.cc2
-rw-r--r--winsup/cygwin/fhandler.h5
-rw-r--r--winsup/cygwin/fhandler_dsp.cc2
-rw-r--r--winsup/cygwin/fhandler_tty.cc28
5 files changed, 35 insertions, 25 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 022ce7609..b7ad00b1c 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -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.
diff --git a/winsup/cygwin/cygthread.cc b/winsup/cygwin/cygthread.cc
index 407454310..b9e075a16 100644
--- a/winsup/cygwin/cygthread.cc
+++ b/winsup/cygwin/cygthread.cc
@@ -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);
diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h
index 86b0feb5e..cd0ee570c 100644
--- a/winsup/cygwin/fhandler.h
+++ b/winsup/cygwin/fhandler.h
@@ -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 ();
diff --git a/winsup/cygwin/fhandler_dsp.cc b/winsup/cygwin/fhandler_dsp.cc
index 33a829409..b9b5af43f 100644
--- a/winsup/cygwin/fhandler_dsp.cc
+++ b/winsup/cygwin/fhandler_dsp.cc
@@ -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;
diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc
index b1d840acf..86d5d88b5 100644
--- a/winsup/cygwin/fhandler_tty.cc
+++ b/winsup/cygwin/fhandler_tty.cc
@@ -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;