[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     ! 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