Whamcloud - gitweb
d8fabaf15bf39e0f436215580c94dbac584a0ed6
[fs/lustre-release.git] / libsysio / tests / test_driver.h
1 /*
2  * I feel like I should be putting a comment here...
3  */
4 #include <sys/types.h>
5 #include "test.h"
6
7 /* Debugging stuff.. */
8 #define PRINT_LINE 0
9 int debug_level;
10 int print_line;
11
12 FILE *outfp; /* output file */
13 FILE *infp;
14
15 #define DBG(level, _x) \
16  do { \
17 if (((level) <= (debug_level))) {  \
18   if (print_line) \
19    fprintf(outfp, "From file %s line %d: \n", __FILE__, __LINE__); \
20                           (void)((_x)); \
21 } \
22 } while(0)  
23
24 /* Maximum size of a command or command argument */
25 #define MAX_WORD 150 
26
27 /* Maximum size of an input line */
28 #define MAX_LINE 300
29
30 /* Structure to hold commands in */
31 struct cmd_t {
32   char *cmd;
33   int (*func)(int, char **);
34   void (*usage)();
35 };
36
37 extern struct cmd_t cmd_list[];
38
39 /* Maximum number of words in a command (command + command args) */
40 #define MAX_COMMAND 50
41
42 /* 
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 
47  */
48 #define MAX_BUFFERS 50
49 struct buf_t {
50   void *buf;
51   int len;
52 };
53
54 struct buf_t *buflist[MAX_BUFFERS];
55
56 int next; /* Next available buffer slot */
57
58
59 /* Defaults for libsysio */
60 char root_driver[75];
61 char mntpath[250];
62 unsigned int  mntflgs;
63
64
65
66 #define MAX_VARS 250
67
68 /* 
69  * Valid types for fill buff and variables.
70  */
71 #define UINT 0
72 #define SINT 1
73 #define STR  2
74 #define PTR  3
75 /* 
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
83  */
84 struct var_mapping {
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 
88                array 
89             */
90   int type;
91 };
92
93 int last_type; 
94
95 struct var_mapping_list {
96   struct var_mapping map;
97   struct var_mapping_list *next;
98 };
99
100 /* 
101  * Again, I am lazy and just use a static array
102  * This should be dynamically remappable
103  */
104 struct var_mapping_list map[MAX_VARS];
105 char output[4096];
106 int pos; /* Pos in output string */
107
108 struct cmd_map {
109   char *cmd_name;
110   int cmd;
111   int num_args;
112 };
113
114 extern struct cmd_map fcntl_cmds[];
115
116 /* Return code information */
117 #define SUCCESS       0x000
118 #define INVALID_ARGS  0x001
119 #define INVALID_CMD   0x002
120 #define INVALID_VAR   0x004
121
122 int do_prompt; /* Prompt for interactive run? */
123 int last_ret_val; /* Last return value returned by libsysio call */
124 extern int errno;
125 int my_errno; /* Not sure what the difference will be */
126
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); 
136   
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);
207
208
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);
230
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();