intermezzo_upcall.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:3k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * Based on cfs.h from Coda, but revamped for increased simplicity.
  3.  * Linux modifications by Peter Braam, Aug 1996
  4.  * Rewritten for InterMezzo
  5.  */
  6. #ifndef _PRESTO_HEADER_
  7. #define _PRESTO_HEADER_
  8. /* upcall.c */
  9. #define SYNCHRONOUS 0
  10. #define ASYNCHRONOUS 1
  11. int lento_permit(int minor, int pathlen, int fsetnamelen, char *path, char *fset);
  12. int lento_opendir(int minor, int pathlen, char *path, int async);
  13. int lento_kml(int minor, unsigned int offset, unsigned int first_recno,
  14.               unsigned int length, unsigned int last_recno, int namelen,
  15.               char *fsetname);
  16. int lento_open(int minor, int pathlen, char *path);
  17. int lento_journal(int minor, char *page, int async);
  18. int lento_release_permit(int minor, int cookie);
  19. /*
  20.  * Kernel <--> Lento communications.
  21.  */
  22. /* upcalls */
  23. #define LENTO_PERMIT    1
  24. #define LENTO_JOURNAL   2
  25. #define LENTO_OPENDIR   3
  26. #define LENTO_OPEN      4
  27. #define LENTO_SIGNAL    5
  28. #define LENTO_KML       6
  29. #define LENTO_COOKIE    7
  30. /*         Lento <-> Presto  RPC arguments       */
  31. struct lento_up_hdr {
  32.         unsigned int opcode;
  33.         unsigned int unique;    /* Keep multiple outstanding msgs distinct */
  34.         u_short pid;            /* Common to all */
  35.         u_short uid;
  36. };
  37. /* This structure _must_ sit at the beginning of the buffer */
  38. struct lento_down_hdr {
  39.         unsigned int opcode;
  40.         unsigned int unique;    
  41.         unsigned int result;
  42. };
  43. /* lento_permit: */
  44. struct lento_permit_in {
  45.         struct lento_up_hdr uh;
  46.         int pathlen;
  47.         int fsetnamelen;
  48.         char path[0];
  49. };
  50. struct lento_permit_out {
  51.         struct lento_down_hdr dh;
  52. };
  53. /* lento_opendir: */
  54. struct lento_opendir_in {
  55.         struct lento_up_hdr uh;
  56.         int async;
  57.         int pathlen;
  58.         char path[0];
  59. };
  60. struct lento_opendir_out {
  61.         struct lento_down_hdr dh;
  62. };
  63. /* lento_kml: */
  64. struct lento_kml_in {
  65.         struct lento_up_hdr uh;
  66.         unsigned int offset;
  67.         unsigned int first_recno;
  68.         unsigned int length;
  69.         unsigned int last_recno;
  70.         int namelen;
  71.         char fsetname[0];
  72. };
  73. struct lento_kml_out {
  74.         struct lento_down_hdr dh;
  75. };
  76. /* lento_open: */
  77. struct lento_open_in {
  78.         struct lento_up_hdr uh;
  79.         int pathlen;
  80.         char path[0];
  81. };
  82. struct lento_open_out {
  83.     struct lento_down_hdr dh;
  84. };
  85. /* lento_response_cookie */
  86. struct lento_response_cookie_in {
  87.         struct lento_up_hdr uh;
  88.         int cookie;
  89. };
  90. struct lento_response_cookie_out {
  91.     struct lento_down_hdr dh;
  92. };
  93. struct lento_mknod {
  94.   struct lento_down_hdr dh;
  95.   int    major;
  96.   int    minor;
  97.   int    mode;
  98.   char   path[0];
  99. };
  100. /* NB: every struct below begins with an up_hdr */
  101. union up_args {
  102.     struct lento_up_hdr uh;             
  103.     struct lento_permit_in lento_permit;
  104.     struct lento_open_in lento_open;
  105.     struct lento_opendir_in lento_opendir;
  106.     struct lento_kml_in lento_kml;
  107.     struct lento_response_cookie_in lento_response_cookie;
  108. };
  109. union down_args {
  110.     struct lento_down_hdr dh;
  111.     struct lento_permit_out lento_permit;
  112.     struct lento_open_out lento_open;
  113.     struct lento_opendir_out lento_opendir;
  114.     struct lento_kml_out lento_kml;
  115.     struct lento_response_cookie_out lento_response_cookie;
  116. };    
  117. #include "intermezzo_psdev.h"
  118. int lento_upcall(int minor, int read_size, int *rep_size, 
  119.                  union up_args *buffer, int async,
  120.                  struct upc_req *rq );
  121. #endif