17c478bdstevel@tonic-gate/*
27c478bdstevel@tonic-gate * CDDL HEADER START
37c478bdstevel@tonic-gate *
47c478bdstevel@tonic-gate * The contents of this file are subject to the terms of the
57c478bdstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only
67c478bdstevel@tonic-gate * (the "License").  You may not use this file except in compliance
77c478bdstevel@tonic-gate * with the License.
87c478bdstevel@tonic-gate *
97c478bdstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
107c478bdstevel@tonic-gate * or http://www.opensolaris.org/os/licensing.
117c478bdstevel@tonic-gate * See the License for the specific language governing permissions
127c478bdstevel@tonic-gate * and limitations under the License.
137c478bdstevel@tonic-gate *
147c478bdstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each
157c478bdstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
167c478bdstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the
177c478bdstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying
187c478bdstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner]
197c478bdstevel@tonic-gate *
207c478bdstevel@tonic-gate * CDDL HEADER END
217c478bdstevel@tonic-gate */
227c478bdstevel@tonic-gate/*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
23b4203d7Marcel Telka/*	  All Rights Reserved	*/
247c478bdstevel@tonic-gate
257c478bdstevel@tonic-gate/*
26ba3594bGarrett D'Amore * Copyright 2014 Garrett D'Amore <garrett@damore.org>
27ba3594bGarrett D'Amore *
287c478bdstevel@tonic-gate * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
297c478bdstevel@tonic-gate * Use is subject to license terms.
307c478bdstevel@tonic-gate */
317c478bdstevel@tonic-gate
327c478bdstevel@tonic-gate#ifndef _SYS_WAIT_H
337c478bdstevel@tonic-gate#define	_SYS_WAIT_H
347c478bdstevel@tonic-gate
357c478bdstevel@tonic-gate#include <sys/feature_tests.h>
367c478bdstevel@tonic-gate
377c478bdstevel@tonic-gate#include <sys/types.h>
387c478bdstevel@tonic-gate
397c478bdstevel@tonic-gate#if !defined(__XOPEN_OR_POSIX) || defined(_XPG4_2) || defined(__EXTENSIONS__)
407c478bdstevel@tonic-gate#include <sys/resource.h>	/* Added for XSH4.2 */
417c478bdstevel@tonic-gate#include <sys/siginfo.h>
427c478bdstevel@tonic-gate#include <sys/procset.h>
437c478bdstevel@tonic-gate#endif /* !defined(__XOPEN_OR_POSIX) || (defined(_XPG4_2) ... */
447c478bdstevel@tonic-gate
457c478bdstevel@tonic-gate#ifdef	__cplusplus
467c478bdstevel@tonic-gateextern "C" {
477c478bdstevel@tonic-gate#endif
487c478bdstevel@tonic-gate
497c478bdstevel@tonic-gate/*
507c478bdstevel@tonic-gate * arguments to wait functions
517c478bdstevel@tonic-gate */
527c478bdstevel@tonic-gate
537c478bdstevel@tonic-gate#define	WUNTRACED	0004	/* wait for processes stopped by signals */
547c478bdstevel@tonic-gate#define	WNOHANG		0100	/* non blocking form of wait	*/
557c478bdstevel@tonic-gate
567c478bdstevel@tonic-gate
577c478bdstevel@tonic-gate#if !defined(__XOPEN_OR_POSIX) || defined(_XPG4_2) || defined(__EXTENSIONS__)
587c478bdstevel@tonic-gate#define	WEXITED		0001	/* wait for processes that have exited	*/
597c478bdstevel@tonic-gate#define	WTRAPPED	0002	/* wait for processes stopped while tracing */
607c478bdstevel@tonic-gate#define	WSTOPPED	WUNTRACED /* backwards compatibility */
617c478bdstevel@tonic-gate#define	WCONTINUED	0010	/* wait for processes continued */
627c478bdstevel@tonic-gate#define	WNOWAIT		0200	/* non destructive form of wait */
637c478bdstevel@tonic-gate#define	WOPTMASK (WEXITED|WTRAPPED|WSTOPPED|WCONTINUED|WNOHANG|WNOWAIT)
647c478bdstevel@tonic-gate#endif /* !defined(__XOPEN_OR_POSIX) || (defined(_XPG4_2) ... */
657c478bdstevel@tonic-gate
667c478bdstevel@tonic-gate/*
677c478bdstevel@tonic-gate * macros for stat return from wait functions
687c478bdstevel@tonic-gate */
697c478bdstevel@tonic-gate
707c478bdstevel@tonic-gate#if !defined(__XOPEN_OR_POSIX) || defined(_XPG4_2) || defined(__EXTENSIONS__)
717c478bdstevel@tonic-gate
727c478bdstevel@tonic-gate#define	WSTOPFLG		0177
737c478bdstevel@tonic-gate#define	WCONTFLG		0177777
747c478bdstevel@tonic-gate#define	WCOREFLG		0200
757c478bdstevel@tonic-gate#define	WSIGMASK		0177
767c478bdstevel@tonic-gate
777c478bdstevel@tonic-gate#define	WLOBYTE(stat)		((int)((stat)&0377))
787c478bdstevel@tonic-gate#define	WHIBYTE(stat)		((int)(((stat)>>8)&0377))
797c478bdstevel@tonic-gate#define	WWORD(stat)		((int)((stat))&0177777)
807c478bdstevel@tonic-gate
817c478bdstevel@tonic-gate#define	WIFCONTINUED(stat)	(WWORD(stat) == WCONTFLG)
827c478bdstevel@tonic-gate#define	WCOREDUMP(stat)		((stat)&WCOREFLG)
837c478bdstevel@tonic-gate
847c478bdstevel@tonic-gate#endif /* !defined(__XOPEN_OR_POSIX) || (defined(_XPG4_2) ... */
857c478bdstevel@tonic-gate
867c478bdstevel@tonic-gate#define	WIFEXITED(stat)		((int)((stat)&0xFF) == 0)
877c478bdstevel@tonic-gate#define	WIFSIGNALED(stat)	((int)((stat)&0xFF) > 0 && \
887c478bdstevel@tonic-gate				    (int)((stat)&0xFF00) == 0)
897c478bdstevel@tonic-gate#define	WIFSTOPPED(stat)	((int)((stat)&0xFF) == 0177 && \
907c478bdstevel@tonic-gate				    (int)((stat)&0xFF00) != 0)
917c478bdstevel@tonic-gate#define	WEXITSTATUS(stat)	((int)(((stat)>>8)&0xFF))
927c478bdstevel@tonic-gate#define	WTERMSIG(stat)		((int)((stat)&0x7F))
937c478bdstevel@tonic-gate#define	WSTOPSIG(stat)		((int)(((stat)>>8)&0xFF))
947c478bdstevel@tonic-gate
957c478bdstevel@tonic-gate
967c478bdstevel@tonic-gate#if !defined(_KERNEL)
977c478bdstevel@tonic-gate
987c478bdstevel@tonic-gateextern pid_t wait(int *);
997c478bdstevel@tonic-gateextern pid_t waitpid(pid_t, int *, int);
1007c478bdstevel@tonic-gate
1017c478bdstevel@tonic-gate#if !defined(__XOPEN_OR_POSIX) || defined(_XPG4_2) || defined(__EXTENSIONS__)
1027c478bdstevel@tonic-gateextern int waitid(idtype_t, id_t, siginfo_t *, int);
1037c478bdstevel@tonic-gate/* Marked as LEGACY in SUSv2 and removed in SUSv3 */
1047c478bdstevel@tonic-gate#if !defined(_XPG6) || defined(__EXTENSIONS__)
1057c478bdstevel@tonic-gateextern pid_t wait3(int *, int, struct rusage *);
1067c478bdstevel@tonic-gate#endif /* !defined(_XPG6) || defined(__EXTENSIONS__) */
1077c478bdstevel@tonic-gate#endif /* !defined(__XOPEN_OR_POSIX) || (defined(_XPG4_2) ... */
1087c478bdstevel@tonic-gate
1097c478bdstevel@tonic-gate#if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
1107c478bdstevel@tonic-gateextern pid_t wait4(pid_t, int *, int, struct rusage *);
1117c478bdstevel@tonic-gate#endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */
1127c478bdstevel@tonic-gate
1137c478bdstevel@tonic-gate#endif	/* _KERNEL */
1147c478bdstevel@tonic-gate
1157c478bdstevel@tonic-gate#ifdef	__cplusplus
1167c478bdstevel@tonic-gate}
1177c478bdstevel@tonic-gate#endif
1187c478bdstevel@tonic-gate
1197c478bdstevel@tonic-gate#endif	/* _SYS_WAIT_H */
120