home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0010 - 0019 / ibm0010-0019 / ibm0010.tar / ibm0010 / UNIX3862.ZIP / U386-06.ZIP / U386-6.TD0 / usr / include / sys / message.h < prev    next >
Encoding:
C/C++ Source or Header  |  1988-06-26  |  5.7 KB  |  205 lines

  1. /*    Copyright (c) 1984, 1986, 1987, 1988 AT&T    */
  2. /*      All Rights Reserved      */
  3.  
  4. /*    THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T    */
  5. /*    The copyright notice above does not evidence any       */
  6. /*    actual or intended publication of such source code.    */
  7.  
  8. /*    Copyright (c) 1987, 1988 Microsoft Corporation    */
  9. /*      All Rights Reserved    */
  10.  
  11. /*    This Module contains Proprietary Information of Microsoft  */
  12. /*    Corporation and should be treated as Confidential.       */
  13.  
  14. #ident    "@(#)head.sys:message.h    1.3.1.2"
  15.  
  16. /*
  17.  *    network message definitions
  18.  */
  19.  
  20. #define    DATASIZE    1024        /* just for testing        */
  21. #define MAXSNAME    20        /* mach name size in mnt_data    */
  22. #define    MAXSERVERS    25        /* maximum number of servers    */
  23. #define ANY        (-1)        /* waitfor a msg on ANY queue    */
  24. #define CFRD        0        /* Chow Fun receive descriptor    */
  25. #define SIGRDX        1        /* Special signal receive descriptor*/
  26. #define RECOVER_RD    2        /* Recovery receive descriptor */
  27.  
  28. #define REQ_MSG        1        /* request message type */
  29. #define RESP_MSG    2        /* response message type */
  30. #define NACK_MSG    3        /* RFS flow control nack message type */
  31.  
  32. /* opcodes for remote service */
  33. #define    DUACCESS    33
  34. #define    DUSYSACCT    51
  35. #define    DUCHDIR        12
  36. #define    DUCHMOD        15
  37. #define    DUCHOWN        16
  38. #define DUCHROOT    61
  39. #define    DUCLOSE        6
  40. #define    DUCREAT        8
  41. #define    DUEXEC        11
  42. #define DUEXECE        59
  43. #define DUFCNTL        62
  44. #define DUFSTAT        28
  45. #define DUFSTATFS    38
  46. #define    DUIOCTL        54
  47. #define    DULINK        9
  48. #define    DUMKNOD        14
  49. #define    DUMOUNT        21
  50. #define    DUOPEN        5
  51. #define    DUREAD        3
  52. #define    DUSEEK        19
  53. #define    DUSTAT        18
  54. #define DUSTATFS    35
  55. #define    DUUMOUNT    22
  56. #define    DUUNLINK    10
  57. #define    DUUTIME        30
  58. #define DUUTSSYS      57
  59. #define    DUWRITE        4
  60. #define DUGETDENTS    81
  61. #define DUMKDIR        80
  62. #define DURMDIR        79
  63. #define    DUADVERTISE    70
  64. #define    DUUNADVERTISE    71
  65. #define    DURMOUNT    72    /* nami half of rmount */
  66. #define DURUMOUNT    73
  67. #define    DUSRMOUNT    97    /* msg from ns to server */
  68. #define    DUSRUMOUNT    98
  69. #define DUCOPYIN    106
  70. #define DUCOPYOUT    107
  71. #define DULINK1        109    /* second half of link  */
  72. #define    DUCOREDUMP    111
  73. #define DUWRITEI    112
  74. #define DUREADI        113
  75. #define DULBMOUNT    115    /* lbin mount (second namei in smount)    */
  76. #define DURSIGNAL    119
  77. #define DUGDPACK    120
  78. #define DUGDPNACK    121
  79. #define DUSYNCTIME    122    /* date synchronization */
  80. #define DUDOTDOT    124    /* server sends this back to client */
  81. #define DUFUMOUNT    126    /* forced unmount */
  82. #define DUSENDUMSG    127    /* send message to remote user-level */
  83. #define DUGETUMSG    128    /* get message from remote user-level */
  84. #define DUWAKEUP    129    /* copyout and wakeup (test only) */
  85. #define DUFWFD        130    
  86. #define DUIPUT        131
  87. #define DUIUPDATE    132
  88. #define DUUPDATE    133
  89. #define DUCACHEDIS    134    /* disable cache */
  90.  
  91.  
  92. /* to guarantee allignment for response and request structures, we
  93.  * create this 
  94.  */
  95.  
  96. struct common {
  97.     long    opcode;            /* what to do */
  98.     long    sysid;            /* where we came from */
  99.     long    type;            /* message type - request/response */
  100.     long    pid;            /* client pid */
  101.     long    uid;            /* client uid */
  102.     long    gid;            /* client gid */
  103.     long    ftype;
  104.     long    nlink;
  105.     long    size;
  106.     long    mntindex;        /* mount index */
  107. };
  108.  
  109. struct    request    {
  110.     struct    common    rq;
  111.     long    rq_rrdir;
  112.     daddr_t    rq_ulimit;
  113.     long    rq_arg[4];
  114.     long    rq_tmp[4];        /* for future use */
  115.     char    rq_data[DATASIZE];
  116. };
  117.  
  118. #define    rq_opcode    rq.opcode
  119. #define    rq_sysid    rq.sysid
  120. #define    rq_type        rq.type
  121. #define    rq_pid        rq.pid
  122. #define    rq_uid        rq.uid
  123. #define    rq_gid        rq.gid
  124. #define    rq_mntindx    rq.mntindex
  125.  
  126. #define    rq_fmode    rq_arg[3]        /* user mode */
  127. #define    rq_mode        rq_arg[3]        /* file.h modes */
  128. #define    rq_newuid    rq_arg[0]
  129. #define    rq_newgid    rq_arg[1]
  130. #define    rq_bufptr    rq_arg[0]
  131. #define rq_len        rq_arg[1]
  132. #define rq_fstyp    rq_arg[2]
  133. #define    rq_cmd        rq_arg[0]
  134. #define    rq_ioarg    rq_arg[1]
  135. #define    rq_dev        rq_arg[1]
  136. #define    rq_crtmode    rq_arg[1]
  137. #define    rq_count    rq_arg[1]
  138. #define    rq_offset    rq_arg[0]
  139. #define    rq_whence    rq_arg[1]
  140. #define    rq_atime    rq_arg[0]
  141. #define    rq_mtime    rq_arg[1]
  142. #define rq_fcntl    rq_arg[1]
  143. #define    rq_sofar    rq_arg[2]    /* for copyin, see os/rmove.c  */
  144. #define rq_prewrite    rq_tmp[0]    /* for copyin, see os/rmove.c  */
  145. #define rq_base        rq_arg[2]    /* for readi/writei */
  146. #define rq_newmntindx    rq_arg[0]    /* new mount index for lbin mount */
  147. #define    rq_cmask    rq_arg[2]
  148. #define    rq_flag        rq_arg[0]    /* for rmount readwrite flag    */
  149. #define    rq_srmntindx    rq_arg[0]    /* for forced unmount */
  150. #define rq_fflag    rq_arg[3]
  151. #define rq_link        rq_arg[0]
  152. #define rq_foffset      rq_arg[2]
  153. #define rq_synctime    rq_arg[2]
  154. #define rq_fhandle    rq_arg[0]    /* file handle for client caching */
  155. #define    rq_flags    rq_tmp[1]    /* request flags (see below)*/
  156. #define rq_u_renv    rq_tmp[2]    /* for XENIX x.out support */
  157.  
  158. /* request flags (rq_flags) */
  159. #define    RQ_MNDLCK    0x1
  160.  
  161. struct    response    {
  162.     struct common    rp;
  163.     long        rp_errno;
  164.     long        rp_bp;
  165.     long        rp_rval;    /* general purpose integer     */
  166.     long        rp_arg[4];
  167.     long        rp_tmp[3];    /* for future use */
  168.     char        rp_data[DATASIZE];
  169. };
  170.  
  171. #define    rp_opcode    rp.opcode
  172. #define    rp_sysid    rp.sysid
  173. #define    rp_type        rp.type
  174. #define    rp_pid        rp.pid
  175. #define    rp_uid        rp.uid
  176. #define    rp_gid        rp.gid
  177. #define    rp_mntindx    rp.mntindex
  178. #define rp_size        rp.size
  179. #define rp_nlink    rp.nlink
  180. #define rp_ftype    rp.ftype
  181.  
  182. #define    rp_count    rp_arg[0]
  183. #define rp_isize    rp_arg[1]
  184. #define    rp_bufptr    rp_arg[2]
  185. #define    rp_copysync    rp_arg[1]
  186. #define rp_mode        rp_arg[2]
  187. #define rp_sig        rp_arg[3]
  188. #define rp_subyte    rp_tmp[0]
  189. #define rp_offset       rp_tmp[1]
  190. #define rp_synctime    rp_arg[2]
  191. #define rp_fhandle    rp_tmp[2]    /* file handle for client caching */
  192. #define rp_cache    rp_tmp[1]    /* cache flag for client caching */
  193. #define rp_u_rval1    rp_tmp[1]    /* u_rval1 returned for XENIX rdchk() */
  194.  
  195. #define    RP_MNDLCK    0x8000        /* mandatory lock set (included with
  196.                         client cache flags in rp_cache*/
  197. /* mntdata is used to store the uname and resname in rq_data
  198.  * Later, it may also store domain name.
  199.  */
  200.  
  201. struct mntdata {
  202.     char    md_uname[MAXSNAME];
  203.     char    md_resname[DATASIZE-MAXSNAME];
  204. };
  205.