home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / sys / hp300 / hpux / hpux.h < prev    next >
Encoding:
C/C++ Source or Header  |  1991-05-08  |  6.2 KB  |  213 lines

  1. /*
  2.  * Copyright (c) 1988 University of Utah.
  3.  * Copyright (c) 1990 The Regents of the University of California.
  4.  * All rights reserved.
  5.  *
  6.  * This code is derived from software contributed to Berkeley by
  7.  * the Systems Programming Group of the University of Utah Computer
  8.  * Science Department.
  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.  * from: Utah $Hdr: hpux.h 1.18 91/02/09$
  39.  *
  40.  *    @(#)hpux.h    7.4 (Berkeley) 5/7/91
  41.  */
  42.  
  43. #include "hpux_exec.h"
  44.  
  45. /* HP-UX style UTSNAME struct used by uname syscall */
  46.  
  47. struct hpuxutsname {
  48.     char    sysname[9];
  49.     char    nodename[9];
  50.     char    release[9];
  51.     char    version[9];
  52.     char    machine[9];
  53.     char    idnumber[15];
  54. };
  55.  
  56. /* HP-UX style "old" IOCTLs */
  57.  
  58. struct hpuxsgttyb {
  59.     char    sg_ispeed;
  60.     char    sg_ospeed;
  61.     char    sg_erase;
  62.     char    sg_kill;
  63.     int    sg_flags;    /* only a short in BSD */
  64. };
  65.  
  66. #define V7_HUPCL    00001
  67. #define V7_XTABS    00002
  68. #define V7_NOAL        04000
  69.  
  70. #define    HPUXTIOCGETP    _IOR('t', 8, struct hpuxsgttyb)
  71. #define    HPUXTIOCSETP    _IOW('t', 9, struct hpuxsgttyb)
  72.  
  73. /* 6.5 job control related ioctls which need to be mapped */
  74.  
  75. #define    HPUXTIOCSLTC    _IOW('T', 23, struct ltchars)
  76. #define    HPUXTIOCGLTC    _IOR('T', 24, struct ltchars)
  77. #define    HPUXTIOCLBIS    _IOW('T', 25, int)
  78. #define    HPUXTIOCLBIC    _IOW('T', 26, int)
  79. #define    HPUXTIOCLSET    _IOW('T', 27, int)
  80. #define    HPUXTIOCLGET    _IOR('T', 28, int)
  81. #    define HPUXLTOSTOP    0000001
  82. #define    HPUXTIOCSPGRP    _IOW('T', 29, int)
  83. #define    HPUXTIOCGPGRP    _IOR('T', 30, int)
  84. #define HPUXTIOCCONS    _IO('t', 104)
  85.  
  86. /* non-blocking IO--doesn't interfere with O_NDELAY */
  87. #define HPUXFIOSNBIO    _IOW('f', 126, int)
  88.  
  89. /* HP-UX stat structure */
  90.  
  91. #define bsdtohpuxdev(d)    ((major(d) << 24) | minor(d))
  92.  
  93. struct    hpuxstat {
  94.     long    hst_dev;
  95.     u_long    hst_ino;
  96.     u_short    hst_mode;
  97.     short    hst_nlink;
  98.     u_short    hst_uid;
  99.     u_short    hst_gid;
  100.     long    hst_rdev;
  101.     off_t    hst_size;
  102.     time_t    hst_atime;
  103.     int    hst_spare1;
  104.     time_t    hst_mtime;
  105.     int    hst_spare2;
  106.     time_t    hst_ctime;
  107.     int    hst_spare3;
  108.     long    hst_blksize;
  109.     long    hst_blocks;
  110.     u_int    hst_remote;
  111.     long    hst_netdev;      
  112.     u_long    hst_netino;
  113.     long    hst_spare4[9];
  114. };
  115.  
  116. /*
  117.  * Skeletal 6.X HP-UX user structure info for ptrace() mapping.
  118.  * Yes, this is as bogus as it gets...
  119.  */
  120.  
  121. /* 6.0/6.2 offsets */
  122. #define ooHU_AROFF    0x004
  123. #define ooHU_TSOFF    0x092
  124. #define ooHU_EDOFF    0x91E
  125. #define ooHU_FPOFF    0xA66
  126.  
  127. /* 6.5 offsets */
  128. #define oHU_AROFF    0x004
  129. #define oHU_TSOFF    0x0B2
  130. #define oHU_EDOFF    0x93A
  131. #define oHU_FPOFF    0xA86
  132.  
  133. /* 7.X offsets */
  134. #define HU_AROFF    0x004
  135. #define HU_TSOFF    0x0B4
  136. #define HU_EDOFF    0x8C8
  137. #define HU_FPOFF    0xA28
  138.  
  139. #define HU_PAD1    (HU_AROFF)
  140. #define HU_PAD2    (HU_TSOFF-HU_AROFF-4)
  141. #define HU_PAD3    (HU_EDOFF-HU_TSOFF-12)
  142. #define HU_PAD4    (HU_FPOFF-HU_EDOFF-sizeof(struct hpux_exec))
  143.  
  144. struct hpuxuser {
  145.     u_char    whocares1[HU_PAD1];    /* +0x000 */
  146.     int    *hpuxu_ar0;        /* +0x004 */
  147.     u_char    whocares2[HU_PAD2];    /* +0x008 */
  148.     int    hpuxu_tsize;        /* +0x0B2 */
  149.     int    hpuxu_dsize;        /* +0x0B6 */
  150.     int    hpuxu_ssize;        /* +0x0BA */
  151.     u_char    whocares3[HU_PAD3];    /* +0x0BE */
  152.     struct    hpux_exec hpuxu_exdata;    /* +0x93A */
  153.     u_char    whocares4[HU_PAD4];    /* +0x95E */
  154.     struct    hpuxfp {        /* +0xA66 */
  155.         int hpfp_save[54];
  156.         int hpfp_ctrl[3];
  157.         int hpfp_reg[24];
  158.     } hpuxu_fp;
  159.     short    hpuxu_dragon;        /* +0xBCA */
  160. };
  161.  
  162. /* HP-UX compat file flags */
  163. #define HPUXFCREAT    00000400
  164. #define    HPUXFTRUNC    00001000
  165. #define    HPUXFEXCL    00002000
  166. #define HPUXFSYNCIO    00100000
  167. #define HPUXFREMOTE    01000000
  168. #define FUSECACHE    04000000
  169.  
  170. /* HP-UX only sysV shmctl() commands */
  171. #define SHM_LOCK    3    /* Lock segment in core */
  172. #define SHM_UNLOCK    4    /* Unlock segment */
  173.  
  174. /* HP-UX rtprio values */
  175. #define RTPRIO_MIN    0
  176. #define RTPRIO_MAX    127
  177. #define RTPRIO_NOCHG    1000
  178. #define RTPRIO_RTOFF    1001
  179.  
  180. /* HP-UX only sigvec sv_flags values */
  181. #define HPUXSV_RESET    000000004
  182.  
  183. /*
  184.  * HP-UX returns SIGILL instead of SIGFPE for the CHK and TRAPV exceptions.
  185.  * It also returns different u_code values for certain illegal instruction
  186.  * and floating point exceptions.  Here are the proper HP-UX u_code values
  187.  * (numbers from hpux 6.2 manual pages).
  188.  */
  189.  
  190. /* SIGILL codes */
  191. #define    HPUX_ILL_ILLINST_TRAP    0    /* T_ILLINST+USER */
  192. #define    HPUX_ILL_CHK_TRAP    6    /* T_CHKINST+USER */
  193. #define    HPUX_ILL_TRAPV_TRAP    7    /* T_TRAPVINST+USER */
  194. #define    HPUX_ILL_PRIV_TRAP    8    /* T_PRIVINST+USER */
  195.  
  196. /* SIGFPE codes */
  197. #define    HPUX_FPE_INTDIV_TRAP    5    /* T_ZERODIV+USER */
  198.  
  199. /* HP-UX POSIX signal stuff implementation */
  200. typedef struct __hpuxsigset_t { long sigset[8]; } hpuxsigset_t;
  201. struct hpuxsigaction {
  202.     void        (*sa_handler)();
  203.     hpuxsigset_t    sa_mask;
  204.     int        sa_flags;
  205. };
  206. #define HPUXSA_ONSTACK        1
  207. #define HPUXSA_RESETHAND    4
  208. #define HPUXSA_NOCLDSTOP    8
  209.  
  210. #define    HPUXSIG_BLOCK    0    /* block specified signal set */
  211. #define    HPUXSIG_UNBLOCK    1    /* unblock specified signal set */
  212. #define    HPUXSIG_SETMASK    2    /* set specified signal set */
  213.