XINU
rfilesys.h
Go to the documentation of this file.
1 /* rfilesys.h - Definitions for remote file system pseudo-devices */
2 
3 #ifndef Nrfl
4 #define Nrfl 10
5 #endif
6 
7 /* Control block for a remote file pseudo-device */
8 
9 #define RF_NAMLEN 128 /* Maximum length of file name */
10 #define RF_DATALEN 1024 /* Maximum data in read or write*/
11 #define RF_MODE_R F_MODE_R /* Bit to grant read access */
12 #define RF_MODE_W F_MODE_W /* Bit to grant write access */
13 #define RF_MODE_RW F_MODE_RW /* Mask for read and write bits */
14 #define RF_MODE_N F_MODE_N /* Bit for "new" mode */
15 #define RF_MODE_O F_MODE_O /* Bit for "old" mode */
16 #define RF_MODE_NO F_MODE_NO /* Mask for "n" and "o" bits */
17 
18 /* Global data for the remote server */
19 
20 #ifndef RF_SERVER_IP
21 #define RF_SERVER_IP "128.10.3.51"
22 #endif
23 
24 #ifndef RF_SERVER_PORT
25 #define RF_SERVER_PORT 33123
26 #endif
27 
28 #ifndef RF_LOC_PORT
29 #define RF_LOC_PORT 33123
30 #endif
31 
32 struct rfdata {
33  int32 rf_seq; /* Next sequence number to use */
34  uint32 rf_ser_ip; /* Server IP address */
35  uint16 rf_ser_port; /* Server UDP port */
36  uint16 rf_loc_port; /* Local (client) UPD port */
37  int32 rf_udp_slot; /* UDP slot to use */
38  sid32 rf_mutex; /* Mutual exclusion for access */
39  bool8 rf_registered; /* Has UDP port been registered?*/
40 };
41 
42 extern struct rfdata Rf_data;
43 
44 /* Definition of the control block for a remote file pseudo-device */
45 
46 #define RF_FREE 0 /* Entry is currently unused */
47 #define RF_USED 1 /* Entry is currently in use */
48 
49 struct rflcblk {
50  int32 rfstate; /* Entry is free or used */
51  int32 rfdev; /* Device number of this dev. */
52  char rfname[RF_NAMLEN]; /* Name of the file */
53  uint32 rfpos; /* Current file position */
54  uint32 rfmode; /* Mode: read access, write */
55  /* access or both */
56 };
57 
58 extern struct rflcblk rfltab[]; /* Remote file control blocks */
59 
60 /* Definitions of parameters used when accessing a remote server */
61 
62 #define RF_RETRIES 3 /* Time to retry sending a msg */
63 #define RF_TIMEOUT 3000 /* Wait one second for a reply */
64 
65 /* Control functions for a remote file pseudo device */
66 
67 #define RFS_CTL_DEL F_CTL_DEL /* Delete a file */
68 #define RFS_CTL_TRUNC F_CTL_TRUNC /* Truncate a file */
69 #define RFS_CTL_MKDIR F_CTL_MKDIR /* Make a directory */
70 #define RFS_CTL_RMDIR F_CTL_RMDIR /* Remove a directory */
71 #define RFS_CTL_SIZE F_CTL_SIZE /* Obtain the size of a file */
72 
73 /************************************************************************/
74 /* */
75 /* Definition of messages exchanged with the remote server */
76 /* */
77 /************************************************************************/
78 
79 /* Values for the type field in messages */
80 
81 #define RF_MSG_RESPONSE 0x0100 /* Bit that indicates response */
82 
83 #define RF_MSG_RREQ 0x0001 /* Read Request and response */
84 #define RF_MSG_RRES (RF_MSG_RREQ | RF_MSG_RESPONSE)
85 
86 #define RF_MSG_WREQ 0x0002 /* Write Request and response */
87 #define RF_MSG_WRES (RF_MSG_WREQ | RF_MSG_RESPONSE)
88 
89 #define RF_MSG_OREQ 0x0003 /* Open request and response */
90 #define RF_MSG_ORES (RF_MSG_OREQ | RF_MSG_RESPONSE)
91 
92 #define RF_MSG_DREQ 0x0004 /* Delete request and response */
93 #define RF_MSG_DRES (RF_MSG_DREQ | RF_MSG_RESPONSE)
94 
95 #define RF_MSG_TREQ 0x0005 /* Truncate request & response */
96 #define RF_MSG_TRES (RF_MSG_TREQ | RF_MSG_RESPONSE)
97 
98 #define RF_MSG_SREQ 0x0006 /* Size request and response */
99 #define RF_MSG_SRES (RF_MSG_SREQ | RF_MSG_RESPONSE)
100 
101 #define RF_MSG_MREQ 0x0007 /* Mkdir request and response */
102 #define RF_MSG_MRES (RF_MSG_MREQ | RF_MSG_RESPONSE)
103 
104 #define RF_MSG_XREQ 0x0008 /* Rmdir request and response */
105 #define RF_MSG_XRES (RF_MSG_XREQ | RF_MSG_RESPONSE)
106 
107 #define RF_MIN_REQ RF_MSG_RREQ /* Minimum request type */
108 #define RF_MAX_REQ RF_MSG_XREQ /* Maximum request type */
109 
110 /* Message header fields present in each message */
111 
112 #define RF_MSG_HDR /* Common message fields */\
113  uint16 rf_type; /* Message type */\
114  uint16 rf_status; /* 0 in req, status in response */\
115  uint32 rf_seq; /* Message sequence number */\
116  char rf_name[RF_NAMLEN]; /* Null-terminated file name */
117 
118 /* The standard header present in all messages with no extra fields */
119 
120 /************************************************************************/
121 /* */
122 /* Header */
123 /* */
124 /************************************************************************/
125 
126 #pragma pack(2)
127 struct rf_msg_hdr { /* Header fields present in each*/
128  RF_MSG_HDR /* remote file system message */
129 };
130 #pragma pack()
131 
132 /************************************************************************/
133 /* */
134 /* Read */
135 /* */
136 /************************************************************************/
137 
138 #pragma pack(2)
139 struct rf_msg_rreq { /* Remote file read request */
140  RF_MSG_HDR /* Header fields */
141  uint32 rf_pos; /* Position in file to read */
142  uint32 rf_len; /* Number of bytes to read */
143  /* (between 1 and 1024) */
144 };
145 #pragma pack()
146 
147 #pragma pack(2)
148 struct rf_msg_rres { /* Remote file read reply */
149  RF_MSG_HDR /* Header fields */
150  uint32 rf_pos; /* Position in file */
151  uint32 rf_len; /* Number of bytes that follow */
152  /* (0 for EOF) */
153  char rf_data[RF_DATALEN]; /* Array containing data from */
154  /* the file */
155 };
156 #pragma pack()
157 
158 /************************************************************************/
159 /* */
160 /* Write */
161 /* */
162 /************************************************************************/
163 
164 #pragma pack(2)
165 struct rf_msg_wreq { /* Remote file write request */
166  RF_MSG_HDR /* Header fields */
167  uint32 rf_pos; /* Position in file */
168  uint32 rf_len; /* Number of valid bytes in */
169  /* array that follows */
170  char rf_data[RF_DATALEN]; /* Array containing data to be */
171  /* written to the file */
172 };
173 #pragma pack()
174 
175 #pragma pack(2)
176 struct rf_msg_wres { /* Remote file write response */
177  RF_MSG_HDR /* Header fields */
178  uint32 rf_pos; /* Original position in file */
179  uint32 rf_len; /* Number of bytes written */
180 };
181 #pragma pack()
182 
183 /************************************************************************/
184 /* */
185 /* Open */
186 /* */
187 /************************************************************************/
188 
189 #pragma pack(2)
190 struct rf_msg_oreq { /* Remote file open request */
191  RF_MSG_HDR /* Header fields */
192  int32 rf_mode; /* Xinu mode bits */
193 };
194 #pragma pack()
195 
196 #pragma pack(2)
197 struct rf_msg_ores { /* Remote file open response */
198  RF_MSG_HDR /* Header fields */
199  int32 rf_mode; /* Xinu mode bits */
200 };
201 #pragma pack()
202 
203 /************************************************************************/
204 /* */
205 /* Size */
206 /* */
207 /************************************************************************/
208 
209 #pragma pack(2)
210 struct rf_msg_sreq { /* Remote file size request */
211  RF_MSG_HDR /* Header fields */
212 };
213 #pragma pack()
214 
215 #pragma pack(2)
216 struct rf_msg_sres { /* Remote file status response */
217  RF_MSG_HDR /* Header fields */
218  uint32 rf_size; /* Size of file in bytes */
219 };
220 #pragma pack()
221 
222 /************************************************************************/
223 /* */
224 /* Delete */
225 /* */
226 /************************************************************************/
227 
228 #pragma pack(2)
229 struct rf_msg_dreq { /* Remote file delete request */
230  RF_MSG_HDR /* Header fields */
231 };
232 #pragma pack()
233 
234 #pragma pack(2)
235 struct rf_msg_dres { /* Remote file delete response */
236  RF_MSG_HDR /* Header fields */
237 };
238 #pragma pack()
239 
240 /************************************************************************/
241 /* */
242 /* Truncate */
243 /* */
244 /************************************************************************/
245 
246 #pragma pack(2)
247 struct rf_msg_treq { /* Remote file truncate request */
248  RF_MSG_HDR /* Header fields */
249 };
250 #pragma pack()
251 
252 #pragma pack(2)
253 struct rf_msg_tres { /* Remote file truncate response*/
254  RF_MSG_HDR /* Header fields */
255 };
256 #pragma pack()
257 
258 /************************************************************************/
259 /* */
260 /* Mkdir */
261 /* */
262 /************************************************************************/
263 
264 #pragma pack(2)
265 struct rf_msg_mreq { /* Remote file mkdir request */
266  RF_MSG_HDR /* Header fields */
267 };
268 #pragma pack()
269 
270 #pragma pack(2)
271 struct rf_msg_mres { /* Remote file mkdir response */
272  RF_MSG_HDR /* Header fields */
273 };
274 #pragma pack()
275 
276 /************************************************************************/
277 /* */
278 /* Rmdir */
279 /* */
280 /************************************************************************/
281 
282 #pragma pack(2)
283 struct rf_msg_xreq { /* Remote file rmdir request */
284  RF_MSG_HDR /* Header fields */
285 };
286 #pragma pack()
287 
288 #pragma pack(2)
289 struct rf_msg_xres { /* Remote file rmdir response */
290  RF_MSG_HDR /* Header fields */
291 };
292 #pragma pack()
int32 rf_seq
Definition: rfilesys.h:33
RF_MSG_HDR uint32 rf_size
Definition: rfilesys.h:218
uint16 rf_ser_port
Definition: rfilesys.h:35
struct rflcblk rfltab[]
Definition: rflinit.c:5
int32 rfstate
Definition: rfilesys.h:50
#define RF_DATALEN
Definition: rfilesys.h:10
uint32 rfmode
Definition: rfilesys.h:54
RF_MSG_HDR uint32 rf_pos
Definition: rfilesys.h:141
byte bool8
Boolean値
Definition: kernel.h:36
uint32 rf_len
Definition: rfilesys.h:168
#define RF_NAMLEN
Definition: rfilesys.h:9
RF_MSG_HDR int32 rf_mode
Definition: rfilesys.h:192
bool8 rf_registered
Definition: rfilesys.h:39
struct rfdata Rf_data
Definition: rfsinit.c:10
int32 rf_udp_slot
Definition: rfilesys.h:37
RF_MSG_HDR uint32 rf_pos
Definition: rfilesys.h:178
sid32 rf_mutex
Definition: rfilesys.h:38
int int32
符号あり32ビット整数(int)
Definition: kernel.h:11
uint32 rf_len
Definition: rfilesys.h:142
uint32 rf_len
Definition: rfilesys.h:179
unsigned short uint16
符号なし16ビット整数(unsigned short)
Definition: kernel.h:17
uint32 rfpos
Definition: rfilesys.h:53
RF_MSG_HDR uint32 rf_pos
Definition: rfilesys.h:150
RF_MSG_HDR int32 rf_mode
Definition: rfilesys.h:199
RF_MSG_HDR uint32 rf_pos
Definition: rfilesys.h:167
int32 rfdev
Definition: rfilesys.h:51
uint32 rf_ser_ip
Definition: rfilesys.h:34
uint32 rf_len
Definition: rfilesys.h:151
uint16 rf_loc_port
Definition: rfilesys.h:36
unsigned int uint32
符号なし32ビット整数(unsigned int)
Definition: kernel.h:15
int32 sid32
セマフォID
Definition: kernel.h:22
#define RF_MSG_HDR
Definition: rfilesys.h:112