int main(void) { struct ramdisk_struct *simulated_disk; simulated_disk = create_ramdisk(RAMDISK_SIZE, DEFAULT_LBA_SHIFT); if (!simulated_disk) { fprintf(stderr, "error initializing ramdisk"); return -1; } start_simulation(simulated_disk); destroy_ramdisk(simulated_disk); return 0; }
int mount_main(int argc, char *argv[]) { int ret; #ifndef CONFIG_EXAMPLES_MOUNT_DEVNAME /* Create a RAM disk for the test */ ret = create_ramdisk(); if (ret < 0) { printf("mount_main: ERROR failed to create RAM disk\n"); return 1; } #endif /* Mount the test file system (see arch/sim/src/up_deviceimage.c */ printf("mount_main: mounting %s filesystem at target=%s with source=%s\n", g_filesystemtype, g_target, g_source); ret = mount(g_source, g_target, g_filesystemtype, 0, NULL); printf("mount_main: mount() returned %d\n", ret); if (ret == 0) { show_statfs(g_mntdir); show_statfs(g_target); #ifdef CONFIG_EXAMPLES_MOUNT_DEVNAME /* Read a test file that is already on the test file system image */ show_directories("", 0); succeed_stat(g_testfile1); show_statfs(g_testfile1); read_test_file(g_testfile1); #else /* Create the test directory that would have been on the canned filesystem */ succeed_mkdir(g_testdir1); show_directories("", 0); succeed_stat(g_testdir1); show_statfs(g_testdir1); #endif /* Write a test file into a pre-existing directory on the test file system */ fail_stat(g_testfile2, ENOENT); write_test_file(g_testfile2); show_directories("", 0); succeed_stat(g_testfile2); show_statfs(g_testfile2); /* Read the file that we just wrote */ read_test_file(g_testfile2); /* Try rmdir() against a file on the directory. It should fail with ENOTDIR */ #ifdef CONFIG_EXAMPLES_MOUNT_DEVNAME fail_rmdir(g_testfile1, ENOTDIR); #endif /* Try rmdir() against the test directory. It should fail with ENOTEMPTY */ fail_rmdir(g_testdir1, ENOTEMPTY); /* Try unlink() against the test directory. It should fail with EISDIR */ fail_unlink(g_testdir1, EISDIR); /* Try unlink() against the test file1. It should succeed. */ #ifdef CONFIG_EXAMPLES_MOUNT_DEVNAME succeed_unlink(g_testfile1); fail_stat(g_testfile1, ENOENT); show_directories("", 0); #endif /* Attempt to open testfile1 should fail with ENOENT */ #ifdef CONFIG_EXAMPLES_MOUNT_DEVNAME fail_read_open(g_testfile1, ENOENT); #endif /* Try rmdir() against the test directory. It should still fail with ENOTEMPTY */ fail_rmdir(g_testdir1, ENOTEMPTY); /* Try mkdir() against the test file2. It should fail with EEXIST. */ fail_mkdir(g_testfile2, EEXIST); /* Try unlink() against the test file2. It should succeed. */ succeed_unlink(g_testfile2); show_directories("", 0); fail_stat(g_testfile2, ENOENT); /* Try mkdir() against the test dir1. It should fail with EEXIST. */ fail_mkdir(g_testdir1, EEXIST); /* Try rmdir() against the test directory. mkdir should now succeed. */ succeed_rmdir(g_testdir1); show_directories("", 0); fail_stat(g_testdir1, ENOENT); /* Try mkdir() against the test dir2. It should succeed */ succeed_mkdir(g_testdir2); show_directories("", 0); succeed_stat(g_testdir2); show_statfs(g_testdir2); /* Try mkdir() against the test dir2. It should fail with EXIST */ fail_mkdir(g_testdir2, EEXIST); /* Write a test file into a new directory on the test file system */ fail_stat(g_testfile3, ENOENT); write_test_file(g_testfile3); show_directories("", 0); succeed_stat(g_testfile3); show_statfs(g_testfile3); /* Read the file that we just wrote */ read_test_file(g_testfile3); /* Use mkdir() to create test dir3. It should succeed */ fail_stat(g_testdir3, ENOENT); succeed_mkdir(g_testdir3); show_directories("", 0); succeed_stat(g_testdir3); show_statfs(g_testdir3); /* Try rename() on the root directory. Should fail with EXDEV*/ fail_rename(g_target, g_testdir4, EXDEV); /* Try rename() to an existing directory. Should fail with EEXIST */ fail_rename(g_testdir2, g_testdir3, EEXIST); /* Try rename() to a non-existing directory. Should succeed */ fail_stat(g_testdir4, ENOENT); succeed_rename(g_testdir3, g_testdir4); show_directories("", 0); fail_stat(g_testdir3, ENOENT); succeed_stat(g_testdir4); show_statfs(g_testdir4); /* Try rename() of file. Should work. */ fail_stat(g_testfile4, ENOENT); succeed_rename(g_testfile3, g_testfile4); show_directories("", 0); fail_stat(g_testfile3, ENOENT); succeed_stat(g_testfile4); show_statfs(g_testfile4); /* Make sure that we can still read the renamed file */ read_test_file(g_testfile4); /* Unmount the file system */ printf("mount_main: Try unmount(%s)\n", g_target); ret = umount(g_target); if (ret != 0) { printf("mount_main: ERROR umount() failed, errno %d\n", errno); g_nerrors++; } printf("mount_main: %d errors reported\n", g_nerrors); } fflush(stdout); return 0; }