sh.types.h revision 145479
1/* $Header: /src/pub/tcsh/sh.types.h,v 3.42 2005/03/03 19:57:07 kim Exp $ */
2/* sh.types.h: Do the necessary typedefs for each system.
3 *             Up till now I avoided making this into a separate file
4 *	       But I just wanted to eliminate the whole mess from sh.h
5 *	       In reality this should not be here! It is OS and MACHINE
6 *	       dependent, even between different revisions of OS's...
7 *	       Ideally there should be a way in c, to find out if something
8 *	       was typedef'ed, but unfortunately we rely in cpp kludges.
9 *	       Someday, this file will be removed...
10 *
11 *						christos
12 */
13/*-
14 * Copyright (c) 1980, 1991 The Regents of the University of California.
15 * All rights reserved.
16 *
17 * Redistribution and use in source and binary forms, with or without
18 * modification, are permitted provided that the following conditions
19 * are met:
20 * 1. Redistributions of source code must retain the above copyright
21 *    notice, this list of conditions and the following disclaimer.
22 * 2. Redistributions in binary form must reproduce the above copyright
23 *    notice, this list of conditions and the following disclaimer in the
24 *    documentation and/or other materials provided with the distribution.
25 * 3. Neither the name of the University nor the names of its contributors
26 *    may be used to endorse or promote products derived from this software
27 *    without specific prior written permission.
28 *
29 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
30 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
31 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
32 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
33 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
35 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
36 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
37 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
38 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
39 * SUCH DAMAGE.
40 */
41#ifndef _h_sh_types
42#define _h_sh_types
43
44
45/***
46 *** LynxOS 2.1
47 ***/
48#ifdef Lynx
49# ifndef _SIGMASK_T
50#  define _SIGMASK_T
51    typedef long sigmask_t;
52# endif /* _SIGMASK_T */
53# ifndef _PID_T
54#  define _PID_T
55# endif /* _PID_T */
56#endif
57
58/***
59 *** MachTen
60 ***/
61#ifdef __MACHTEN__
62# ifndef _PID_T
63#  define _PID_T
64# endif
65#endif
66
67
68/***
69 *** Suns running sunos3.x - sunos4.1.x
70 ***/
71#if (defined(sun) || defined(__sun__)) && SYSVREL == 0
72/* This used to be long, but lint dissagrees... */
73# ifndef _SIGMASK_T
74#  define _SIGMASK_T
75    typedef int sigmask_t;
76# endif /* _SIGMASK_T */
77# ifndef _PTR_T
78#  define _PTR_T
79#   ifdef __GNUC__
80    typedef void * ptr_t;
81#   else
82    typedef char * ptr_t;
83#   endif /* __GNUC__ */
84# endif /* _PTR_T */
85# ifndef __sys_stdtypes_h
86#  define __sys_stdtypes_h
87#   ifndef __lucid
88     typedef int pid_t;
89     typedef unsigned int speed_t;
90#   endif
91# endif /* __sys_stdtypes.h */
92# ifndef _PID_T
93#  define _PID_T
94# endif /* _PID_T */
95# ifndef _SPEED_T
96#  define _SPEED_T
97# endif /* _SPEED_T */
98#endif /* (sun || __sun__) && SYSVREL == 0 */
99
100
101/***
102 *** Hp's running hpux 7.0 or 8.0
103 ***/
104#ifdef __hpux
105
106# ifndef _PTR_T
107#  define _PTR_T
108    typedef void * ptr_t;
109# endif /* _PTR_T */
110
111# ifndef _PID_T
112#  define _PID_T
113    typedef long pid_t;
114# endif /* _PID_T */
115
116# ifndef _SIGMASK_T
117#  define _SIGMASK_T
118    typedef long sigmask_t;
119# endif /* _SIGMASK_T */
120
121# ifndef _SPEED_T
122   /* I thought POSIX was supposed to protect all typedefs! */
123#  define _SPEED_T
124# endif /* _SPEED_T */
125
126# if HPUXVERSION < 1100	/* XXX: Not true for 11.0 */
127extern uid_t getuid(), geteuid();
128extern gid_t getgid(), getegid();
129extern sigmask_t sigblock();
130extern sigmask_t sigsetmask();
131extern pid_t getpid();
132extern pid_t fork();
133extern void perror();
134extern void _exit();
135extern void abort();
136extern void qsort();
137extern void free();
138extern unsigned int alarm();
139extern unsigned int sleep();
140# endif /* HPUXVERSION < 1100 */
141# if HPUXVERSION < 800	/* XXX: Not true for 8.0 */
142extern void sigpause();
143extern sigmask_t sigspace();
144extern char *sbrk();
145# endif /* HPUXVERSION < 800 */
146#endif /* __hpux */
147
148#if (defined(_MINIX) && !defined(_MINIX_VMD)) || defined(__EMX__) || defined(COHERENT)
149typedef char * caddr_t;
150#endif /* (_MINIX && !_MINIX_VMD) || __EMX__ || COHERENT */
151
152/***
153 *** hp9000s500 running hpux-5.2
154 ***/
155#ifdef hp9000s500
156# ifndef _PTR_T
157#  define _PTR_T
158    typedef char * ptr_t;
159# endif /* _PTR_T */
160#endif /* hp9000s500 */
161
162/***
163 *** Data General AViiON 88000 or Pentium, running dgux 5.4R3 or R4.11
164 ***/
165#ifdef DGUX
166# ifndef _PID_T
167#  define _PID_T
168# endif /* _PID_T */
169#endif /* DGUX */
170
171
172/***
173 *** BSD RENO advertises itself as POSIX, but
174 *** it is missing speed_t
175 ***/
176#ifdef RENO
177# ifndef _SPEED_T
178#  define _SPEED_T
179   typedef unsigned int speed_t;
180# endif /* _SPEED_T */
181#endif /* RENO */
182
183
184/***
185 *** NeXT OS 3.x
186 ***/
187#ifdef NeXT
188# ifndef _SPEED_T
189#  define _SPEED_T
190   typedef unsigned int speed_t;
191# endif /* _SPEED_T */
192#endif /* NeXT */
193
194/***
195 *** Utah's HPBSD
196 *** some posix & 4.4 BSD changes (pid_t is a short)
197 ***/
198#ifdef HPBSD
199# ifndef _PID_T
200#  define _PID_T
201# endif /* _PID_T */
202#endif /* HPBSD */
203
204
205/***
206 *** Pyramid, BSD universe
207 *** In addition to the size_t
208 ***/
209#ifdef pyr
210# ifndef _PID_T
211#  define _PID_T
212   typedef short pid_t;
213# endif /* _PID_T */
214#endif /* pyr */
215
216
217/***
218 *** rs6000, ibm370, ps2, rt: running flavors of aix.
219 ***/
220#ifdef IBMAIX
221# ifndef aiws
222#  ifndef _PID_T
223#   define _PID_T
224#  endif /* _PID_T */
225# endif /* !aiws */
226# ifdef _IBMR2
227#  ifndef _SPEED_T
228#   define _SPEED_T
229#  endif /* _SPEED_T */
230# endif /* _IBMR2 */
231#endif /* IBMAIX */
232
233
234/***
235 *** Ultrix...
236 ***/
237#if defined(ultrix) || defined(__ultrix)
238# ifndef _PID_T
239#  define _PID_T
240# endif /* _PID_T */
241# ifndef _PTR_T
242#  define _PTR_T
243    typedef void * ptr_t;
244# endif /* _PTR_T */
245#endif /* ultrix || __ultrix */
246
247
248/***
249 *** Silicon graphics IRIS4D running IRIX3_3
250 ***/
251#if defined(IRIS4D) && defined(IRIX3_3)
252# ifndef _PID_T
253#  define _PID_T
254# endif /* _PID_T */
255#endif /* IRIS4D && IRIX3_3 */
256
257
258/***
259 *** Apple AUX.
260 ***/
261#ifdef OREO
262# ifndef _PID_T
263#  define _PID_T
264# endif /* _PID_T */
265#endif /* OREO */
266
267/***
268 *** Concurrent (Masscomp) running RTU 4.1A & RTU 5.0.
269 **** [RTU 6.0 from mike connor]
270 *** Added, DAS DEC-90.
271 ***/
272#ifdef	masscomp
273# ifdef RTU6
274#  ifndef _PID_T
275#   define _PID_T
276#  endif /* _PID_T */
277#  ifndef _SPEED_T
278#   define _SPEED_T
279#  endif /* _SPEED_T */
280#endif /* RTU6 */
281#endif	/* masscomp */
282
283/*
284 * Motorola MPC running R32V2 (sysV88)
285 */
286#ifdef sysV88
287# ifndef _PID_T
288#  define _PID_T
289# endif /* _PID_T */
290#endif /* sysV88 */
291
292/*
293 * Amdahl running UTS (Sys V3)
294 */
295#ifdef uts
296# ifndef _PID_T
297#  define _PID_T
298# endif /* _PID_T */
299#endif /* uts */
300
301/*
302 * Tektronix XD88/10 running UTekV (Sys V3)
303 */
304#ifdef UTekV
305# ifndef _PID_T
306#  define _PID_T
307# endif /* _PID_T */
308#endif /* UTekV*/
309
310/*
311 * BBN Butterfly gp1000
312 */
313#ifdef butterfly
314# ifndef _PID_T
315#  define _PID_T
316# endif /* _PID_T */
317#endif /* butterfly */
318
319/*
320 * Alliant FX-2800/FX-80
321 */
322#ifdef alliant
323# ifndef _PID_T
324#  define _PID_T
325# endif /* _PID_T */
326# ifdef mc68000
327   typedef int   pid_t; /* FX-80 */
328# else
329   typedef short pid_t;	/* FX-2800 */
330# endif
331#endif /* alliant */
332
333/*
334 * DNIX
335 */
336#ifdef DNIX
337# ifndef _PID_T
338#  define _PID_T
339# endif /* _PID_T */
340#endif /* DNIX */
341
342/*
343 *  Apollo running Domain/OS SR10.3 or greater
344 */
345#ifdef apollo
346# ifndef _PID_T
347#  define _PID_T
348   typedef int pid_t;	/* Older versions might not like that */
349# endif /* _PID_T */
350#endif /* apollo */
351
352/***
353 *** a pdp/11, running 2BSD
354 ***/
355#ifdef pdp11
356# ifndef _PID_T
357#  define _PID_T
358# endif /* _PID_T */
359#endif /* pdp11 */
360
361/***
362 *** a Harris, running CX/UX
363 ***/
364#ifdef _CX_UX
365# ifndef _PID_T
366#  define _PID_T
367# endif /* _PID_T */
368#endif /* _CX_UX */
369
370/***
371 *** Catch all for non POSIX and/or non ANSI systems.
372 *** Systems up to spec *should* define these automatically
373 *** I am open to suggestions on how to do this correctly!
374 ***/
375
376#ifndef POSIX
377
378# ifndef _PID_T
379#  define _PID_T
380    typedef int pid_t;
381# endif /* _PID_T */
382
383# ifndef _SPEED_T
384#  define _SPEED_T
385    typedef unsigned int speed_t;
386# endif /* _SPEED_T */
387
388# ifndef _PTR_T
389#  define _PTR_T
390    typedef char * ptr_t;
391#endif /* _PTR_T */
392
393# ifndef _IOCTL_T
394#  define _IOCTL_T
395    typedef char * ioctl_t;	/* Third arg of ioctl */
396# endif /* _IOCTL_T */
397
398#endif /* ! POSIX */
399
400
401
402/***
403 *** This is our own junk types.
404 ***/
405#ifndef _PTR_T
406# define _PTR_T
407    typedef void * ptr_t;
408#endif /* _PTR_T */
409
410#ifndef _SIGMASK_T
411# define _SIGMASK_T
412    typedef int sigmask_t;
413#endif /* _SIGMASK_T */
414
415#ifndef _IOCTL_T
416# define _IOCTL_T
417    typedef void * ioctl_t;	/* Third arg of ioctl */
418#endif /* _IOCTL_T */
419
420#endif /* _h_sh_types */
421