Remove support for LinuxThreads and vendor 2.4 kernels w/ backported NPTL
[deliverable/binutils-gdb.git] / gdb / nat / linux-waitpid.c
index cbcdd95afa9c664993542b0b3851e79fbae4e1df..2d80e0a5accefe9e2ab7ddee4c94aee085990966 100644 (file)
@@ -74,8 +74,7 @@ status_to_str (int status)
   return buf;
 }
 
-/* Wrapper function for waitpid which handles EINTR, and emulates
-   __WALL for systems where that is not available.  */
+/* See linux-waitpid.h.  */
 
 int
 my_waitpid (int pid, int *status, int flags)
@@ -84,64 +83,12 @@ my_waitpid (int pid, int *status, int flags)
 
   linux_debug ("my_waitpid (%d, 0x%x)\n", pid, flags);
 
-  if (flags & __WALL)
+  do
     {
-      sigset_t block_mask, org_mask, wake_mask;
-      int wnohang;
-
-      wnohang = (flags & WNOHANG) != 0;
-      flags &= ~(__WALL | __WCLONE);
-
-      if (!wnohang)
-       {
-         flags |= WNOHANG;
-
-         /* Block all signals while here.  This avoids knowing about
-            LinuxThread's signals.  */
-         sigfillset (&block_mask);
-         sigprocmask (SIG_BLOCK, &block_mask, &org_mask);
-
-         /* ... except during the sigsuspend below.  */
-         sigemptyset (&wake_mask);
-       }
-
-      while (1)
-       {
-         /* Since all signals are blocked, there's no need to check
-            for EINTR here.  */
-         ret = waitpid (pid, status, flags);
-         out_errno = errno;
-
-         if (ret == -1 && out_errno != ECHILD)
-           break;
-         else if (ret > 0)
-           break;
-
-         if (flags & __WCLONE)
-           {
-             /* We've tried both flavors now.  If WNOHANG is set,
-                there's nothing else to do, just bail out.  */
-             if (wnohang)
-               break;
-
-             linux_debug ("blocking\n");
-
-             /* Block waiting for signals.  */
-             sigsuspend (&wake_mask);
-           }
-         flags ^= __WCLONE;
-       }
-
-      if (!wnohang)
-       sigprocmask (SIG_SETMASK, &org_mask, NULL);
-    }
-  else
-    {
-      do
-       ret = waitpid (pid, status, flags);
-      while (ret == -1 && errno == EINTR);
-      out_errno = errno;
+      ret = waitpid (pid, status, flags);
     }
+  while (ret == -1 && errno == EINTR);
+  out_errno = errno;
 
   linux_debug ("my_waitpid (%d, 0x%x): status(%x), %d\n",
               pid, flags, (ret > 0 && status != NULL) ? *status : -1, ret);
This page took 0.024623 seconds and 4 git commands to generate.