loadavg.h
上传用户:zibowangxu
上传日期:2007-01-04
资源大小:331k
文件大小:20k
源码类别:

Ftp客户端

开发平台:

Unix_Linux

  1. /****************************************************************************    
  2.   Copyright (c) 1999 WU-FTPD Development Group.  
  3.   All rights reserved.
  4.    
  5.   Portions Copyright (c) 1980, 1985, 1988, 1989, 1990, 1991, 1993, 1994  
  6.     The Regents of the University of California. 
  7.   Portions Copyright (c) 1993, 1994 Washington University in Saint Louis.  
  8.   Portions Copyright (c) 1996, 1998 Berkeley Software Design, Inc.  
  9.   Portions Copyright (c) 1989 Massachusetts Institute of Technology.  
  10.   Portions Copyright (c) 1998 Sendmail, Inc.  
  11.   Portions Copyright (c) 1983, 1995, 1996, 1997 Eric P.  Allman.  
  12.   Portions Copyright (c) 1997 by Stan Barber.  
  13.   Portions Copyright (c) 1997 by Kent Landfield.  
  14.   Portions Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997  
  15.     Free Software Foundation, Inc.    
  16.    
  17.   Use and distribution of this software and its source code are governed   
  18.   by the terms and conditions of the WU-FTPD Software License ("LICENSE").  
  19.    
  20.   If you did not receive a copy of the license, it may be obtained online  
  21.   at http://www.wu-ftpd.org/license.html.  
  22.    
  23.   $Id: loadavg.h,v 1.6 1999/09/02 14:04:29 wuftpd Exp $  
  24.    
  25. ****************************************************************************/
  26. #include <unistd.h>
  27. #include <stddef.h>
  28. #include <stdlib.h>
  29. #include <stdio.h>
  30. #include <ctype.h>
  31. #include <setjmp.h>
  32. #include <string.h>
  33. #ifdef TIME_WITH_SYS_TIME
  34. #include <time.h>
  35. #include <sys/time.h>
  36. #else
  37. #ifdef HAVE_SYS_TIME_H
  38. #include <sys/time.h>
  39. #else
  40. #include <time.h>
  41. #endif
  42. #endif
  43. #include <errno.h>
  44. #include <sysexits.h>
  45. #include <sys/param.h>
  46. #include <sys/types.h>
  47. #include <sys/stat.h>
  48. #ifndef __QNX__
  49. /* in QNX this grabs bogus LOCK_* manifests */
  50. #include <sys/file.h>
  51. #endif
  52. #include <sys/wait.h>
  53. #include <limits.h>
  54. #include <fcntl.h>
  55. #include <signal.h>
  56. #include <netdb.h>
  57. #include <pwd.h>
  58. /**********************************************************************
  59. **  Operating system configuration.
  60. **
  61. **      Unless you are porting to a new OS, you shouldn't have to
  62. **      change these.
  63. **********************************************************************/
  64. /*
  65.    **  HP-UX -- tested for 8.07, 9.00, and 9.01.
  66.    **
  67.    **      If V4FS is defined, compile for HP-UX 10.0.
  68.    **      11.x support from Richard Allen <ra@hp.is>.
  69.  */
  70. #ifdef __hpux
  71. #define SYSTEM5        1 /* include all the System V defines */
  72. #define LA_TYPE        LA_HPUX
  73. #ifdef V4FS
  74. /* HP-UX 10.x */
  75. #define _PATH_UNIX            "/stand/vmunix"
  76. #else
  77. /* HP-UX 9.x */
  78. #define _PATH_UNIX            "/hp-ux"
  79. #endif
  80. #endif
  81. /*
  82.    **  IBM AIX 4.x
  83.  */
  84. #ifdef _AIX4
  85. #define _AIX3          1 /* pull in AIX3 stuff */
  86. #endif
  87. /*
  88.    **  IBM AIX 3.x -- actually tested for 3.2.3
  89.  */
  90. #ifdef _AIX3
  91. #include <paths.h>
  92. #include <sys/machine.h> /* to get byte order */
  93. #include <sys/select.h>
  94. #define LA_TYPE        LA_INT
  95. #define FSHIFT         16
  96. #define LA_AVENRUN     "avenrun"
  97. #endif
  98. /*
  99.    **  IBM AIX 2.2.1 -- actually tested for osupdate level 2706+1773
  100.    **
  101.    **      From Mark Whetzel <markw@wg.waii.com>.
  102.  */
  103. #ifdef AIX
  104. #include <paths.h>
  105. #define LA_TYPE        LA_SUBR /* use our ported loadavgd daemon */
  106. #endif
  107. /*
  108.    **  Silicon Graphics IRIX
  109.    **
  110.    **      Compiles on 4.0.1.
  111.    **
  112.    **      Use IRIX64 instead of IRIX for 64-bit IRIX (6.0).
  113.    **      Use IRIX5 instead of IRIX for IRIX 5.x.
  114.    **
  115.    **      This version tries to be adaptive using _MIPS_SIM:
  116.    **              _MIPS_SIM == _ABIO32 (= 1)    Abi: -32  on IRIX 6.2
  117.    **              _MIPS_SIM == _ABIN32 (= 2)    Abi: -n32 on IRIX 6.2
  118.    **              _MIPS_SIM == _ABI64  (= 3)    Abi: -64 on IRIX 6.2
  119.    **
  120.    **              _MIPS_SIM is 1 also on IRIX 5.3
  121.    **
  122.    **      IRIX64 changes from Mark R. Levinson <ml@cvdev.rochester.edu>.
  123.    **      IRIX5 changes from Kari E. Hurtta <Kari.Hurtta@fmi.fi>.
  124.    **      Adaptive changes from Kari E. Hurtta <Kari.Hurtta@fmi.fi>.
  125.  */
  126. #if defined(__sgi)
  127. #ifndef IRIX
  128. #define IRIX
  129. #endif
  130. #if _MIPS_SIM > 0 && !defined(IRIX5)
  131. #define IRIX5 /* IRIX5 or IRIX6 */
  132. #endif
  133. #if _MIPS_SIM > 1 && !defined(IRIX6) && !defined(IRIX64)
  134. #define IRIX6 /* IRIX6 */
  135. #endif
  136. #endif
  137. #ifdef IRIX
  138. #define SYSTEM5        1 /* this is a System-V derived system */
  139. #ifdef IRIX6
  140. #define LA_TYPE       LA_IRIX6 /* figure out at run time */
  141. #else
  142. #define LA_TYPE       LA_INT
  143. #endif
  144. #if defined(IRIX64) || defined(IRIX5) || defined(IRIX6)
  145. #include <sys/cdefs.h>
  146. #include <paths.h>
  147. #endif
  148. #endif
  149. /*
  150.    **  SunOS and Solaris
  151.    **
  152.    **      Tested on SunOS 4.1.x (a.k.a. Solaris 1.1.x) and
  153.    **      Solaris 2.4 (a.k.a. SunOS 5.4).
  154.  */
  155. #if defined(sun) && !defined(BSD)
  156. #ifdef SOLARIS_2_3
  157. #define SOLARIS       20300 /* for back compat only -- use -DSOLARIS=20300 */
  158. #endif
  159. #if !defined(SOLARIS) && defined(sun) && (defined(__svr4__) || defined(__SVR4))
  160. #define SOLARIS       1 /* unknown Solaris version */
  161. #endif
  162. #ifdef SOLARIS
  163. /* Solaris 2.x (a.k.a. SunOS 5.x) */
  164. #ifndef __svr4__
  165. #define __svr4__ /* use all System V Releae 4 defines below */
  166. #endif
  167. #ifndef _PATH_UNIX
  168. #define _PATH_UNIX           "/dev/ksyms"
  169. #endif
  170. #if SOLARIS >= 20500 || (SOLARIS < 10000 && SOLARIS >= 205)
  171. #if SOLARIS < 207 || (SOLARIS > 10000 && SOLARIS < 20700)
  172. #ifndef LA_TYPE
  173. #define LA_TYPE    LA_KSTAT /* use kstat(3k) -- may work in < 2.5 */
  174. #endif
  175. #endif
  176. #endif
  177. #if SOLARIS >= 20700 || (SOLARIS < 10000 && SOLARIS >= 207)
  178. #ifndef LA_TYPE
  179. #define LA_TYPE     LA_SUBR /* getloadavg(3c) appears in 2.7 */
  180. #endif
  181. #endif
  182. #else
  183. /* SunOS 4.0.3 or 4.1.x */
  184. #include <memory.h>
  185. #include <vfork.h>
  186. #ifdef SUNOS403
  187. /* special tweaking for SunOS 4.0.3 */
  188. #include <malloc.h>
  189. #define BSD4_3       1 /* 4.3 BSD-based */
  190. #endif
  191. #endif
  192. #ifndef LA_TYPE
  193. #define LA_TYPE       LA_INT
  194. #endif
  195. #endif /* sun && !BSD */
  196. /*
  197.    **  DG/UX
  198.    **
  199.    **      Tested on 5.4.2 and 5.4.3.  Use DGUX_5_4_2 to get the
  200.    **      older support.
  201.    **      5.4.3 changes from Mark T. Robinson <mtr@ornl.gov>.
  202.  */
  203. #ifdef DGUX_5_4_2
  204. #define DGUX           1
  205. #endif
  206. #ifdef  DGUX
  207. #define SYSTEM5        1
  208. #define LA_TYPE        LA_DGUX
  209. /* these include files must be included early on DG/UX */
  210. #include <netinet/in.h>
  211. #include <arpa/inet.h>
  212. /* compiler doesn't understand const? */
  213. #define const
  214. #endif
  215. /*
  216.    **  Digital Ultrix 4.2A or 4.3
  217.    **
  218.    **      Apparently, fcntl locking is broken on 4.2A, in that locks are
  219.    **      not dropped when the process exits.  This causes major problems,
  220.    **      so flock is the only alternative.
  221.  */
  222. #ifdef ultrix
  223. #ifdef vax
  224. #define LA_TYPE       LA_FLOAT
  225. #else
  226. #define LA_TYPE       LA_INT
  227. #define LA_AVENRUN    "avenrun"
  228. #endif
  229. #endif
  230. /*
  231.    **  OSF/1 for KSR.
  232.    **
  233.    **      Contributed by Todd C. Miller <Todd.Miller@cs.colorado.edu>
  234.  */
  235. #ifdef __ksr__
  236. #define __osf__        1 /* get OSF/1 defines below */
  237. #endif
  238. /*
  239.    **  OSF/1 for Intel Paragon.
  240.    **
  241.    **      Contributed by Jeff A. Earickson <jeff@ssd.intel.com>
  242.    **      of Intel Scalable Systems Divison.
  243.  */
  244. #ifdef __PARAGON__
  245. #define __osf__        1 /* get OSF/1 defines below */
  246. #endif
  247. /*
  248.    **  OSF/1 (tested on Alpha) -- now known as Digital UNIX.
  249.    **
  250.    **      Tested for 3.2 and 4.0.
  251.  */
  252. #ifdef __osf__
  253. #define LA_TYPE        LA_ALPHAOSF
  254. #endif
  255. /*
  256.    **  NeXTstep
  257.  */
  258. #ifdef NeXT
  259. #ifndef LA_TYPE
  260. #define LA_TYPE       LA_MACH
  261. #endif
  262. #endif
  263. /*
  264.    **  4.4 BSD
  265.    **
  266.    **      See also BSD defines.
  267.  */
  268. #if defined(BSD4_4) && !defined(__bsdi__) && !defined(__GNU__)
  269. #include <paths.h>
  270. #include <sys/cdefs.h>
  271. #ifndef LA_TYPE
  272. #define LA_TYPE       LA_SUBR
  273. #endif
  274. #endif
  275. /*
  276.    **  BSD/OS (was BSD/386) (all versions)
  277.    **      From Tony Sanders, BSDI
  278.  */
  279. #ifdef __bsdi__
  280. #include <paths.h>
  281. #include <sys/cdefs.h>
  282. #ifndef LA_TYPE
  283. #define LA_TYPE       LA_SUBR
  284. #endif
  285. #endif
  286. /*
  287.    **  QNX 4.2x
  288.    **      Contributed by Glen McCready <glen@qnx.com>.
  289.    **
  290.    **      Should work with all versions of QNX.
  291.  */
  292. #if defined(__QNX__)
  293. #include <unix.h>
  294. #include <sys/select.h>
  295. #define LA_TYPE        LA_ZERO
  296. #endif
  297. /*
  298.    **  FreeBSD / NetBSD / OpenBSD (all architectures, all versions)
  299.    **
  300.    **  4.3BSD clone, closer to 4.4BSD      for FreeBSD 1.x and NetBSD 0.9x
  301.    **  4.4BSD-Lite based                   for FreeBSD 2.x and NetBSD 1.x
  302.    **
  303.    **      See also BSD defines.
  304.  */
  305. #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
  306. #include <paths.h>
  307. #include <sys/cdefs.h>
  308. #ifndef LA_TYPE
  309. #define LA_TYPE       LA_SUBR
  310. #endif
  311. #if defined(__FreeBSD__)
  312. #if __FreeBSD__ == 2
  313. #include <osreldate.h> /* and this works */
  314. #if __FreeBSD_version >= 199512 /* 2.2-current right now */
  315. #include <libutil.h>
  316. #endif
  317. #endif
  318. #endif
  319. #endif
  320. /*
  321.    **  Mach386
  322.    **
  323.    **      For mt Xinu's Mach386 system.
  324.  */
  325. #if defined(MACH) && defined(i386) && !defined(__GNU__)
  326. #define MACH386        1
  327. #ifndef LA_TYPE
  328. #define LA_TYPE       LA_FLOAT
  329. #endif
  330. #endif
  331. /*
  332.    **  GNU OS (hurd)
  333.    **      Largely BSD & posix compatible.
  334.    **      Port contributed by Miles Bader <miles@gnu.ai.mit.edu>.
  335.  */
  336. #ifdef __GNU_HURD__
  337. #define LA_TYPE        LA_MACH
  338. #endif /* GNU */
  339. /*
  340.    **  4.3 BSD -- this is for very old systems
  341.    **
  342.    **      Should work for mt Xinu MORE/BSD and Mips UMIPS-BSD 2.1.
  343.    **
  344.    **      You'll also have to install a new resolver library.
  345.    **      I don't guarantee that support for this environment is complete.
  346.  */
  347. #if defined(oldBSD43) || defined(MORE_BSD) || defined(umipsbsd)
  348. #ifndef LA_TYPE
  349. #define LA_TYPE       LA_FLOAT
  350. #endif
  351. #endif
  352. /*
  353.    **  SCO Unix
  354.    **
  355.    **      This includes three parts:
  356.    **
  357.    **      The first is for SCO OpenServer 5.
  358.    **      (Contributed by Keith Reynolds <keithr@sco.COM>).
  359.    **
  360.    **              SCO OpenServer 5 has a compiler version number macro,
  361.    **              which we can use to figure out what version we're on.
  362.    **              This may have to change in future releases.
  363.    **
  364.    **      The second is for SCO UNIX 3.2v4.2/Open Desktop 3.0.
  365.    **      (Contributed by Philippe Brand <phb@colombo.telesys-innov.fr>).
  366.    **
  367.    **      The third is for SCO UNIX 3.2v4.0/Open Desktop 2.0 and earlier.
  368.  */
  369. /* SCO OpenServer 5 */
  370. #if _SCO_DS >= 1
  371. #include <paths.h>
  372. #ifndef LA_TYPE
  373. #define LA_TYPE       LA_DEVSHORT
  374. #endif
  375. #define _PATH_AVENRUN  "/dev/table/avenrun"
  376. #ifndef _SCO_unix_4_2
  377. #define _SCO_unix_4_2
  378. #endif
  379. #endif
  380. /* SCO UNIX 3.2v4.2/Open Desktop 3.0 */
  381. #ifdef _SCO_unix_4_2
  382. #define _SCO_unix_
  383. #endif
  384. /* SCO UNIX 3.2v4.0 Open Desktop 2.0 and earlier */
  385. #ifdef _SCO_unix_
  386. #include <sys/stream.h> /* needed for IP_SRCROUTE */
  387. #define SYSTEM5        1 /* include all the System V defines */
  388. #define _PATH_UNIX             "/unix"
  389. #ifndef _SCO_DS
  390. #define LA_TYPE       LA_SHORT
  391. #endif
  392. #endif
  393. /*
  394.    **  ISC (SunSoft) Unix.
  395.    **
  396.    **      Contributed by J.J. Bailey <jjb@jagware.bcc.com>
  397.  */
  398. #ifdef ISC_UNIX
  399. #include <net/errno.h>
  400. #include <sys/stream.h> /* needed for IP_SRCROUTE */
  401. #include <sys/bsdtypes.h>
  402. #define SYSTEM5        1 /* include all the System V defines */
  403. #define LA_TYPE        LA_SHORT
  404. #define _PATH_UNIX             "/unix"
  405. #endif
  406. /*
  407.    **  Altos System V (5.3.1)
  408.    **      Contributed by Tim Rice <tim@trr.metro.net>.
  409.  */
  410. #ifdef ALTOS_SYSTEM_V
  411. #include <sys/stream.h>
  412. #include <limits.h>
  413. #define SYSTEM5        1 /* include all the System V defines */
  414. #define LA_TYPE        LA_SHORT
  415. #endif
  416. /*
  417.    **  ConvexOS 11.0 and later
  418.    **
  419.    **      "Todd C. Miller" <millert@mroe.cs.colorado.edu> claims this
  420.    **      works on 9.1 as well.
  421.    **
  422.    **  ConvexOS 11.5 and later, should work on 11.0 as defined.
  423.    **  For pre-ConvexOOS 11.0, define NEEDGETOPT, undef IDENTPROTO
  424.    **
  425.    **      Eric Schnoebelen (eric@cirr.com) For CONVEX Computer Corp.
  426.    **              (now the CONVEX Technologies Center of Hewlett Packard)
  427.  */
  428. #ifdef _CONVEX_SOURCE
  429. #define LA_TYPE        LA_FLOAT
  430. #endif
  431. /*
  432.    **  RISC/os 4.52
  433.    **
  434.    **      Gives a ton of warning messages, but otherwise compiles.
  435.  */
  436. #ifdef RISCOS
  437. #define LA_TYPE        LA_INT
  438. #define LA_AVENRUN     "avenrun"
  439. #define _PATH_UNIX     "/unix"
  440. #endif
  441. /*
  442.    **  Linux 0.99pl10 and above...
  443.    **
  444.    **  Thanks to, in reverse order of contact:
  445.    **
  446.    **      John Kennedy <warlock@csuchico.edu>
  447.    **      Andrew Pam <avatar@aus.xanadu.com>
  448.    **      Florian La Roche <rzsfl@rz.uni-sb.de>
  449.    **      Karl London <karl@borg.demon.co.uk>
  450.    **
  451.    **  Last compiled against:      [06/10/96 @ 09:21:40 PM (Monday)]
  452.    **      sendmail 8.8-a4         named bind-4.9.4-T4B    db-1.85
  453.    **      gcc 2.7.2               libc-5.3.12             linux 2.0.0
  454.    **
  455.    **  NOTE: Override HASFLOCK as you will but, as of 1.99.6, mixed-style
  456.    **      file locking is no longer allowed.  In particular, make sure
  457.    **      your DBM library and sendmail are both using either flock(2)
  458.    **      *or* fcntl(2) file locking, but not both.
  459.  */
  460. #ifdef __linux__
  461. #define BSD            1 /* include BSD defines */
  462. #ifndef LA_TYPE
  463. #define LA_TYPE       LA_PROCSTR
  464. #endif
  465. #include <sys/sysmacros.h>
  466. #endif
  467. /*
  468.    **  DELL SVR4 Issue 2.2, and others
  469.    **      From Kimmo Suominen <kim@grendel.lut.fi>
  470.    **
  471.    **      It's on #ifdef DELL_SVR4 because Solaris also gets __svr4__
  472.    **      defined, and the definitions conflict.
  473.    **
  474.    **      Peter Wemm <peter@perth.DIALix.oz.au> claims that the setreuid
  475.    **      trick works on DELL 2.2 (SVR4.0/386 version 4.0) and ESIX 4.0.3A
  476.    **      (SVR4.0/386 version 3.0).
  477.  */
  478. #ifdef DELL_SVR4
  479. /* no changes necessary */
  480. /* see general __svr4__ defines below */
  481. #endif
  482. /*
  483.    **  Apple A/UX 3.0
  484.  */
  485. #ifdef _AUX_SOURCE
  486. #include <sys/sysmacros.h>
  487. #define BSD /* has BSD routines */
  488. #ifndef LA_TYPE
  489. #define LA_TYPE       LA_INT
  490. #define FSHIFT        16
  491. #endif
  492. #define LA_AVENRUN     "avenrun"
  493. #ifndef _PATH_UNIX
  494. #define _PATH_UNIX            "/unix" /* should be in <paths.h> */
  495. #endif
  496. #endif
  497. /*
  498.    **  Encore UMAX V
  499.    **
  500.    **      Not extensively tested.
  501.  */
  502. #ifdef UMAXV
  503. #endif
  504. /*
  505.    **  Stardent Titan 3000 running TitanOS 4.2.
  506.    **
  507.    **      Must be compiled in "cc -43" mode.
  508.    **
  509.    **      From Kate Hedstrom <kate@ahab.rutgers.edu>.
  510.    **
  511.    **      Note the tweaking below after the BSD defines are set.
  512.  */
  513. #ifdef titan
  514. #endif
  515. /*
  516.    **  Sequent DYNIX 3.2.0
  517.    **
  518.    **      From Jim Davis <jdavis@cs.arizona.edu>.
  519.  */
  520. #ifdef sequent
  521. #define BSD            1
  522. #define LA_TYPE        LA_FLOAT
  523. #ifndef _PATH_UNIX
  524. #define _PATH_UNIX            "/dynix"
  525. #endif
  526. #endif
  527. /*
  528.    **  Sequent DYNIX/ptx v2.0 (and higher)
  529.    **
  530.    **      For DYNIX/ptx v1.x, undefine HASSETREUID.
  531.    **
  532.    **      From Tim Wright <timw@sequent.com>.
  533.    **      Update from Jack Woolley <jwoolley@sctcorp.com>, 26 Dec 1995,
  534.    **              for DYNIX/ptx 4.0.2.
  535.  */
  536. #ifdef _SEQUENT_
  537. #include <sys/stream.h>
  538. #define SYSTEM5        1 /* include all the System V defines */
  539. #define LA_TYPE        LA_INT
  540. #endif
  541. /*
  542.    **  Cray Unicos
  543.    **
  544.    **      Ported by David L. Kensiski, Sterling Sofware <kensiski@nas.nasa.gov>
  545.  */
  546. #ifdef UNICOS
  547. #define SYSTEM5        1 /* include all the System V defines */
  548. #define LA_TYPE        LA_ZERO
  549. #endif
  550. /*
  551.    **  Apollo DomainOS
  552.    **
  553.    **  From Todd Martin <tmartint@tus.ssi1.com> & Don Lewis <gdonl@gv.ssi1.com>
  554.    **
  555.    **  15 Jan 1994; updated 2 Aug 1995
  556.    **
  557.  */
  558. #ifdef apollo
  559. #define LA_TYPE        LA_SUBR /* use getloadavg.c */
  560. #endif
  561. /*
  562.    **  UnixWare 2.x
  563.  */
  564. #ifdef UNIXWARE2
  565. #define UNIXWARE       1
  566. #endif
  567. /*
  568.    **  UnixWare 1.1.2.
  569.    **
  570.    **      Updated by Petr Lampa <lampa@fee.vutbr.cz>.
  571.    **      From Evan Champion <evanc@spatial.synapse.org>.
  572.  */
  573. #ifdef UNIXWARE
  574. #include <sys/mkdev.h>
  575. #define SYSTEM5                1
  576. #define LA_TYPE                LA_ZERO
  577. #define _PATH_UNIX             "/unix"
  578. #endif
  579. /*
  580.    **  Intergraph CLIX 3.1
  581.    **
  582.    **      From Paul Southworth <pauls@locust.cic.net>
  583.  */
  584. #ifdef CLIX
  585. #define SYSTEM5        1 /* looks like System V */
  586. #endif
  587. /*
  588.    **  NCR MP-RAS 2.x (SysVr4) with Wollongong TCP/IP
  589.    **
  590.    **      From Kevin Darcy <kevin@tech.mis.cfc.com>.
  591.  */
  592. #ifdef NCR_MP_RAS2
  593. #include <sys/sockio.h>
  594. #define __svr4__
  595. #endif
  596. /*
  597.    **  NCR MP-RAS 3.x (SysVr4) with STREAMware TCP/IP
  598.    **
  599.    **      From Tom Moore <Tom.Moore@DaytonOH.NCR.COM>
  600.  */
  601. #ifdef NCR_MP_RAS3
  602. #define __svr4__
  603. #endif
  604. /*
  605.    **  Tandem NonStop-UX SVR4
  606.    **
  607.    **      From Rick McCarty <mccarty@mpd.tandem.com>.
  608.  */
  609. #ifdef NonStop_UX_BXX
  610. #define __svr4__
  611. #endif
  612. /*
  613.    **  Hitachi 3050R & 3050RX Workstations running HI-UX/WE2.
  614.    **
  615.    **      Tested for 1.04 and 1.03
  616.    **      From Akihiro Hashimoto ("Hash") <hash@dominic.ipc.chiba-u.ac.jp>.
  617.  */
  618. #ifdef __H3050R
  619. #define SYSTEM5        1 /* include all the System V defines */
  620. #define LA_TYPE        LA_FLOAT
  621. #ifndef _PATH_UNIX
  622. #define _PATH_UNIX            "/HI-UX"
  623. #endif
  624. #endif
  625. /*
  626.    **  Amdahl UTS System V 2.1.5 (SVr3-based)
  627.    **
  628.    **    From: Janet Jackson <janet@dialix.oz.au>.
  629.  */
  630. #ifdef _UTS
  631. #include <sys/sysmacros.h>
  632. #define LA_TYPE        LA_ZERO /* doesn't have load average */
  633. #define _PATH_UNIX             "/unix"
  634. #endif
  635. /*
  636.    **  Cray Computer Corporation's CSOS
  637.    **
  638.    **      From Scott Bolte <scott@craycos.com>.
  639.  */
  640. #ifdef _CRAYCOM
  641. #define SYSTEM5        1 /* include all the System V defines */
  642. #define LA_TYPE        LA_ZERO
  643. #endif
  644. /*
  645.    **  Sony NEWS-OS 4.2.1R and 6.0.3
  646.    **
  647.    **      From Motonori NAKAMURA <motonori@cs.ritsumei.ac.jp>.
  648.  */
  649. #ifdef sony_news
  650. #ifndef __svr4
  651. #ifndef BSD
  652. #define BSD /* has BSD routines */
  653. #endif
  654. #define LA_TYPE       LA_INT
  655. #else
  656. #ifndef __svr4__
  657. #define __svr4__ /* use all System V Releae 4 defines below */
  658. #endif
  659. #define LA_TYPE       LA_READKSYM /* use MIOC_READKSYM ioctl */
  660. #define _PATH_UNIX            "/stand/unix"
  661. #endif
  662. #endif
  663. /*
  664.    **  Omron LUNA/UNIOS-B 3.0, LUNA2/Mach and LUNA88K Mach
  665.    **
  666.    **      From Motonori NAKAMURA <motonori@cs.ritsumei.ac.jp>.
  667.  */
  668. #ifdef luna
  669. #ifdef uniosb
  670. #define LA_TYPE       LA_INT
  671. #endif
  672. #ifdef luna2
  673. #define LA_TYPE       LA_SUBR
  674. #endif
  675. #ifdef luna88k
  676. #define LA_TYPE       LA_INT
  677. #endif
  678. #endif
  679. /*
  680.    **  NEC EWS-UX/V 4.2 (with /usr/ucb/cc)
  681.    **
  682.    **      From Motonori NAKAMURA <motonori@cs.ritsumei.ac.jp>.
  683.  */
  684. #if defined(nec_ews_svr4) || defined(_nec_ews_svr4)
  685. #ifndef __svr4__
  686. #define __svr4__ /* use all System V Releae 4 defines below */
  687. #endif
  688. #define LA_TYPE        LA_READKSYM /* use MIOC_READSYM ioctl */
  689. #endif
  690. /*
  691.    **  Fujitsu/ICL UXP/DS (For the DS/90 Series)
  692.    **
  693.    **      From Diego R. Lopez <drlopez@cica.es>.
  694.    **      Additional changes from Fumio Moriya and Toshiaki Nomura of the
  695.    **              Fujitsu Fresoftware gruop <dsfrsoft@oai6.yk.fujitsu.co.jp>.
  696.  */
  697. #ifdef __uxp__
  698. #include <arpa/nameser.h>
  699. #include <sys/sysmacros.h>
  700. #include <sys/mkdev.h>
  701. #define __svr4__
  702. #define _PATH_UNIX             "/stand/unix"
  703. #endif
  704. /*
  705.    **  Pyramid DC/OSx
  706.    **
  707.    **      From Earle Ake <akee@wpdiss1.wpafb.af.mil>.
  708.  */
  709. #ifdef DCOSx
  710. #endif
  711. /*
  712.    **  Concurrent Computer Corporation Maxion
  713.    **
  714.    **      From Donald R. Laster Jr. <laster@access.digex.net>.
  715.  */
  716. #ifdef __MAXION__
  717. #include <sys/stream.h>
  718. #define __svr4__               1 /* SVR4.2MP */
  719. #endif
  720. /*
  721.    **  Harris Nighthawk PowerUX (nh6000 box)
  722.    **
  723.    **  Contributed by Bob Miorelli, Pratt & Whitney <miorelli@pweh.com>
  724.  */
  725. #ifdef _PowerUX
  726. #ifndef __svr4__
  727. #define __svr4__
  728. #endif
  729. #define LA_TYPE                LA_ZERO
  730. #endif
  731. /*
  732.    **  Siemens Nixdorf Informationssysteme AG SINIX
  733.    **
  734.    **      Contributed by Gerald Rinske <Gerald.Rinske@mch.sni.de>
  735.    **      of Siemens Business Services VAS.
  736.  */
  737. #ifdef sinix
  738. #endif
  739. /*
  740.    **  CRAY T3E
  741.    **
  742.    **      Contributed by Manu Mahonen <mailadm@csc.fi>
  743.    **      of Center for Scientific Computing.
  744.  */
  745. #ifdef _CRAY
  746. #endif
  747. /**********************************************************************
  748. **  End of Per-Operating System defines
  749. **********************************************************************/
  750. /**********************************************************************
  751. **  More general defines
  752. **********************************************************************/
  753. #ifdef BSD
  754. #endif
  755. #ifdef __svr4__
  756. #define SYSTEM5        1
  757. #ifndef _PATH_UNIX
  758. #define _PATH_UNIX            "/unix"
  759. #endif
  760. #endif
  761. #ifdef SYSTEM5
  762. #include <sys/sysmacros.h>
  763. #ifndef LA_TYPE
  764. #ifdef MIOC_READKSYM
  765. #define LA_TYPE      LA_READKSYM /* use MIOC_READKSYM ioctl */
  766. #else
  767. #define LA_TYPE      LA_INT /* assume integer load average */
  768. #endif
  769. #endif
  770. #endif
  771. /* general POSIX defines */
  772. #ifdef _POSIX_VERSION
  773. #endif
  774. /*
  775.    **  Tweaking for systems that (for example) claim to be BSD or POSIX
  776.    **  but don't have all the standard BSD or POSIX routines (boo hiss).
  777.  */