1// Copyright 2009 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5// Handle AIX's wait4 specific behavior
6
7package syscall
8
9//sys  wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error)
10//wait4(pid Pid_t, status *_C_int, options _C_int, rusage *Rusage) Pid_t
11
12func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {
13	var status _C_int
14	var r Pid_t
15	err = ERESTART
16	// AIX wait4 may return with ERESTART errno, while the processus is still
17	// active.
18	for err == ERESTART {
19		r, err = wait4(Pid_t(pid), &status, options, rusage)
20	}
21	wpid = int(r)
22	if wstatus != nil {
23		*wstatus = WaitStatus(status)
24	}
25	return
26}
27