[BACK]Return to hpux.h CVS log [TXT][DIR] Up to [local] / sys / compat / hpux

Annotation of sys/compat/hpux/hpux.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: hpux.h,v 1.14 2004/09/19 22:03:16 mickey Exp $        */
                      2: /*     $NetBSD: hpux.h,v 1.11 1997/04/01 19:58:58 scottr Exp $ */
                      3:
                      4: /*
                      5:  * Copyright (c) 1995 Jason R. Thorpe.  All rights reserved.
                      6:  * Copyright (c) 1988 University of Utah.
                      7:  * Copyright (c) 1990, 1993
                      8:  *     The Regents of the University of California.  All rights reserved.
                      9:  *
                     10:  * This code is derived from software contributed to Berkeley by
                     11:  * the Systems Programming Group of the University of Utah Computer
                     12:  * Science Department.
                     13:  *
                     14:  * Redistribution and use in source and binary forms, with or without
                     15:  * modification, are permitted provided that the following conditions
                     16:  * are met:
                     17:  * 1. Redistributions of source code must retain the above copyright
                     18:  *    notice, this list of conditions and the following disclaimer.
                     19:  * 2. Redistributions in binary form must reproduce the above copyright
                     20:  *    notice, this list of conditions and the following disclaimer in the
                     21:  *    documentation and/or other materials provided with the distribution.
                     22:  * 3. 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.33 93/08/05$
                     39:  *
                     40:  *     @(#)hpux.h      8.4 (Berkeley) 2/13/94
                     41:  */
                     42:
                     43: #include <compat/hpux/hpux_exec.h>
                     44:
                     45: /* HP-UX style UTSNAME struct used by uname syscall */
                     46:
                     47: struct hpux_utsname {
                     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 hpux_sgttyb {
                     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 hpux_sgttyb)
                     71: #define        HPUXTIOCSETP    _IOW('t', 9, struct hpux_sgttyb)
                     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: #define HPUXTIOCSWINSZ _IOW('t', 106, struct winsize)
                     86: #define HPUXTIOCGWINSZ _IOR('t', 107, struct winsize)
                     87:
                     88: /* non-blocking IO--doesn't interfere with O_NDELAY */
                     89: #define HPUXFIOSNBIO   _IOW('f', 126, int)
                     90:
                     91: /* HP-UX stat structure */
                     92:
                     93: #define bsdtohpuxdev(d)        ((major(d) << 24) | minor(d))
                     94:
                     95: struct hpux_stat {
                     96:        int             hst_dev;
                     97:        u_int           hst_ino;
                     98:        u_short         hst_mode;
                     99:        short           hst_nlink;
                    100:        u_short         hst_old_uid;    /* these have since moved */
                    101:        u_short         hst_old_gid;    /* ... */
                    102:        int             hst_rdev;
                    103:        int             hst_size;
                    104:        int             hst_atime;
                    105:        int             hst_spare1;
                    106:        int             hst_mtime;
                    107:        int             hst_spare2;
                    108:        int             hst_ctime;
                    109:        int             hst_spare3;
                    110:        int             hst_blksize;
                    111:        int             hst_blocks;
                    112:        u_int           hst_remote;
                    113:        int             hst_netdev;
                    114:        u_int           hst_netino;
                    115:        u_short         hst_cnode;
                    116:        u_short         hst_rcnode;
                    117:        u_short         hst_netsite;
                    118:        short           hst_fstype;
                    119:        int             hst_realdev;
                    120:        u_short         hst_basemode;
                    121:        u_short         hst_spareshort1;
                    122:        int             hst_uid;
                    123:        int             hst_gid;
                    124:        int             hst_spare4[3];
                    125: };
                    126:
                    127: struct hpux_stat64 {
                    128:        int             hst_dev;
                    129:        u_quad_t        hst_ino;
                    130:        u_short         hst_mode;
                    131:        short           hst_nlink;
                    132:        u_short         hst_old_uid;    /* these have since moved */
                    133:        u_short         hst_old_gid;    /* ... */
                    134:        int             hst_rdev;
                    135:        quad_t          hst_size;
                    136:        quad_t          hst_atime;
                    137:        int             hst_spare1;
                    138:        quad_t          hst_mtime;
                    139:        int             hst_spare2;
                    140:        quad_t          hst_ctime;
                    141:        int             hst_spare3;
                    142:        quad_t          hst_blksize;
                    143:        quad_t          hst_blocks;
                    144:        u_int           hst_remote;
                    145:        int             hst_netdev;
                    146:        u_quad_t        hst_netino;
                    147:        u_short         hst_cnode;
                    148:        u_short         hst_rcnode;
                    149:        u_short         hst_netsite;
                    150:        short           hst_fstype;
                    151:        int             hst_realdev;
                    152:        u_short         hst_basemode;
                    153:        u_short         hst_spareshort1;
                    154:        int             hst_uid;
                    155:        int             hst_gid;
                    156:        int             hst_spare4[3];
                    157: };
                    158:
                    159: #define        HST_REMOTE_REMOTE       0x01    /* set if file is remote */
                    160: #define        HST_REMOTE_ACL          0x02    /* set if file has ACL entries */
                    161: #define        HST_REMOTE_ACLV         0x04    /* set if file has ACL v2 entries */
                    162:
                    163: /* from old timeb.h */
                    164: struct hpux_otimeb {
                    165:        time_t  time;
                    166:        u_short millitm;
                    167:        short   timezone;
                    168:        short   dstflag;
                    169: };
                    170:
                    171: /* ye ole stat structure */
                    172: struct hpux_ostat {
                    173:        u_short hst_dev;
                    174:        u_short hst_ino;
                    175:        u_short hst_mode;
                    176:        short   hst_nlink;
                    177:        short   hst_uid;
                    178:        short   hst_gid;
                    179:        u_short hst_rdev;
                    180:        int     hst_size;
                    181:        int     hst_atime;
                    182:        int     hst_mtime;
                    183:        int     hst_ctime;
                    184: };
                    185:
                    186: /* HP-UX compat file flags */
                    187: #define HPUXNDELAY     00000004
                    188: #define HPUXFCREAT     00000400
                    189: #define        HPUXFTRUNC      00001000
                    190: #define        HPUXFEXCL       00002000
                    191: #define HPUXFSYNCIO    00100000
                    192: #define HPUXNONBLOCK   00200000
                    193: #define HPUXFREMOTE    01000000
                    194:
                    195: /* HP-UX fcntl file locking */
                    196: struct hpux_flock {
                    197:        short   hl_type;
                    198:        short   hl_whence;
                    199:        long    hl_start;
                    200:        long    hl_len;
                    201:        long    hl_pid;
                    202: };
                    203:
                    204: #define HPUXF_GETLK    7
                    205: #define HPUXF_SETLK    8
                    206: #define HPUXF_SETLKW   9
                    207:
                    208: #define HPUXF_RDLCK    1
                    209: #define HPUXF_WRLCK    2
                    210: #define HPUXF_UNLCK    3
                    211:
                    212: /* HP-UX only sysV shmctl() commands */
                    213: #define SHM_LOCK       3       /* Lock segment in core */
                    214: #define SHM_UNLOCK     4       /* Unlock segment */
                    215:
                    216: /* SHM stuff reflecting POSIX types */
                    217: struct hpux_ipc_perm {
                    218:        long    uid;    /* owner's user id */
                    219:        long    gid;    /* owner's group id */
                    220:        long    cuid;   /* creator's user id */
                    221:        long    cgid;   /* creator's group id */
                    222:        u_short mode;   /* access modes */
                    223:        u_short seq;    /* slot usage sequence number */
                    224:        long    key;    /* key */
                    225: };
                    226:
                    227: struct hpux_shmid_ds {
                    228:        struct hpux_ipc_perm shm_perm;  /* operation permission struct */
                    229:        int             shm_segsz;      /* segment size (bytes) */
                    230:        struct pte      *shm_ptbl;      /* ptr to associated page table */
                    231:        long            shm_lpid;       /* pid of last shmop */
                    232:        long            shm_cpid;       /* pid of creator */
                    233:        u_short         shm_nattch;     /* current # attached */
                    234:        u_short         shm_cnattch;    /* in memory # attached */
                    235:        time_t          shm_atime;      /* last shmat time */
                    236:        time_t          shm_dtime;      /* last shmdt time */
                    237:        time_t          shm_ctime;      /* last change time */
                    238:        /* actually longer */
                    239: };
                    240:
                    241: /* HP-UX rtprio values */
                    242: #define RTPRIO_MIN     0
                    243: #define RTPRIO_MAX     127
                    244: #define RTPRIO_NOCHG   1000
                    245: #define RTPRIO_RTOFF   1001
                    246:
                    247: /* HP-UX only sigvec sv_flags values */
                    248: #define HPUXSV_RESET   000000004
                    249:
                    250: /*
                    251:  * HP-UX returns SIGILL instead of SIGFPE for the CHK and TRAPV exceptions.
                    252:  * It also returns different u_code values for certain illegal instruction
                    253:  * and floating point exceptions.  Here are the proper HP-UX u_code values
                    254:  * (numbers from hpux 6.2 manual pages).
                    255:  */
                    256:
                    257: /* SIGILL codes */
                    258: #define        HPUX_ILL_ILLINST_TRAP   0       /* T_ILLINST+USER */
                    259: #define        HPUX_ILL_CHK_TRAP       6       /* T_CHKINST+USER */
                    260: #define        HPUX_ILL_TRAPV_TRAP     7       /* T_TRAPVINST+USER */
                    261: #define        HPUX_ILL_PRIV_TRAP      8       /* T_PRIVINST+USER */
                    262:
                    263: /* SIGFPE codes */
                    264: #define        HPUX_FPE_INTDIV_TRAP    5       /* T_ZERODIV+USER */
                    265:
                    266: /* HP-UX POSIX signal stuff implementation */
                    267: typedef struct __hpux_sigset_t { u_int sigset[8]; } hpux_sigset_t;
                    268: struct hpux_sigaction {
                    269:        void            (*sa__handler)(int);
                    270:        hpux_sigset_t   sa_mask;
                    271:        int             sa_flags;
                    272: };
                    273: #define HPUXSA_ONSTACK         1
                    274: #define HPUXSA_RESETHAND       4
                    275: #define HPUXSA_NOCLDSTOP       8
                    276: #define HPUXSA_NODEFER         32
                    277: #define HPUXSA_RESTART         64
                    278: #define HPUXSA_NOCLDWAIT       128
                    279:
                    280: #define        HPUXSIG_BLOCK   0       /* block specified signal set */
                    281: #define        HPUXSIG_UNBLOCK 1       /* unblock specified signal set */
                    282: #define        HPUXSIG_SETMASK 2       /* set specified signal set */
                    283:
                    284: /* sysconf stuff */
                    285: #define HPUX_SYSCONF_CLKTICK   2
                    286: #define HPUX_SYSCONF_OPENMAX   4
                    287: #define HPUX_SYSCONF_CPUTYPE   10001
                    288: #define HPUX_SYSCONF_CPUM020   0x20C
                    289: #define HPUX_SYSCONF_CPUM030   0x20D
                    290: #define HPUX_SYSCONF_CPUM040   0x20E
                    291: #define HPUX_SYSCONF_CPUPA10   0x20B
                    292: #define HPUX_SYSCONF_CPUPA11   0x210
                    293: #define HPUX_SYSCONF_CPUPA20   0x214
                    294:
                    295: /* mmap stuff */
                    296: #define HPUXMAP_FIXED  0x04
                    297: #define HPUXMAP_REPLACE        0x08
                    298: #define HPUXMAP_ANON   0x10
                    299:
                    300: /* rlimit stuff */
                    301: #define HPUXRLIMIT_NOFILE      6
                    302:
                    303: /*
                    304:  * In BSD EAGAIN and EWOULDBLOCK are the same error code.
                    305:  * However, for HP-UX we must split them out to separate codes.
                    306:  * The easiest way to do this was to check the return value of
                    307:  * BSD routines which are known to return EAGAIN (but never
                    308:  * EWOULDBLOCK) and change it to the pseudo-code OEAGAIN when
                    309:  * we see it.  The error translation table will them map that
                    310:  * code to the HP-UX EAGAIN value.
                    311:  */
                    312: #define OEAGAIN        82
                    313:
                    314: /*
                    315:  * Extensions to the fd_ofileflags flags.
                    316:  */
                    317: #define        HPUX_UF_NONBLOCK_ON     0x10
                    318: #define        HPUX_UF_FNDELAY_ON      0x20
                    319: #define        HPUX_UF_FIONBIO_ON      0x40
                    320:
                    321: #ifdef __m68k__
                    322: /*
                    323:  * Skeletal 6.X HP-UX user structure info for ptrace() mapping.
                    324:  * Yes, this is as bogus as it gets...
                    325:  */
                    326:
                    327: /* 6.0/6.2 offsets */
                    328: #define ooHU_AROFF     0x004
                    329: #define ooHU_TSOFF     0x092
                    330: #define ooHU_EDOFF     0x91E
                    331: #define ooHU_FPOFF     0xA66
                    332:
                    333: /* 6.5 offsets */
                    334: #define oHU_AROFF      0x004
                    335: #define oHU_TSOFF      0x0B2
                    336: #define oHU_EDOFF      0x93A
                    337: #define oHU_FPOFF      0xA86
                    338:
                    339: /* 7.X offsets */
                    340: #define HU_AROFF       0x004
                    341: #define HU_TSOFF       0x0B4
                    342: #define HU_EDOFF       0x8C8
                    343: #define HU_FPOFF       0xA28
                    344:
                    345: #define HU_PAD1        (HU_AROFF)
                    346: #define HU_PAD2        (HU_TSOFF-HU_AROFF-4)
                    347: #define HU_PAD3        (HU_EDOFF-HU_TSOFF-12)
                    348: #define HU_PAD4        (HU_FPOFF-HU_EDOFF-sizeof(struct hpux_exec))
                    349:
                    350: struct hpux_user {
                    351:        u_char  whocares1[HU_PAD1];     /* +0x000 */
                    352:        int     *hpuxu_ar0;             /* +0x004 */
                    353:        u_char  whocares2[HU_PAD2];     /* +0x008 */
                    354:        int     hpuxu_tsize;            /* +0x0B2 */
                    355:        int     hpuxu_dsize;            /* +0x0B6 */
                    356:        int     hpuxu_ssize;            /* +0x0BA */
                    357:        u_char  whocares3[HU_PAD3];     /* +0x0BE */
                    358:        struct  hpux_exec hpuxu_exdata; /* +0x93A */
                    359:        u_char  whocares4[HU_PAD4];     /* +0x95E */
                    360:        struct  hpux_fp {               /* +0xA66 */
                    361:                int hpfp_save[54];
                    362:                int hpfp_ctrl[3];
                    363:                int hpfp_reg[24];
                    364:        } hpuxu_fp;
                    365:        short   hpuxu_dragon;           /* +0xBCA */
                    366:  };
                    367: #endif

CVSweb