source: trunk/third/tcsh/tc.wait.h @ 12039

Revision 12039, 4.8 KB checked in by danw, 26 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r12038, which included commits to RCS files with non-trunk default branches.
Line 
1/* $Header: /afs/dev.mit.edu/source/repository/third/tcsh/tc.wait.h,v 1.1.1.2 1998-10-03 21:10:17 danw Exp $ */
2/*
3 * tc.wait.h: <sys/wait.h> for machines that don't have it or have it and
4 *            is incorrect.
5 */
6/*-
7 * Copyright (c) 1980, 1991 The Regents of the University of California.
8 * All rights reserved.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 * 1. Redistributions of source code must retain the above copyright
14 *    notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 *    notice, this list of conditions and the following disclaimer in the
17 *    documentation and/or other materials provided with the distribution.
18 * 3. All advertising materials mentioning features or use of this software
19 *    must display the following acknowledgement:
20 *      This product includes software developed by the University of
21 *      California, Berkeley and its contributors.
22 * 4. Neither the name of the University nor the names of its contributors
23 *    may be used to endorse or promote products derived from this software
24 *    without specific prior written permission.
25 *
26 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
27 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
30 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 * SUCH DAMAGE.
37 */
38#ifndef _h_tc_wait
39#define _h_tc_wait
40
41/*
42 * a little complicated #include <sys/wait.h>! :-(
43 * We try to use the system's wait.h when we can...
44 */
45
46#if SYSVREL > 0 && !defined(linux)
47# ifdef hpux
48#  ifndef __hpux
49#   define NEEDwait
50#  else
51#   ifndef POSIX
52#    define _BSD
53#   endif
54#   ifndef _CLASSIC_POSIX_TYPES
55#    define _CLASSIC_POSIX_TYPES
56#   endif
57#   include <sys/wait.h> /* 7.0 fixed it again */
58#  endif /* __hpux */
59# else /* hpux */
60#  if (defined(OREO) || defined(IRIS4D) || defined(POSIX)) && !defined(_VMS_POSIX)
61#   include <sys/wait.h>
62#  else /* OREO || IRIS4D || POSIX */
63#   define NEEDwait
64#  endif /* OREO || IRIS4D || POSIX */
65# endif /* hpux */
66#else /* SYSVREL == 0 || linux */
67# ifdef _MINIX
68#  undef NEEDwait
69#  include "mi.wait.h"
70# else
71#  ifndef WINNT
72#   include <sys/wait.h>
73#  endif /* WINNT */
74# endif /* _MINIX */
75#endif /* SYSVREL == 0 || linux */
76
77#ifdef NEEDwait
78/*
79 *      This wait is for big-endians and little endians
80 */
81union wait {
82    int     w_status;
83# ifdef _SEQUENT_
84    struct {
85        unsigned short w_Termsig:7;
86        unsigned short w_Coredump:1;
87        unsigned short w_Retcode:8;
88    }       w_T;
89    struct {
90        unsigned short w_Stopval:8;
91        unsigned short w_Stopsig:8;
92    }       w_S;
93};
94
95#  define w_termsig     w_T.w_Termsig
96#  define w_coredump    w_T.w_Coredump
97#  define w_retcode     w_T.w_Retcode
98#  define w_stopval     w_S.w_Stopval
99#  define w_stopsig     w_S.w_Stopsig
100# else /* _SEQUENT_ */
101#  if defined(vax) || defined(i386) || defined(_I386)
102    union {
103        struct {
104            unsigned int w_Termsig:7;
105            unsigned int w_Coredump:1;
106            unsigned int w_Retcode:8;
107            unsigned int w_Dummy:16;
108        }       w_T;
109        struct {
110            unsigned int w_Stopval:8;
111            unsigned int w_Stopsig:8;
112            unsigned int w_Dummy:16;
113        }       w_S;
114    }       w_P;
115#  else /* mc68000 || sparc || ??? */
116#    if defined(_CRAY) || defined(ANY_OTHER_64BIT_MACHINE)
117#      define DUMMY_BITS        48
118#    else /* _CRAY */
119#      define DUMMY_BITS        16
120#    endif /* _CRAY */
121    union {
122        struct {
123            unsigned int w_Dummy:DUMMY_BITS;
124            unsigned int w_Retcode:8;
125            unsigned int w_Coredump:1;
126            unsigned int w_Termsig:7;
127        }       w_T;
128        struct {
129            unsigned int w_Dummy:DUMMY_BITS;
130            unsigned int w_Stopsig:8;
131            unsigned int w_Stopval:8;
132        }       w_S;
133    }       w_P;
134#  endif /* vax || i386 || _I386 */
135};
136
137#  define w_termsig     w_P.w_T.w_Termsig
138#  define w_coredump    w_P.w_T.w_Coredump
139#  define w_retcode     w_P.w_T.w_Retcode
140#  define w_stopval     w_P.w_S.w_Stopval
141#  define w_stopsig     w_P.w_S.w_Stopsig
142# endif /* _SEQUENT_ */
143
144
145# ifndef WNOHANG
146#  define WNOHANG       1       /* dont hang in wait */
147# endif
148
149# ifndef WUNTRACED
150#  define WUNTRACED     2       /* tell about stopped, untraced children */
151# endif
152
153# define WSTOPPED 0177
154# define WIFSTOPPED(x)  ((x).w_stopval == WSTOPPED)
155# define WIFSIGNALED(x) (((x).w_stopval != WSTOPPED) && ((x).w_termsig != 0))
156
157#endif /* NEEDwait */
158
159#endif /* _h_tc_wait */
Note: See TracBrowser for help on using the repository browser.