Annotation of coherent/d/PS2_KERNEL/io.286/msgcon.c, revision 1.1

1.1     ! root        1: /* $Header: /kernel/kersrc/io.286/msgcon.c,v 1.1 92/07/17 15:24:36 bin Exp Locker: bin $
        !             2:  *
        !             3:  *     The  information  contained herein  is a trade secret  of INETCO
        !             4:  *     Systems, and is confidential information.   It is provided under
        !             5:  *     a license agreement,  and may be copied or disclosed  only under
        !             6:  *     the terms of that agreement.   Any reproduction or disclosure of
        !             7:  *     this  material  without  the express  written  authorization  of
        !             8:  *     INETCO Systems or persuant to the license agreement is unlawful.
        !             9:  *
        !            10:  *     Copyright (c) 1987, 1985, 1984.
        !            11:  *     An unpublished work by INETCO Systems, Ltd.
        !            12:  *     All rights reserved.
        !            13:  */
        !            14: 
        !            15: /*
        !            16:  * System V Compatible Message Device Driver
        !            17:  *
        !            18:  *     This device driver provides System V compatible messaging operations.
        !            19:  *     Operations are performed through the message device (/dev/msg).
        !            20:  *     and are implemented as ioctl calls from msgctl, msgget, msgsnd, msgrcv
        !            21:  *     utilities.
        !            22:  *
        !            23:  *                     Author: Allan Cornish, INETCO Systems Ltd., Oct 1984
        !            24:  *
        !            25:  * $Log:       msgcon.c,v $
        !            26:  * Revision 1.1  92/07/17  15:24:36  bin
        !            27:  * Initial revision
        !            28:  * 
        !            29:  * Revision 2.1        88/09/03  13:09:32      src
        !            30:  * *** empty log message ***
        !            31:  * 
        !            32:  * Revision 1.1        88/03/24  17:05:49      src
        !            33:  * Initial revision
        !            34:  * 
        !            35:  * 87/03/02    Allan Cornish           /usr/src/sys/i8086/drv/msgcon.c
        !            36:  * Msgioctl() now supports long key [was short] on MSGGET operations.
        !            37:  * This allows compatability with System V.
        !            38:  *
        !            39:  * 85/08/06    Allan Cornish
        !            40:  * Msg.c split into configuration (msgcon.c) and implementation (msg.c).
        !            41:  *
        !            42:  * 85/07/03    Allan Cornish
        !            43:  * Simplified msgopen by ignoring minor device, which previously had to be 0.
        !            44:  *
        !            45:  * 84/01/30    Allan Cornish
        !            46:  * Initial revision.
        !            47:  */
        !            48: 
        !            49: #include <coherent.h>
        !            50: #include <types.h>
        !            51: #include <errno.h>
        !            52: #include <con.h>
        !            53: #include <msg.h>
        !            54: 
        !            55: /*
        !            56:  * Functions.
        !            57:  */
        !            58: 
        !            59: int msgopen();
        !            60: int msgioctl();
        !            61: int nulldev();
        !            62: int nonedev();
        !            63: 
        !            64: /*
        !            65:  * Device Configuration.
        !            66:  */
        !            67: 
        !            68: CON msgcon = {
        !            69:        DFCHR,                  /* Flags                        */
        !            70:        25,                     /* Major Index                  */
        !            71:        msgopen,                /* Open                         */
        !            72:        nulldev,                /* Close                        */
        !            73:        nonedev,                /* Block                        */
        !            74:        nonedev,                /* Read                         */
        !            75:        nonedev,                /* Write                        */
        !            76:        msgioctl,               /* Ioctl                        */
        !            77:        nulldev,                /* Power fail                   */
        !            78:        nulldev,                /* Timeout                      */
        !            79:        nulldev,                /* Load                         */
        !            80:        nulldev                 /* Unload                       */
        !            81: };
        !            82: 
        !            83: /*
        !            84:  * Message Device Open.
        !            85:  */
        !            86: 
        !            87: static
        !            88: msgopen( dev, mode )
        !            89: 
        !            90: dev_t dev;
        !            91: int mode;
        !            92: 
        !            93: {
        !            94:        extern struct msqid_ds * msqs; /* Pointer to array of message queues */
        !            95: 
        !            96:        if ( ! msqs )                   /* message queues not initialized */
        !            97:                msginit();
        !            98: 
        !            99:        if ( ! msqs )                   /* no message queues */
        !           100:                u.u_error = ENODEV;
        !           101: }
        !           102: 
        !           103: /*
        !           104:  * Message Device Ioctl.
        !           105:  */
        !           106: 
        !           107: static
        !           108: msgioctl( dev, com, vec )
        !           109: 
        !           110: dev_t dev;
        !           111: int com;
        !           112: register int *vec;
        !           113: 
        !           114: {
        !           115:        switch ( com ) {
        !           116: 
        !           117:        case MSGCTL:
        !           118:                putuwd( vec+0,
        !           119:                        umsgctl(getuwd( vec+1 ),
        !           120:                                getuwd( vec+2 ),
        !           121:                                getuwd( vec+3 ) ));
        !           122:                return;
        !           123: 
        !           124:        case MSGGET:
        !           125:                putuwd( vec+0,
        !           126:                        umsgget(getuwd( vec+1 ),
        !           127:                                getuwd( vec+2 ),
        !           128:                                getuwd( vec+3 ) ));
        !           129:                return;
        !           130: 
        !           131:        case MSGSND:
        !           132:                putuwd( vec+0,
        !           133:                        umsgsnd(getuwd( vec+1 ),
        !           134:                                getuwd( vec+2 ),
        !           135:                                getuwd( vec+3 ),
        !           136:                                getuwd( vec+4 ) ));
        !           137:                return;
        !           138: 
        !           139:        case MSGRCV:
        !           140:                putuwd( vec+0,
        !           141:                        umsgrcv(getuwd( vec+1 ),
        !           142:                                getuwd( vec+2 ),
        !           143:                                getuwd( vec+3 ),
        !           144:                                getuwd( vec+4 ),
        !           145:                                getuwd( vec+5 ),
        !           146:                                getuwd( vec+6 ) ));
        !           147:                return;
        !           148: 
        !           149:        default:
        !           150:                u.u_error = EINVAL;
        !           151:                return;
        !           152:        }
        !           153: }

unix.superglobalmegacorp.com

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