XINU
include
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()
rfdata
Definition:
rfilesys.h:32
rfdata::rf_seq
int32 rf_seq
Definition:
rfilesys.h:33
rf_msg_xres
Definition:
rfilesys.h:289
rf_msg_wres
Definition:
rfilesys.h:176
rf_msg_rres
Definition:
rfilesys.h:148
rf_msg_tres
Definition:
rfilesys.h:253
rf_msg_sres::rf_size
RF_MSG_HDR uint32 rf_size
Definition:
rfilesys.h:218
rf_msg_sres
Definition:
rfilesys.h:216
rf_msg_mres
Definition:
rfilesys.h:271
rf_msg_ores
Definition:
rfilesys.h:197
rfdata::rf_ser_port
uint16 rf_ser_port
Definition:
rfilesys.h:35
rfltab
struct rflcblk rfltab[]
Definition:
rflinit.c:5
rflcblk::rfstate
int32 rfstate
Definition:
rfilesys.h:50
RF_DATALEN
#define RF_DATALEN
Definition:
rfilesys.h:10
rflcblk::rfmode
uint32 rfmode
Definition:
rfilesys.h:54
rf_msg_rreq::rf_pos
RF_MSG_HDR uint32 rf_pos
Definition:
rfilesys.h:141
bool8
byte bool8
Boolean値
Definition:
kernel.h:36
rf_msg_hdr
Definition:
rfilesys.h:127
rf_msg_wreq::rf_len
uint32 rf_len
Definition:
rfilesys.h:168
RF_NAMLEN
#define RF_NAMLEN
Definition:
rfilesys.h:9
rf_msg_oreq::rf_mode
RF_MSG_HDR int32 rf_mode
Definition:
rfilesys.h:192
rfdata::rf_registered
bool8 rf_registered
Definition:
rfilesys.h:39
rf_msg_dreq
Definition:
rfilesys.h:229
Rf_data
struct rfdata Rf_data
Definition:
rfsinit.c:10
rfdata::rf_udp_slot
int32 rf_udp_slot
Definition:
rfilesys.h:37
rf_msg_xreq
Definition:
rfilesys.h:283
rflcblk
Definition:
rfilesys.h:49
rf_msg_wres::rf_pos
RF_MSG_HDR uint32 rf_pos
Definition:
rfilesys.h:178
rfdata::rf_mutex
sid32 rf_mutex
Definition:
rfilesys.h:38
rf_msg_wreq
Definition:
rfilesys.h:165
rf_msg_rreq
Definition:
rfilesys.h:139
int32
int int32
符号あり32ビット整数(int)
Definition:
kernel.h:11
rf_msg_treq
Definition:
rfilesys.h:247
rf_msg_rreq::rf_len
uint32 rf_len
Definition:
rfilesys.h:142
rf_msg_wres::rf_len
uint32 rf_len
Definition:
rfilesys.h:179
uint16
unsigned short uint16
符号なし16ビット整数(unsigned short)
Definition:
kernel.h:17
rflcblk::rfpos
uint32 rfpos
Definition:
rfilesys.h:53
rf_msg_sreq
Definition:
rfilesys.h:210
rf_msg_rres::rf_pos
RF_MSG_HDR uint32 rf_pos
Definition:
rfilesys.h:150
rf_msg_mreq
Definition:
rfilesys.h:265
rf_msg_ores::rf_mode
RF_MSG_HDR int32 rf_mode
Definition:
rfilesys.h:199
rf_msg_oreq
Definition:
rfilesys.h:190
rf_msg_wreq::rf_pos
RF_MSG_HDR uint32 rf_pos
Definition:
rfilesys.h:167
rflcblk::rfdev
int32 rfdev
Definition:
rfilesys.h:51
rfdata::rf_ser_ip
uint32 rf_ser_ip
Definition:
rfilesys.h:34
rf_msg_rres::rf_len
uint32 rf_len
Definition:
rfilesys.h:151
rfdata::rf_loc_port
uint16 rf_loc_port
Definition:
rfilesys.h:36
uint32
unsigned int uint32
符号なし32ビット整数(unsigned int)
Definition:
kernel.h:15
rf_msg_dres
Definition:
rfilesys.h:235
sid32
int32 sid32
セマフォID
Definition:
kernel.h:22
RF_MSG_HDR
#define RF_MSG_HDR
Definition:
rfilesys.h:112
Generated by
1.8.13