Formerly ../hurd/hurdkill.c.~5~
[kopensolaris-gnu/glibc.git] / hurd / dtable.c
index 31e323f..4812c69 100644 (file)
@@ -30,7 +30,7 @@ Cambridge, MA 02139, USA.  */
 #include "hurdmalloc.h"                /* XXX */
 
 
-struct mutex _hurd_dtable_lock;
+struct mutex _hurd_dtable_lock = MUTEX_INITIALIZER; /* XXX ld bug; must init */
 struct hurd_fd **_hurd_dtable;
 int _hurd_dtablesize;
 
@@ -95,6 +95,8 @@ init_dtable (void)
   /* Run things that want to run after the file descriptor table
      is initialized.  */
   RUN_HOOK (_hurd_fd_subinit, ());
+
+  (void) &init_dtable;         /* Avoid "defined but not used" warning.  */
 }
 
 text_set_element (_hurd_subinit, init_dtable);
@@ -139,6 +141,8 @@ fork_child_dtable (void)
   for (i = 0; !err && i < _hurd_dtablesize; ++i)
     {
       struct hurd_fd *d = _hurd_dtable[i];
+      if (d == NULL)
+       continue;
 
       /* No other thread is using the send rights in the child task.  */
       d->port.users = d->ctty.users = NULL;
@@ -148,9 +152,8 @@ fork_child_dtable (void)
          /* There was a ctty-special port in the parent.
             We need to get one for ourselves too.  */
          __mach_port_deallocate (__mach_task_self (), d->port.port);
-         err = __term_become_ctty (d->ctty.port,
-                                   _hurd_pid, _hurd_pgrp, _hurd_msgport,
-                                   &d->port.port);
+         err = __term_open_ctty (d->ctty.port, _hurd_pid, _hurd_pgrp,
+                                 &d->port.port);
          if (err)
            {
              d->port.port = d->ctty.port;
@@ -161,9 +164,11 @@ fork_child_dtable (void)
       /* XXX for each fd with a cntlmap, reauth and re-map_cntl.  */
     }
   return err;
+
+  (void) &fork_child_dtable;   /* Avoid "defined but not used" warning.  */
 }
 
-data_set_element (_hurd_fork_locks, _hurd_dtable_lock);
+data_set_element (_hurd_fork_locks, _hurd_dtable_lock);        /* XXX ld bug: bss */
 text_set_element (_hurd_fork_child_hook, fork_child_dtable);
 \f
 /* Called when our process group has changed.  */
@@ -194,8 +199,7 @@ ctty_new_pgrp (void)
          /* This fd has a ctty-special port.  We need a new one, to tell
              the io server of our different process group.  */
          io_t new;
-         if (! __term_become_ctty (ctty, _hurd_pid, _hurd_pgrp, _hurd_msgport,
-                                   &new))
+         if (! __term_open_ctty (ctty, _hurd_pid, _hurd_pgrp, &new))
            _hurd_port_set (&d->port, new);
        }
 
@@ -205,6 +209,8 @@ ctty_new_pgrp (void)
 
   __mutex_unlock (&_hurd_dtable_lock);
   HURD_CRITICAL_END;
+
+  (void) &ctty_new_pgrp;       /* Avoid "defined but not used" warning.  */
 }
 
 text_set_element (_hurd_pgrp_changed_hook, ctty_new_pgrp);
@@ -258,6 +264,8 @@ reauth_dtable (void)
 
   __mutex_unlock (&_hurd_dtable_lock);
   HURD_CRITICAL_END;
+
+  (void) &reauth_dtable;       /* Avoid "defined but not used" warning.  */
 }
 
 text_set_element (_hurd_reauth_hook, reauth_dtable);