Annotation of coherent/f/usr/include/stropts.h, revision 1.1

1.1     ! root        1: #ifndef        __STROPTS_H__
        !             2: #define        __STROPTS_H__
        !             3: 
        !             4: /*
        !             5:  * User-level information about STREAMS ioctl ()'s and system calls, derived
        !             6:  * from the System V manual pages for getmsg (2), putmsg (2) and streamio (7)
        !             7:  *
        !             8:  * The actual numeric values for pre-R4 constants have been taken from the
        !             9:  * iBCS2 specification, pp6-56 through 5-58.
        !            10:  *
        !            11:  * Values added in the System V Release 4 edition of STREAMS have numeric
        !            12:  * values taken from the System V ABI, Intel386 Supplement pp6-70 through
        !            13:  * 6-75
        !            14:  */
        !            15: 
        !            16: #include <common/ccompat.h>
        !            17: #include <sys/types.h>
        !            18: #include <sys/conf.h>
        !            19: #include <sys/stropts.h>
        !            20: #include <sys/poll.h>
        !            21: 
        !            22: 
        !            23: /*
        !            24:  * Structure used to indicate size and length of data and control buffers
        !            25:  * in the getmsg (2) and putmsg (2) system calls.
        !            26:  */
        !            27: 
        !            28: struct strbuf {
        !            29:        int             maxlen;         /* Maximum buffer length */
        !            30:        int             len;            /* Actual data length */
        !            31:        _VOID         * buf;            /* Points to data buffer */
        !            32: };
        !            33: 
        !            34: 
        !            35: /*
        !            36:  * Flags for getmsg (2)/putmsg (2), defines whether data received/put is
        !            37:  * in a high-priority or normal-priority STREAMS message.
        !            38:  */
        !            39: 
        !            40: #define        RS_HIPRI        0x01
        !            41: 
        !            42: 
        !            43: /*
        !            44:  * Flags for getpmsg (2)/putpmsg (2) that control whether a message received
        !            45:  * or sent is high priority, normal priority, or a member of a priority band.
        !            46:  */
        !            47: 
        !            48: #define        MSG_HIPRI       0x01
        !            49: #define        MSG_ANY         0x02
        !            50: #define        MSG_BAND        0x04
        !            51: 
        !            52: 
        !            53: /*
        !            54:  * Return value mask for getmsg (2) and getpmsg (2) that defines whether
        !            55:  * there is more control or data information in the current message than
        !            56:  * could be retrieved into the supplied buffers.
        !            57:  */
        !            58: 
        !            59: #define        MORECTL         1
        !            60: #define        MOREDATA        2
        !            61: 
        !            62: 
        !            63: /*
        !            64:  * Function prototypes for system calls.
        !            65:  */
        !            66: 
        !            67: __EXTERN_C_BEGIN__
        !            68: 
        !            69: int    getmsg          __PROTO ((int fd, struct strbuf * ctlptr,
        !            70:                                  struct strbuf * dataptr, int * flagsp));
        !            71: int    getpmsg         __PROTO ((int fd, struct strbuf * ctlptr,
        !            72:                                  struct strbuf * dataptr, int * bandp,
        !            73:                                  int * flagsp));
        !            74: int    putmsg          __PROTO ((int fd, __CONST__ struct strbuf * ctlptr,
        !            75:                                  __CONST__ struct strbuf * dataptr, int flags));
        !            76: int    putpmsg         __PROTO ((int fd, const struct strbuf * ctlptr,
        !            77:                                  __CONST__ struct strbuf * dataptr, int band,
        !            78:                                  int flags));
        !            79: 
        !            80: __EXTERN_C_END__
        !            81: 
        !            82: 
        !            83: /*
        !            84:  * Structure used in I_FLUSHBAND to control how priority bands are flushed.
        !            85:  */
        !            86: 
        !            87: struct bandinfo {
        !            88:        unsigned char   bi_pri;         /* Priority band number */
        !            89:        int             bi_flag;
        !            90: };
        !            91: 
        !            92: 
        !            93: /*
        !            94:  * structure used in I_PEEK ioctl () to retrieve data waiting at the stream
        !            95:  * head without consuming it.
        !            96:  */
        !            97: 
        !            98: struct strpeek {
        !            99:        struct strbuf   ctlbuf;
        !           100:        struct strbuf   databuf;
        !           101:        long            flags;
        !           102: };
        !           103: 
        !           104: 
        !           105: /*
        !           106:  * structure used in I_STR ioctl () to send an arbitrary other ioctl ()
        !           107:  * command downstream to a STREAMS module or driver.
        !           108:  */
        !           109: 
        !           110: struct strioctl {
        !           111:        int             ic_cmd;         /* ioctl () command to send */
        !           112:        int             ic_timeout;     /* seconds to wait for reply */
        !           113:        int             ic_len;         /* length of data to send */
        !           114:        char          * ic_dp;          /* data buffer for send/receive */
        !           115: };
        !           116: 
        !           117: 
        !           118: /*
        !           119:  * structure used in the I_RECVFD ioctl () to retrieve supplementary data
        !           120:  * about the sent file descriptor.
        !           121:  */
        !           122: 
        !           123: struct strrecvfd {
        !           124:        int             fd;             /* arriving file descriptor */
        !           125:        o_uid_t         uid;            /* uid of sending stream */
        !           126:        o_gid_t         gid;            /* gid of sending stream */
        !           127:        char            fill [8];       /* reserved */
        !           128: };
        !           129: 
        !           130: 
        !           131: /*
        !           132:  * Structure used in the I_FDINSERT ioctl () to do whatever the I_FDINSERT
        !           133:  * ioctl does.
        !           134:  */
        !           135: 
        !           136: struct strfdinsert {
        !           137:        struct strbuf   ctlbuf;
        !           138:        struct strbuf   databuf;
        !           139:        long            flags;
        !           140:        int             fildes;
        !           141:        int             offset;
        !           142: };
        !           143: 
        !           144: 
        !           145: /*
        !           146:  * information structure used in the I_LIST ioctl () to retrieve the names
        !           147:  * of all the modules and drivers on a stream.
        !           148:  */
        !           149: 
        !           150: struct str_list {
        !           151:        int             sl_nmods;       /* number of entries in sl_modlist */
        !           152:        struct str_mlist * sl_modlist;  /* information array */
        !           153: };
        !           154: 
        !           155: struct str_mlist {
        !           156:        char            l_name [FMNAMESZ + 1];
        !           157: };
        !           158: 
        !           159: 
        !           160: /*
        !           161:  * ioctl (2) command values for controlling STREAMS drivers and modules
        !           162:  * directly under STREAMS, as opposed to other ioctl ()'s which are passed
        !           163:  * to drivers and modules for emulation of old-style device access.
        !           164:  */
        !           165: 
        !           166: #define        STREAM_I        ('S' << 8)
        !           167: #define        I_NREAD         (STREAM_I | 1)  /* get message length, count */
        !           168: #define        I_PUSH          (STREAM_I | 2)  /* push named module */
        !           169: #define        I_POP           (STREAM_I | 3)  /* pop topmost module */
        !           170: #define        I_LOOK          (STREAM_I | 4)  /* get topmost module name */
        !           171: #define        I_FLUSH         (STREAM_I | 5)  /* flush read/write side */
        !           172: #define        I_SRDOPT        (STREAM_I | 6)  /* set the stream head read mode */
        !           173: #define        I_GRDOPT        (STREAM_I | 7)  /* get the stream head read mode */
        !           174: #define        I_STR           (STREAM_I | 8)  /* send an ioctl () message downstream */
        !           175: #define        I_SETSIG        (STREAM_I | 9)  /* register for SIGPOLL signal */
        !           176: #define        I_GETSIG        (STREAM_I | 10) /* return registered event mask */
        !           177: #define        I_FIND          (STREAM_I | 11) /* locate named module on stream */
        !           178: #define        I_LINK          (STREAM_I | 12) /* link two streams */
        !           179: #define        I_UNLINK        (STREAM_I | 13) /* unlink two streams */
        !           180: #define        I_RECVFD        (STREAM_I | 14) /* receive file descriptor from pipe */
        !           181: #define        I_PEEK          (STREAM_I | 15) /* examine stream head data */
        !           182: #define        I_FDINSERT      (STREAM_I | 16) /* NOT SUPPORTED */
        !           183: #define        I_SENDFD        (STREAM_I | 17) /* send file descriptor to pipe */
        !           184: 
        !           185: /* Subsequent values are not covered by iBCS2 (defined for R4 STREAMS only) */
        !           186: 
        !           187: #define        I_SWROPT        (STREAM_I | 19) /* set stream write mode */
        !           188: #define        I_GWROPT        (STREAM_I | 20) /* get stream write mode */
        !           189: #define        I_LIST          (STREAM_I | 21) /* get name of all modules/drivers */
        !           190: #define        I_PLINK         (STREAM_I | 22) /* create persistent link */
        !           191: #define        I_PUNLINK       (STREAM_I | 23) /* undo persistent link */
        !           192: #define        I_SETEV         (STREAM_I | 24) /* ??? */
        !           193: #define        I_GETEV         (STREAM_I | 25) /* ??? */
        !           194: #define        I_STREV         (STREAM_I | 26) /* ??? */
        !           195: #define        I_UNSTREV       (STREAM_I | 27) /* ??? */
        !           196: #define        I_FLUSHBAND     (STREAM_I | 28) /* flush priority band */
        !           197: #define        I_CKBAND        (STREAM_I | 29) /* check for existence of priority band */
        !           198: #define        I_GETBAND       (STREAM_I | 30) /* get band of first message */
        !           199: #define        I_ATMARK        (STREAM_I | 31) /* is current message marked */
        !           200: #define        I_SETCLTIME     (STREAM_I | 32) /* set drain timeout for stream */
        !           201: #define        I_GETCLTIME     (STREAM_I | 33) /* get the curret close timeout */
        !           202: #define        I_CANPUT        (STREAM_I | 34) /* check if band is writeable */
        !           203: 
        !           204: 
        !           205: /*
        !           206:  * Events that may be requested for in I_SETSIG that can cause a SIGPOLL
        !           207:  * to be sent to a process.
        !           208:  */
        !           209: 
        !           210: #define        S_INPUT         __POLL_INPUT    /* any message other than M_PCPROTO */
        !           211: #define        S_HIPRI         __POLL_HIPRI    /* a high priority message has arrived */
        !           212: #define        S_OUTPUT        __POLL_OUTPUT   /* the write queue is no longer full */
        !           213: #define        S_MSG           __POLL_008      /* a SIGPOLL signal message has arrived */
        !           214: 
        !           215: #define        S_ERROR         __POLL_010      /* an M_ERROR message has arrived */
        !           216: #define        S_HANGUP        __POLL_020      /* an M_HANGUP message has arrived */
        !           217: #define        S_RDNORM        __POLL_RDNORM   /* a non-priority message has arrived */
        !           218: #define        S_WRNORM        __POLL_OUTPUT   /* alias for S_OUTPUT */
        !           219: #define        S_RDBAND        __POLL_RDBAND   /* a priority band message has arrived */
        !           220: #define        S_WRBAND        __POLL_WRBAND   /* a priority band is writeable */
        !           221: #define        S_BANDURG       __POLL_BANDURG  /* request SIGURG rather than SIGPOLL */
        !           222: 
        !           223: 
        !           224: /*
        !           225:  * Write mode flags that may be specified by I_SWROPT ioctl ().
        !           226:  */
        !           227: 
        !           228: #define        SNDZERO         1               /*
        !           229:                                         * Send a zero-length message when a
        !           230:                                         * write of 0 bytes occurs.
        !           231:                                         */
        !           232: #define        SNDPIPE         2               /*
        !           233:                                         * Send a zero-length message down a
        !           234:                                         * a STREAMS pipe or FIFO.
        !           235:                                         */
        !           236: 
        !           237: /*
        !           238:  * Flag values used by the I_ATMARK ioctl ()
        !           239:  */
        !           240: 
        !           241: #define        ANYMARK         0x01            /* check for a marked message */
        !           242: #define        LASTMARK        0x02            /* check for only marked message */
        !           243: 
        !           244: 
        !           245: #endif /* ! defined (__STROPTS_H__) */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.