Annotation of researchv10no/ipc/bin/OLDdkcc/remfio.h, revision 1.1

1.1     ! root        1: /*
        !             2:  *     Messages exchanged between this program and system-V rexec'd one
        !             3:  *
        !             4:  * The general form of a message is:
        !             5:  *     a fixed size control portion
        !             6:  *     a variable size data portion
        !             7:  * The first two bytes of the control message give a length of the
        !             8:  * variable portion. First byte is low 8 bits, second byte high bits.
        !             9:  *
        !            10:  */
        !            11: 
        !            12: struct rem_req {
        !            13:        short   r_length ;              /* length of variable data portion */
        !            14:        char    r_type ;                /* message type, see defines below */
        !            15:        char    r_seq ;                 /* message sequence number */
        !            16:        short   r_uid ;                 /* effective uid of sender */
        !            17:        short   r_gid ;                 /* groupid of sender */
        !            18:        short   r_file ;                /* primary file to be referenced */
        !            19:                                        /* (either a directory or regular,
        !            20:                                         *  depending of type of request) */
        !            21:        short   r_mode ;                /* file open mode, or new mode */
        !            22: 
        !            23:        union {
        !            24:           struct {             /* ROPEN type message */
        !            25:                short   r_arg ;         /* creation mode */
        !            26:                short   r_flag ;        /* set according to defines below */
        !            27:                        } ropen ;
        !            28:           struct {             /* RREAD type message */
        !            29:                short   r_X1 ;          /* filler */
        !            30:                unsigned short  r_count ;/* number of bytes to read */
        !            31:                long    r_offset ;      /* offset in file to start */
        !            32:                long    r_lastr ;       /* last logical block read */
        !            33:                        } rread ;
        !            34:           struct {             /* RWRITE type message */
        !            35:                short   r_X1 ;          /* filler */
        !            36:                unsigned short  r_count ;/* number of bytes to transfer */
        !            37:                                        /* (NOTE - better be same as r_length) */
        !            38:                long    r_offset ;      /* offset in file to start */
        !            39:                long    r_limit ;       /* max block number allowed */
        !            40:                        } rwrite ;
        !            41:           struct {             /* RUTIME type message */
        !            42:                short   r_tod ;         /*  1 = use system clock */
        !            43:                short   r_X1 ;
        !            44:                long    r_atime ;       /* access time */
        !            45:                long    r_mtime ;       /* modification time */
        !            46:                        } rutime ;
        !            47:           struct {             /* RCHOWN type message */
        !            48:                short   r_nuid ;        /* new user id */
        !            49:                short   r_ngid ;        /* new group id */
        !            50:                        } rchown ;
        !            51:           struct {             /* RMKNOD type message */
        !            52:                short   r_dev ;         /* major/minor number */
        !            53:                        } rmknod ;
        !            54:           struct {             /* RLINK type message */
        !            55:                short   r_dir1 ;        /* base of search for second path */
        !            56:                short   r_nlen1 ;       /* length of second pathname */
        !            57:                                        /* NOTE - first is r_length-r_nlen1 */
        !            58:                        } rlink ;
        !            59:           struct {             /* RIOCTL type message */
        !            60:                short   r_cmd ;         /* command type to driver */
        !            61:                short   r_arg ;         /* argument/user memory address */
        !            62:                        } rioctl ;
        !            63:        } r_var ;
        !            64: } ;
        !            65: 
        !            66: 
        !            67: /*
        !            68:  *     Messages originated by us
        !            69:  *
        !            70:  * General format is identical to those to us
        !            71:  *
        !            72:  */
        !            73: 
        !            74: struct rem_reply {
        !            75:        short   s_length ;              /* length of variable data following */
        !            76:        char    s_type ;                /* type of message */
        !            77:        char    s_error ;               /* returned error code */
        !            78:                        /* from here on, these fields may be UNION'ed
        !            79:                         * because no single message uses all of them.
        !            80:                         * However, the standard control message length
        !            81:                         * is generous enough that it doesn't matter
        !            82:                         */
        !            83:        short   s_file ;                /* returned file index */
        !            84:        short   s_uid ;                 /* owner of opened file */  
        !            85:        short   s_gid ;                 /* groupid of opened file */
        !            86:        short   s_mode ;                /* mode of opened file */
        !            87:        unsigned short  s_resid ;       /* residual data remaining on RREAD */
        !            88:        unsigned short  s_count ;       /* data written on RWRITE */
        !            89:        long    s_lastr ;               /* last logical block written RWRITE */
        !            90:        long    s_size ;                /* file size RSEEK */
        !            91: } ;
        !            92: 
        !            93: /*
        !            94:  *     Message types
        !            95:  *     originated by rexec'd program
        !            96:  *     (requests to us to do some I/O for it)
        !            97:  */
        !            98: #define        RMOUNT  'a'
        !            99: #define        RCOPEN  'b'
        !           100: #define        RREAD   'c'
        !           101: #define        RWRITE  'd'
        !           102: #define        RCHDIR  'g'
        !           103: #define        RSTAT   'h'
        !           104: #define        RFSTAT  'i'
        !           105: #define        RUTIME  'j'
        !           106: #define        RCHMOD  'k'
        !           107: #define        RCHOWN  'l'
        !           108: #define        RMKNOD  'm'
        !           109: #define        RACCESS 'n'
        !           110: #define        RLINK   'o'
        !           111: #define        RUNLINK 'p'
        !           112: #define        RUMOUNT 'q'
        !           113: #define        RSEEK   't'
        !           114: #define        RCANCEL 'u'
        !           115: #define        RSYNC   'v'
        !           116: #define        RIOCTL  'y'
        !           117: #define        RCLOSEF 'z'
        !           118: 
        !           119: /*
        !           120:  *             Originated by us
        !           121:  */
        !           122: #define        RSIGNAL 'A'
        !           123: 
        !           124: 
        !           125: /*
        !           126:  *     Misc other defines
        !           127:  */
        !           128: 
        !           129: /* 
        !           130:  *     bits in r_var.ropen.r_flag
        !           131:  */
        !           132: #define        RREG    02              /* must be regular file */
        !           133: #define        REXEC   04              /* open for execution */
        !           134: 
        !           135: /*
        !           136:  *     structure-to-string and string-to-structure formats
        !           137:  */
        !           138: #define        F_REMREQ        "sbbssssssll"
        !           139: 
        !           140: #define        F_REMREPLY      "sbbssssssll"
        !           141: 
        !           142: /*
        !           143:  *     size of string passed as control portion
        !           144:  */
        !           145: #define        REMSIZE         24
        !           146: 

unix.superglobalmegacorp.com

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