Skip to content
Snippets Groups Projects
userfs.c 2.06 KiB
Newer Older
kaashoek's avatar
kaashoek committed
#include "types.h"
kaashoek's avatar
kaashoek committed
#include "stat.h"
#include "user.h"
kaashoek's avatar
kaashoek committed
#include "fs.h"
#include "fcntl.h"
rsc's avatar
 
rsc committed

kaashoek's avatar
kaashoek committed
// file system tests

kaashoek's avatar
kaashoek committed
char name[3];
char *echo_args[] = { "echo", "hello", "goodbye", 0 };
char *cat_args[] = { "cat", "readme", 0 };
kaashoek's avatar
kaashoek committed

rsc's avatar
 
rsc committed
int
rsc's avatar
rsc committed
main(void)
kaashoek's avatar
kaashoek committed
{
rtm's avatar
rtm committed
  int fd;
kaashoek's avatar
kaashoek committed
  int i;
rtm's avatar
rtm committed

kaashoek's avatar
kaashoek committed
  printf(stdout, "userfs is running\n");

  block();
kaashoek's avatar
kaashoek committed

rtm's avatar
rtm committed
  fd = open("echo", 0);
  if(fd >= 0){
kaashoek's avatar
kaashoek committed
    printf(stdout, "open echo ok\n");
rtm's avatar
rtm committed
    close(fd);
  } else {
kaashoek's avatar
kaashoek committed
    printf(stdout, "open echo failed!\n");
rtm's avatar
rtm committed
  }
  fd = open("doesnotexist", 0);
  if(fd >= 0){
kaashoek's avatar
kaashoek committed
    printf(stdout, "open doesnotexist succeeded!\n");
rtm's avatar
rtm committed
    close(fd);
  } else {
kaashoek's avatar
kaashoek committed
    printf(stdout, "open doesnotexist failed\n");
rtm's avatar
rtm committed
  }
kaashoek's avatar
kaashoek committed
  fd = open("doesnotexist", O_CREATE|O_RDWR);
  if(fd >= 0){
kaashoek's avatar
kaashoek committed
    printf(stdout, "creat doesnotexist succeeded\n");
  } else {
    printf(stdout, "error: creat doesnotexist failed!\n");
  }
  for (i = 0; i < 100; i++) {
    if (write (fd, "aaaaaaaaaa", 10) != 10) {
      printf(stdout, "error: write new file failed\n");
    }
    if (write (fd, "bbbbbbbbbb", 10) != 10) {
      printf(stdout, "error: write new file failed\n");
    }
  }
  printf(stdout, "writes done\n");
  close(fd);
  fd = open("doesnotexist", O_RDONLY);
  if(fd >= 0){
    printf(stdout, "open doesnotexist succeeded\n");
  } else {
    printf(stdout, "error: open doesnotexist failed!\n");
  }
kaashoek's avatar
kaashoek committed
  i = read(fd, buf, 2000);
kaashoek's avatar
kaashoek committed
  if (i == 2000) {
kaashoek's avatar
kaashoek committed
    printf(stdout, "read succeeded\n");
kaashoek's avatar
kaashoek committed
  } else {
kaashoek's avatar
kaashoek committed
    printf(stdout, "read failed\n");
kaashoek's avatar
kaashoek committed
  }
  close(fd);
kaashoek's avatar
kaashoek committed

  printf(stdout, "unlink doesnotexist\n");

kaashoek's avatar
kaashoek committed
  unlink("doesnotexist");
kaashoek's avatar
kaashoek committed

  printf(stdout, "many creates, followed by unlink\n");

kaashoek's avatar
kaashoek committed
  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);
  }

kaashoek's avatar
kaashoek committed
  printf(stdout, "mkdir\n");

  if (mkdir("dir0") < 0) 
    printf(stdout, "mkdir failed\n");

  //  unlink("dir0");

  //exec("echo", echo_args);
kaashoek's avatar
kaashoek committed
  printf(stdout, "about to do exec\n");
  exec("cat", cat_args);
rsc's avatar
 
rsc committed
  return 0;
kaashoek's avatar
kaashoek committed
}