Changeset 2d11a7d8 in mainline for uspace/app/tester/vfs/vfs1.c
- Timestamp:
- 2009-06-30T15:54:14Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 9c40f883
- Parents:
- db24058
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/tester/vfs/vfs1.c
rdb24058 r2d11a7d8 35 35 #include <fcntl.h> 36 36 #include <dirent.h> 37 #include <devmap.h> 37 38 #include <sys/types.h> 38 39 #include <sys/stat.h> 39 40 #include "../tester.h" 40 41 41 char text[] = "O xein', angellein Lakedaimoniois hoti teide " 42 "keimetha tois keinon rhemasi peithomenoi."; 42 #define FS_TYPE "tmpfs" 43 #define MOUNT_POINT "/tmp" 44 #define OPTIONS "" 45 #define FLAGS 0 43 46 44 char *test_vfs1(bool quiet) 47 #define TEST_DIRECTORY MOUNT_POINT "/testdir" 48 #define TEST_FILE TEST_DIRECTORY "/testfile" 49 #define TEST_FILE2 TEST_DIRECTORY "/nextfile" 50 51 #define MAX_DEVICE_NAME 32 52 #define BUF_SIZE 16 53 54 static char text[] = "Lorem ipsum dolor sit amet, consectetur adipisicing elit"; 55 56 static char *read_root(void) 45 57 { 46 int rc; 47 48 rc = mount("tmpfs", "/", "nulldev0", "", 0); 49 switch (rc) { 50 case EOK: 51 if (!quiet) 52 printf("mounted tmpfs on /\n"); 53 break; 54 case EBUSY: 55 if (!quiet) 56 printf("(INFO) something is already mounted on /\n"); 57 break; 58 default: 59 if (!quiet) 60 printf("(INFO) IPC returned errno %d\n", rc); 61 return "mount() failed."; 62 } 63 64 if (mkdir("/mydir", 0) != 0) 65 return "mkdir() failed.\n"; 66 if (!quiet) 67 printf("created directory /mydir\n"); 58 TPRINTF("Opening the root directory..."); 68 59 69 int fd0 = open("/mydir/myfile", O_CREAT); 70 if (fd0 < 0) 71 return "open() failed.\n"; 72 if (!quiet) 73 printf("created file /mydir/myfile, fd=%d\n", fd0); 74 75 ssize_t cnt; 76 size_t size = sizeof(text); 77 cnt = write(fd0, text, size); 78 if (cnt < 0) 79 return "write() failed.\n"; 80 if (!quiet) 81 printf("written %d bytes, fd=%d\n", cnt, fd0); 82 if (lseek(fd0, 0, SEEK_SET) != 0) 83 return "lseek() failed.\n"; 84 if (!quiet) 85 printf("sought to position 0, fd=%d\n", fd0); 86 87 char buf[10]; 88 89 while ((cnt = read(fd0, buf, sizeof(buf)))) { 90 if (cnt < 0) 91 return "read() failed.\n"; 92 if (!quiet) 93 printf("read %d bytes: \"%.*s\", fd=%d\n", cnt, cnt, 94 buf, fd0); 95 } 96 97 close(fd0); 98 99 DIR *dirp; 60 DIR *dirp = opendir("/"); 61 if (!dirp) { 62 TPRINTF("\n"); 63 return "opendir() failed"; 64 } else 65 TPRINTF("OK\n"); 66 100 67 struct dirent *dp; 101 102 if (!quiet)103 printf("scanning the root directory...\n");104 105 dirp = opendir("/");106 if (!dirp)107 return "opendir() failed\n";108 68 while ((dp = readdir(dirp))) 109 printf("discovered node %s in /\n", dp->d_name);69 TPRINTF(" node \"%s\"\n", dp->d_name); 110 70 closedir(dirp); 111 112 if (rename("/mydir/myfile", "/mydir/yourfile"))113 return "rename() failed.\n";114 115 if (!quiet)116 printf("renamed /mydir/myfile to /mydir/yourfile\n");117 118 if (unlink("/mydir/yourfile"))119 return "unlink() failed.\n";120 71 121 if (!quiet)122 printf("unlinked file /mydir/yourfile\n");123 124 if (rmdir("/mydir"))125 return "rmdir() failed.\n";126 127 if (!quiet)128 printf("removed directory /mydir\n");129 130 if (!quiet)131 printf("scanning the root directory...\n");132 133 dirp = opendir("/");134 if (!dirp)135 return "opendir() failed\n";136 while ((dp = readdir(dirp)))137 printf("discovered node %s in /\n", dp->d_name);138 closedir(dirp);139 140 72 return NULL; 141 73 } 142 74 75 char *test_vfs1(void) 76 { 77 if (mkdir(MOUNT_POINT, 0) != 0) 78 return "mkdir() failed"; 79 TPRINTF("Created directory %s\n", MOUNT_POINT); 80 81 char null[MAX_DEVICE_NAME]; 82 int null_id = devmap_null_create(); 83 84 if (null_id == -1) 85 return "Unable to create null device"; 86 87 snprintf(null, MAX_DEVICE_NAME, "null%d", null_id); 88 int rc = mount(FS_TYPE, MOUNT_POINT, null, OPTIONS, FLAGS); 89 switch (rc) { 90 case EOK: 91 TPRINTF("Mounted /dev/%s as %s on %s\n", null, FS_TYPE, MOUNT_POINT); 92 break; 93 case EBUSY: 94 TPRINTF("(INFO) Filesystem already mounted on %s\n", MOUNT_POINT); 95 break; 96 default: 97 TPRINTF("(ERR) IPC returned errno %d (is tmpfs loaded?)\n", rc); 98 return "mount() failed"; 99 } 100 101 if (mkdir(TEST_DIRECTORY, 0) != 0) 102 return "mkdir() failed"; 103 TPRINTF("Created directory %s\n", TEST_DIRECTORY); 104 105 int fd0 = open(TEST_FILE, O_CREAT); 106 if (fd0 < 0) 107 return "open() failed"; 108 TPRINTF("Created file %s (fd=%d)\n", TEST_FILE, fd0); 109 110 size_t size = sizeof(text); 111 ssize_t cnt = write(fd0, text, size); 112 if (cnt < 0) 113 return "write() failed"; 114 TPRINTF("Written %d bytes\n", cnt); 115 116 if (lseek(fd0, 0, SEEK_SET) != 0) 117 return "lseek() failed"; 118 TPRINTF("Sought to position 0\n"); 119 120 char buf[BUF_SIZE]; 121 while ((cnt = read(fd0, buf, BUF_SIZE))) { 122 if (cnt < 0) 123 return "read() failed"; 124 125 TPRINTF("Read %d bytes: \".*s\"\n", cnt, cnt, buf); 126 } 127 128 close(fd0); 129 130 char *rv = read_root(); 131 if (rv != NULL) 132 return rv; 133 134 if (rename(TEST_FILE, TEST_FILE2)) 135 return "rename() failed"; 136 TPRINTF("Renamed %s to %s\n", TEST_FILE, TEST_FILE2); 137 138 if (unlink(TEST_FILE2)) 139 return "unlink() failed"; 140 TPRINTF("Unlinked %s\n", TEST_FILE2); 141 142 if (rmdir(TEST_DIRECTORY)) 143 return "rmdir() failed"; 144 TPRINTF("Removed directory %s\n", TEST_DIRECTORY); 145 146 rv = read_root(); 147 if (rv != NULL) 148 return rv; 149 150 return NULL; 151 }
Note:
See TracChangeset
for help on using the changeset viewer.