mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-23 09:43:32 +08:00
Implement wait in terms of waitpid
The POSIX implementation is used as default and both BSD and Linux version are removed. It simplifies the implementation for architectures that do not provide either __NR_waitpid or __NR_wait4. Checked on x86_64-linux-gnu and powerpc64le-linux-gnu.
This commit is contained in:
parent
b633cdff2c
commit
c5cbdacb8a
@ -16,16 +16,12 @@
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sys/wait.h>
|
||||
#include <errno.h>
|
||||
|
||||
/* Wait for a child to die. When one does, put its status in *STAT_LOC
|
||||
and return its process ID. For errors, return (pid_t) -1. */
|
||||
__pid_t
|
||||
__wait (int *stat_loc)
|
||||
{
|
||||
__set_errno (ENOSYS);
|
||||
return -1;
|
||||
return __waitpid (WAIT_ANY, stat_loc, 0);
|
||||
}
|
||||
stub_warning (wait)
|
||||
|
||||
weak_alias (__wait, wait)
|
||||
|
@ -1,30 +0,0 @@
|
||||
/* Copyright (C) 1991-2019 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 Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sys/wait.h>
|
||||
|
||||
|
||||
/* Wait for a child to die. When one does, put its status in *STAT_LOC
|
||||
and return its process ID. For errors, return (pid_t) -1. */
|
||||
__pid_t
|
||||
__libc_wait (int *stat_loc)
|
||||
{
|
||||
return __waitpid (WAIT_ANY, (int *) stat_loc, 0);
|
||||
}
|
||||
|
||||
weak_alias (__libc_wait, __wait)
|
||||
weak_alias (__libc_wait, wait)
|
@ -1,32 +0,0 @@
|
||||
/* Copyright (C) 1991-2019 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 Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sys/wait.h>
|
||||
#include <errno.h>
|
||||
#include <sys/resource.h>
|
||||
#include <stddef.h>
|
||||
|
||||
/* Wait for a child to die. When one does, put its status in *STAT_LOC
|
||||
and return its process ID. For errors, return (pid_t) -1. */
|
||||
__pid_t
|
||||
__libc_wait (int *stat_loc)
|
||||
{
|
||||
return __wait4 (WAIT_ANY, stat_loc, 0, (struct rusage *) NULL);
|
||||
}
|
||||
|
||||
weak_alias (__libc_wait, __wait)
|
||||
weak_alias (__libc_wait, wait)
|
@ -1,35 +0,0 @@
|
||||
/* Copyright (C) 1991-2019 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 Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sys/wait.h>
|
||||
#include <errno.h>
|
||||
#include <sys/resource.h>
|
||||
#include <stddef.h>
|
||||
#include <sysdep-cancel.h>
|
||||
|
||||
/* Wait for a child to die. When one does, put its status in *STAT_LOC
|
||||
and return its process ID. For errors, return (pid_t) -1. */
|
||||
pid_t
|
||||
__libc_wait (int *stat_loc)
|
||||
{
|
||||
pid_t result = SYSCALL_CANCEL (wait4, WAIT_ANY, stat_loc, 0,
|
||||
(struct rusage *) NULL);
|
||||
return result;
|
||||
}
|
||||
|
||||
weak_alias (__libc_wait, __wait)
|
||||
weak_alias (__libc_wait, wait)
|
Loading…
Reference in New Issue
Block a user