| /* |
| * Based on cfs.h from Coda, but revamped for increased simplicity. |
| * Linux modifications by Peter Braam, Aug 1996 |
| * Rewritten for InterMezzo |
| */ |
| |
| #ifndef _PRESTO_HEADER_ |
| #define _PRESTO_HEADER_ |
| |
| |
| /* upcall.c */ |
| #define SYNCHRONOUS 0 |
| #define ASYNCHRONOUS 1 |
| |
| int lento_permit(int minor, int pathlen, int fsetnamelen, char *path, char *fset); |
| int lento_opendir(int minor, int pathlen, char *path, int async); |
| int lento_kml(int minor, unsigned int offset, unsigned int first_recno, |
| unsigned int length, unsigned int last_recno, int namelen, |
| char *fsetname); |
| int lento_open(int minor, int pathlen, char *path); |
| int lento_journal(int minor, char *page, int async); |
| int lento_release_permit(int minor, int cookie); |
| |
| /* |
| * Kernel <--> Lento communications. |
| */ |
| /* upcalls */ |
| #define LENTO_PERMIT 1 |
| #define LENTO_JOURNAL 2 |
| #define LENTO_OPENDIR 3 |
| #define LENTO_OPEN 4 |
| #define LENTO_SIGNAL 5 |
| #define LENTO_KML 6 |
| #define LENTO_COOKIE 7 |
| |
| /* Lento <-> Presto RPC arguments */ |
| struct lento_up_hdr { |
| unsigned int opcode; |
| unsigned int unique; /* Keep multiple outstanding msgs distinct */ |
| u_short pid; /* Common to all */ |
| u_short uid; |
| }; |
| |
| /* This structure _must_ sit at the beginning of the buffer */ |
| struct lento_down_hdr { |
| unsigned int opcode; |
| unsigned int unique; |
| unsigned int result; |
| }; |
| |
| /* lento_permit: */ |
| struct lento_permit_in { |
| struct lento_up_hdr uh; |
| int pathlen; |
| int fsetnamelen; |
| char path[0]; |
| }; |
| struct lento_permit_out { |
| struct lento_down_hdr dh; |
| }; |
| |
| |
| /* lento_opendir: */ |
| struct lento_opendir_in { |
| struct lento_up_hdr uh; |
| int async; |
| int pathlen; |
| char path[0]; |
| }; |
| struct lento_opendir_out { |
| struct lento_down_hdr dh; |
| }; |
| |
| |
| /* lento_kml: */ |
| struct lento_kml_in { |
| struct lento_up_hdr uh; |
| unsigned int offset; |
| unsigned int first_recno; |
| unsigned int length; |
| unsigned int last_recno; |
| int namelen; |
| char fsetname[0]; |
| }; |
| |
| struct lento_kml_out { |
| struct lento_down_hdr dh; |
| }; |
| |
| |
| /* lento_open: */ |
| struct lento_open_in { |
| struct lento_up_hdr uh; |
| int pathlen; |
| char path[0]; |
| }; |
| struct lento_open_out { |
| struct lento_down_hdr dh; |
| }; |
| |
| /* lento_response_cookie */ |
| struct lento_response_cookie_in { |
| struct lento_up_hdr uh; |
| int cookie; |
| }; |
| |
| struct lento_response_cookie_out { |
| struct lento_down_hdr dh; |
| }; |
| |
| |
| struct lento_mknod { |
| struct lento_down_hdr dh; |
| int major; |
| int minor; |
| int mode; |
| char path[0]; |
| }; |
| |
| |
| /* NB: every struct below begins with an up_hdr */ |
| union up_args { |
| struct lento_up_hdr uh; |
| struct lento_permit_in lento_permit; |
| struct lento_open_in lento_open; |
| struct lento_opendir_in lento_opendir; |
| struct lento_kml_in lento_kml; |
| struct lento_response_cookie_in lento_response_cookie; |
| }; |
| |
| union down_args { |
| struct lento_down_hdr dh; |
| struct lento_permit_out lento_permit; |
| struct lento_open_out lento_open; |
| struct lento_opendir_out lento_opendir; |
| struct lento_kml_out lento_kml; |
| struct lento_response_cookie_out lento_response_cookie; |
| }; |
| |
| #include "intermezzo_psdev.h" |
| |
| int lento_upcall(int minor, int read_size, int *rep_size, |
| union up_args *buffer, int async, |
| struct upc_req *rq ); |
| #endif |
| |