Initial revision

This commit is contained in:
Roland McGrath 1991-08-08 02:14:02 +00:00
parent 62b4e5546b
commit d8fffb8dff
4 changed files with 111 additions and 0 deletions

View File

@ -0,0 +1,3 @@
ifeq ($(subdir), posix)
sysdep_routines := $(sysdep_routines) __wait4_syscall
endif

View File

@ -0,0 +1,22 @@
/* Copyright (C) 1991 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
#include <sysdep.h>
PSEUDO (__wait4_syscall, wait4)
ret

View File

@ -0,0 +1,44 @@
/* This implements wait4 with the 4.4 BSD semantics (also those documented in
SunOS 4.1) on top of SunOS's wait4 system call, which has semantics
different from those documented. Go Sun!
Copyright (C) 1991 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
#include <ansidecl.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
pid_t
DEFUN(__wait4, (pid, stat_loc, options, usage),
pid_t pid AND union wait *stat_loc AND int options AND PTR usage)
{
switch (pid)
{
case WAIT_ANY:
pid = 0;
break;
case WAIT_MYPGRP:
pid = - __getpgrp (0);
break;
}
return __wait4_syscall (pid, stat_loc, option, usage);
}

View File

@ -0,0 +1,42 @@
/* Copyright (C) 1991 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
#include <ansidecl.h>
#include <errno.h>
#include <sys/wait.h>
#include <sys/types.h>
/* Wait for a child matching PID to die.
If PID is greater than 0, match any process whose process ID is PID.
If PID is (pid_t) -1, match any process.
If PID is (pid_t) 0, match any process with the
same process group as the current process.
If PID is less than -1, match any process whose
process group is the absolute value of PID.
If the WNOHANG bit is set in OPTIONS, and that child
is not already dead, return (pid_t) 0. If successful,
return PID and store the dead child's status in STAT_LOC.
Return (pid_t) -1 for errors. If the WUNTRACED bit is set in OPTIONS,
return status for stopped children; otherwise don't. */
pid_t
DEFUN(__waitpid, (pid, stat_loc, options),
pid_t pid AND int *stat_loc AND int options)
{
return __wait4 (pid, stat_loc, options, NULL);
}