diff options
Diffstat (limited to 'userfs.c')
-rw-r--r-- | userfs.c | 210 |
1 files changed, 0 insertions, 210 deletions
diff --git a/userfs.c b/userfs.c deleted file mode 100644 index b409f1e..0000000 --- a/userfs.c +++ /dev/null @@ -1,210 +0,0 @@ -#include "types.h" -#include "stat.h" -#include "user.h" -#include "fs.h" -#include "fcntl.h" - -// simple file system tests - -char buf[2000]; -char name[3]; -char *echo_args[] = { "echo", "hello", "goodbye", 0 }; -char *cat_args[] = { "cat", "readme", 0 }; -int stdout = 1; - -void -opentest(void) -{ - int fd; - - fd = open("echo", 0); - if(fd >= 0){ - printf(stdout, "open echo ok\n"); - close(fd); - } else { - printf(stdout, "open echo failed!\n"); - exit(); - } - fd = open("doesnotexist", 0); - if(fd >= 0){ - printf(stdout, "open doesnotexist succeeded!\n"); - exit(); - } else { - printf(stdout, "open doesnotexist failed\n"); - } -} - -void -writetest(void) -{ - int fd; - int i; - - fd = open("small", O_CREATE|O_RDWR); - if(fd >= 0){ - printf(stdout, "creat small succeeded\n"); - } else { - printf(stdout, "error: creat small failed!\n"); - exit(); - } - for(i = 0; i < 100; i++) { - if(write(fd, "aaaaaaaaaa", 10) != 10) { - printf(stdout, "error: write aa %d new file failed\n", i); - exit(); - } - if(write(fd, "bbbbbbbbbb", 10) != 10) { - printf(stdout, "error: write bb %d new file failed\n", i); - exit(); - } - } - printf(stdout, "writes done\n"); - close(fd); - fd = open("small", O_RDONLY); - if(fd >= 0){ - printf(stdout, "open small succeeded\n"); - } else { - printf(stdout, "error: open small failed!\n"); - exit(); - } - i = read(fd, buf, 2000); - if(i == 2000) { - printf(stdout, "read succeeded\n"); - } else { - printf(stdout, "read failed\n"); - exit(); - } - close(fd); - - if(unlink("small") < 0) { - printf(stdout, "unlink small failed\n"); - exit(); - } -} - -void -writetest1(void) -{ - int i, fd, n; - - printf(stdout, "big files\n"); - - fd = open("big", O_CREATE|O_RDWR); - if(fd < 0){ - printf(stdout, "error: creat big failed!\n"); - exit(); - } - - for(i = 0; i < MAXFILE; i++) { - ((int*) buf)[0] = i; - if(write(fd, buf, 512) != 512) { - printf(stdout, "error: write big file failed\n", i); - exit(); - } - } - - close(fd); - - fd = open("big", O_RDONLY); - if(fd < 0){ - printf(stdout, "error: open big failed!\n"); - exit(); - } - - n = 0; - for(;;) { - i = read(fd, buf, 512); - if(i == 0) { - if(n == MAXFILE - 1) { - printf(stdout, "read only %d blocks from big", n); - exit(); - } - break; - } else if(i != 512) { - printf(stdout, "read failed %d\n", i); - exit(); - } - if(((int*)buf)[0] != n) { - printf(stdout, "read content of block %d is %d\n", - n, ((int*)buf)[0]); - exit(); - } - n++; - } - close(fd); - if(unlink("big") < 0) { - printf(stdout, "unlink big failed\n"); - exit(); - } -} - -void -createtest(void) -{ - int i, fd; - - printf(stdout, "many creates, followed by unlink\n"); - - name[0] = 'a'; - name[2] = '\0'; - for(i = 0; i < 52; i++) { - name[1] = '0' + i; - fd = open(name, O_CREATE|O_RDWR); - close(fd); - } - name[0] = 'a'; - name[2] = '\0'; - for(i = 0; i < 52; i++) { - name[1] = '0' + i; - unlink(name); - } -} - -void dirtest(void) -{ - printf(stdout, "mkdir\n"); - - if(mkdir("dir0") < 0) { - printf(stdout, "mkdir failed\n"); - exit(); - } - - if(chdir("dir0") < 0) { - printf(stdout, "chdir dir0 failed\n"); - exit(); - } - - if(chdir("..") < 0) { - printf(stdout, "chdir .. failed\n"); - exit(); - } - - if(unlink("dir0") < 0) { - printf(stdout, "unlink dir0 failed\n"); - exit(); - } -} - -void -exectest(void) -{ - if(exec("echo", echo_args) < 0) { - printf(stdout, "exec echo failed\n"); - exit(); - } - if(exec("cat", cat_args) < 0) { - printf(stdout, "exec cat failed\n"); - exit(); - } -} - -int -main(void) -{ - printf(stdout, "userfs is running\n"); - opentest(); - writetest(); - writetest1(); - createtest(); - exectest(); - return 0; -} |