rpcGbl.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:5k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* rpcGbl.h - header file for rpc globals */
  2. /* Copyright 1984-1992 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01p,16nov01,spm  fixed modification history: version 01o created
  7. 01o,25oct01,rae  added build macro to support different Tornado versions
  8. 01n,16nov98,mak  changes due to moving pRPCModList from the TCB to the LCB
  9. 01m,22sep92,rrr  added support for c++
  10. 01l,26may92,rrr  the tree shuffle
  11.   -changed includes to have absolute path from h/
  12. 01k,04oct91,rrr  passed through the ansification filter
  13.   -changed includes to have absolute path from h/
  14.   -changed copyright notice
  15. 01j,01may91,elh  added references to filename<Include>.
  16. 01i,05oct90,shl  added copyright notice.
  17.                  made #endif ANSI style.
  18. 01h,02oct90,hjb  defined RPC_ERRBUF_SIZE, added clnt_rawExit, svc_rawExit
  19.    and errBuf to struct rpcModList.
  20. 01g,15may90,dnw  moved rpc static structures from various rpc modules to
  21.    the structure defined here.  This simplifies the
  22.    initializations and requires fewer mallocs.
  23.  renamed the structure type from MODULE_LIST to RPC_STATICS
  24.  renamed the macro for pointer in the tcb from taskModuleList to
  25.    taskRpcStatics
  26.  added rpc_createerr macro
  27. 01f,15apr90,jcf  made taskModuleList a macro thru taskIdCurrent.
  28. 01e,30oct89,hjb  added bindresvport in MODULE_LIST
  29. 01d,20may88,ak   made 01c version be rcs'd as part of yuba migration
  30. 01c,19apr88,llk  added nfsClientCache to MODULE_LIST.
  31. 01b,05nov87,dnw  moved definition of taskModuleList to rpcLib.c.
  32. */
  33. #ifndef __INCrpcGblh
  34. #define __INCrpcGblh
  35. #ifdef __cplusplus
  36. extern "C" {
  37. #endif
  38. #include "rpc/xdr.h"
  39. #include "netinet/in.h"
  40. #include "rpc/auth.h"
  41. #include "rpc/clnt.h"
  42. #include "rpc/svc.h"
  43. #include "taskLib.h"
  44. #define MAX_MARSHEL_SIZE 20
  45. #define RPC_ERRBUF_SIZE  256
  46. /* statics from various rpc modules -
  47.  * are defined in this structure which is dynamically allocated and
  48.  * pointed to by a pointer in the tcb
  49.  */
  50. typedef struct rpcModList
  51.     {
  52.     /* statics from auth_none.c */
  53.     struct auth_none
  54. {
  55. AUTH no_client;
  56. char marshalled_client[MAX_MARSHEL_SIZE];
  57. u_int mcnt;
  58. } auth_none;
  59.     /* statics from clnt_simple.c */
  60.     struct clnt_simple
  61. {
  62. CLIENT *client;
  63. int socket;
  64. int oldprognum;
  65. int oldversnum;
  66. int valid;
  67. char oldhost [50];
  68. } clnt_simple;
  69.     /* statics from svc.c */
  70.     struct svc
  71. {
  72. SVCXPRT *xports[FD_SETSIZE];
  73. fd_set svc_fdset;
  74. /*
  75.  * The services list
  76.  * Each entry represents a set of procedures (an rpc program).
  77.  * The dispatch routine takes request structs and runs the
  78.  * apropriate procedure.
  79.  */
  80. struct svc_callout
  81.     {
  82.     struct svc_callout *sc_next;
  83.     u_long     sc_prog;
  84.     u_long     sc_vers;
  85.     void     (*sc_dispatch)();
  86.     } *svc_head;
  87. } svc;
  88.     /* statics from svc_simple.c */
  89.     struct svc_simple
  90. {
  91. struct proglst
  92.     {
  93.     char *(*p_progname)();
  94.     int  p_prognum;
  95.     int  p_procnum;
  96.     xdrproc_t p_inproc, p_outproc;
  97.     struct proglst *p_nxt;
  98.     } *proglst;
  99. SVCXPRT *transp;
  100. int madetransp;
  101. struct proglst *pl;
  102. } svc_simple;
  103.     /* statics for nfs are defined in nfsLib and are allocated separately,
  104.      * but referenced by this pointer
  105.      */
  106.     struct moduleStatics *nfsClientCache;
  107.     /* statics for clnt_raw and svc_raw are in a structures in those modules,
  108.      * since those modules are not used very often.
  109.      * a pointer to the buffer that is used in common is defined here.
  110.      */
  111.     struct moduleStatics *clnt_raw;
  112.     struct moduleStatics *svc_raw;
  113.     void (*clnt_rawExit)();
  114.     void (*svc_rawExit)();
  115.     char *_raw_buf; /* buffer for raw clnt/svc */
  116.     char *errBuf; /* buffer for err msg's */
  117.     /* A handle on why an rpc creation routine failed (returned NULL.) */
  118.     struct rpc_createerr task_rpc_createerr;
  119.     } RPC_STATICS;
  120. /* macro for the pointer to the current task's rpc statics */
  121. #ifndef _WRS_VXWORKS_5_X
  122. #define taskRpcStatics (windLcbCurrent->pRPCModList)
  123. #else
  124. #define taskRpcStatics (taskIdCurrent->pRPCModList)
  125. #endif /* _WRS_VXWORKS_5_X */
  126. /* macro for the current task's rpc_createerr structure */
  127. #define rpc_createerr (taskRpcStatics->task_rpc_createerr)
  128. #if defined(__STDC__) || defined(__cplusplus)
  129. extern void clnt_genericInclude (void);
  130. extern void clnt_rawInclude (void);
  131. extern void clnt_simpleInclude (void);
  132. extern void pmap_getmapsInclude (void);
  133. extern void svc_rawInclude (void);
  134. extern void svc_simpleInclude (void);
  135. extern void xdr_floatInclude (void);
  136. #else
  137. extern void clnt_genericInclude ();
  138. extern void clnt_rawInclude ();
  139. extern void clnt_simpleInclude ();
  140. extern void pmap_getmapsInclude ();
  141. extern void svc_rawInclude ();
  142. extern void svc_simpleInclude ();
  143. extern void xdr_floatInclude ();
  144. #endif /* __STDC__ */
  145. #ifdef __cplusplus
  146. }
  147. #endif
  148. #endif /* __INCrpcGblh */