summaryrefslogtreecommitdiff
path: root/userfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'userfs.c')
-rw-r--r--userfs.c210
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;
-}