2 * I feel like I should be putting a comment here...
7 /* Debugging stuff.. */
12 FILE *outfp; /* output file */
15 #define DBG(level, _x) \
17 if (((level) <= (debug_level))) { \
19 fprintf(outfp, "From file %s line %d: \n", __FILE__, __LINE__); \
24 /* Maximum size of a command or command argument */
27 /* Maximum size of an input line */
30 /* Structure to hold commands in */
33 int (*func)(int, char **);
37 extern struct cmd_t cmd_list[];
39 /* Maximum number of words in a command (command + command args) */
40 #define MAX_COMMAND 50
43 * Holds list of allocated buffers. To use a pre-allocated
44 * buffer, the index number needs to be passed in. This should
45 * probably be smarter--perhaps a hash table could store the
46 * list, with the hash being sent back to the user
48 #define MAX_BUFFERS 50
54 struct buf_t *buflist[MAX_BUFFERS];
56 int next; /* Next available buffer slot */
59 /* Defaults for libsysio */
69 * Valid types for fill buff and variables.
76 * This defines a mapping from a variable name to
77 * some object known by the test harness. Variable
78 * names are distinguished by '$'. Variables are used
79 * in two possible ways: to capture the output of
80 * a function, as in $my_fd = open name, or to gain
81 * access to that variable, as in open $my_fd. Variables
82 * do not necessarily have to be initilized before use
85 char *name; /* Variable name */
86 int obj; /* Object will always be an integer -- either a
87 file descriptor or an index into the buffer
95 struct var_mapping_list {
96 struct var_mapping map;
97 struct var_mapping_list *next;
101 * Again, I am lazy and just use a static array
102 * This should be dynamically remappable
104 struct var_mapping_list map[MAX_VARS];
106 int pos; /* Pos in output string */
114 extern struct cmd_map fcntl_cmds[];
116 /* Return code information */
117 #define SUCCESS 0x000
118 #define INVALID_ARGS 0x001
119 #define INVALID_CMD 0x002
120 #define INVALID_VAR 0x004
122 int do_prompt; /* Prompt for interactive run? */
123 int last_ret_val; /* Last return value returned by libsysio call */
125 int my_errno; /* Not sure what the difference will be */
127 /* Functions defined in test_driver.c */
128 extern unsigned int dx_hack_hash (const char *name, int len);
129 extern int get_obj(char *var_name);
130 extern void *alloc_buff32(unsigned int size, int align);
131 extern void store_result(char *var_name, int result);
132 extern struct var_mapping *get_map(char *var_name);
133 extern void free_obj(char *obj_name);
134 extern void my_perror(char *msg);
135 extern char *get_str(char *var_name);
137 /* Stub functions defined in sysio_stubs.c */
138 extern int test_do_setdebug(int argc, char **argv);
139 extern int test_do_printline(int argc, char **argv);
140 extern int cmp_bufs(int argc, char **argv);
141 extern int test_do_printbuf(int argc, char **argv);
142 extern int test_do_fillbuff(int argc, char **argv);
143 extern int test_do_mount(int argc, char **args);
144 extern int test_do_list(int argc, char **args);
145 extern int test_do_init(int argc, char **args);
146 extern int get_endian(int argc, char **args);
147 extern int get_sizeof(int argc, char **args);
148 extern int do_setbuf(int argc, char **argv);
149 extern int test_do_exit(int argc, char **args);
150 extern int get_buffer(int argc, char **args);
151 extern int free_buffer(int argc, char **args);
152 extern int test_do_chdir(int argc, char **args);
153 extern int do_checkbuf(int argc, char **argv);
154 extern int test_do_chmod(int argc, char **args);
155 extern int test_do_chown(int argc, char **args);
156 extern int test_do_open(int argc, char **args);
157 extern int test_do_close(int argc, char **args);
158 extern int test_do_clear(int argc, char **argv);
159 extern int test_do_dup(int argc, char **args);
160 extern int test_do_dup2(int argc, char **args);
161 extern int test_do_fcntl(int argc, char **args);
162 extern int test_do_fstat(int argc, char **argv);
163 extern int test_do_fsync(int argc, char **argv);
164 extern int test_do_ftruncate(int argc, char **argv);
165 extern int test_do_getcwd(int argc, char **argv);
166 extern int test_do_init_iovec(int argc, char **argv);
167 extern int test_do_init_xtvec(int argc, char **argv);
168 extern int test_do_lseek(int argc, char **argv);
169 extern int test_do_lstat(int argc, char **argv);
170 extern int test_do_getdirentries(int argc, char **argv);
171 extern int test_do_mkdir(int argc, char **argv);
172 extern int test_do_creat(int argc, char **argv);
173 extern int test_do_stat(int argc, char **argv);
174 extern int test_do_statvfs(int argc, char **argv);
175 extern int test_do_fstatvfs(int argc, char **argv);
176 extern int test_do_truncate(int argc, char **argv);
177 extern int test_do_rmdir(int argc, char **argv);
178 extern int test_do_symlink(int argc, char **argv);
179 extern int test_do_unlink(int argc, char **argv);
180 extern int test_do_fdatasync(int argc, char **argv);
181 extern int test_do_ioctl(int argc, char **argv);
182 extern int test_do_umask(int argc, char **argv);
183 extern int test_do_iodone(int argc, char **argv);
184 extern int test_do_iowait(int argc, char **argv);
185 extern int test_do_ipreadv(int argc, char **argv);
186 extern int test_do_ipread(int argc, char **argv);
187 extern int test_do_preadv(int argc, char **argv);
188 extern int test_do_pread(int argc, char **argv);
189 extern int test_do_ireadv(int argc, char **argv);
190 extern int test_do_ireadx(int argc, char **argv);
191 extern int test_do_iread(int argc, char **argv);
192 extern int test_do_readv(int argc, char **argv);
193 extern int test_do_readx(int argc, char **argv);
194 extern int test_do_read(int argc, char **argv);
195 extern int test_do_ipwritev(int argc, char **argv);
196 extern int test_do_ipwrite(int argc, char **argv);
197 extern int test_do_pwritev(int argc, char **argv);
198 extern int test_do_pwrite(int argc, char **argv);
199 extern int test_do_iwritev(int argc, char **argv);
200 extern int test_do_iwrite(int argc, char **argv);
201 extern int test_do_iwritex(int argc, char **argv);
202 extern int test_do_writev(int argc, char **argv);
203 extern int test_do_writex(int argc, char **argv);
204 extern int test_do_write(int argc, char **argv);
205 extern int test_do_mknod(int argc, char **argv);
206 extern int test_do_umount(int argc, char **argv);
209 /* Functions defined in sysio_tests.c */
210 extern int sysio_mount(char *from, char *to);
211 extern int sysio_list(char *path);
212 extern int initilize_sysio(void);
213 extern int sysio_chdir(char *newdir);
214 extern int sysio_chmod(char *mode_arg, const char *path);
215 extern int sysio_chown(char *new_id, char *file);
216 extern int sysio_open(char *path, int flags);
217 extern int sysio_open3(char *path, int flags, char *mode_arg);
218 extern int sysio_close(int fd);
219 extern int sysio_fcntl(int fd, struct cmd_map* cmdptr, char *arg);
220 extern int sysio_fstat(int fd, void *buf);
221 extern int sysio_lstat(char *filename, void *buf);
222 extern int sysio_getdirentries(int fd, char *buf, size_t nbytes, off_t *basep);
223 extern int sysio_mkdir(char *path, char *mode);
224 extern int sysio_creat(char *path, char *mode_arg);
225 extern int sysio_stat(char *filename, void *buf);
226 extern int sysio_statvfs(char *filename, void *buf);
227 extern int sysio_fstatvfs(int fd, void *buf);
228 extern int sysio_umask(char *mode_arg);
229 extern int sysio_mknod(char *path, char *mode_arg, dev_t dev);
231 /* Usage functions defined in help.c */
232 extern void do_help();
233 extern void usage_setdebug();
234 extern void usage_printline();
235 extern void usage_endian();
236 extern void usage_sizeof();
237 extern void usage_get_buffer();
238 extern void usage_free_buffer();
239 extern void usage_do_printbuf();
240 extern void usage_do_fillbuff();
241 extern void usage_init();
242 extern void usage_list();
243 extern void usage_chdir();
244 extern void usage_chmod();
245 extern void usage_chown();
246 extern void usage_open();
247 extern void usage_close();
248 extern void usage_clear();
249 extern void usage_mount();
250 extern void usage_dup();
251 extern void usage_dup2();
252 extern void usage_fcntl();
253 extern void usage_fstat();
254 extern void usage_fsync();
255 extern void usage_ftruncate();
256 extern void usage_getcwd();
257 extern void usage_init_iovec();
258 extern void usage_init_xtvec();
259 extern void usage_lseek();
260 extern void usage_lstat();
261 extern void usage_getdirentries();
262 extern void usage_mkdir();
263 extern void usage_checkbuf();
264 extern void usage_cmpbufs();
265 extern void usage_creat();
266 extern void usage_setbuf();
267 extern void usage_stat();
268 extern void usage_statvfs();
269 extern void usage_fstatvfs();
270 extern void usage_truncate();
271 extern void usage_rmdir();
272 extern void usage_symlink();
273 extern void usage_unlink();
274 extern void usage_fdatasync();
275 extern void usage_ioctl();
276 extern void usage_umask();
277 extern void usage_iowait();
278 extern void usage_iodone();
279 extern void usage_ipreadv();
280 extern void usage_ipread();
281 extern void usage_preadv();
282 extern void usage_pread();
283 extern void usage_ireadv();
284 extern void usage_iread();
285 extern void usage_ireadx();
286 extern void usage_readv();
287 extern void usage_readx();
288 extern void usage_read();
289 extern void usage_ipwritev();
290 extern void usage_ipwrite();
291 extern void usage_pwritev();
292 extern void usage_pwrite();
293 extern void usage_iwritev();
294 extern void usage_iwrite();
295 extern void usage_iwritex();
296 extern void usage_writev();
297 extern void usage_write();
298 extern void usage_writex();
299 extern void usage_mknod();
300 extern void usage_umount();
301 extern void usage_exit();