diff --git a/lab5/user/lab5/apps/init.c b/lab5/user/lab5/apps/init.c index 7531246..a607369 100644 --- a/lab5/user/lab5/apps/init.c +++ b/lab5/user/lab5/apps/init.c @@ -418,6 +418,14 @@ int fs_read(char *path, off_t offset, ssize_t count) { return ret; } +void memcpy2(void *dst, const void *src, u64 len) +{ + u64 i = 0; + for (; i < len; i += 1) { + ((u8 *) dst)[i] = ((u8 *) src)[i]; + } +} + /** * 读入文件并返回长度 */ @@ -454,8 +462,16 @@ int fs_read_all(char *path, void **ret_buf) return cur; } // FIXME: 此处在 Release 模式下第一次读取前 16 字节为空 - memcpy(buf, (const void *) TMPFS_READ_BUF_VADDR, cur); - memcpy(buf, (const void *) TMPFS_READ_BUF_VADDR, cur); + // memcpy(buf, (const void *) TMPFS_READ_BUF_VADDR, cur); + printf("first bytes: %c %c\n", ((u8*) TMPFS_READ_BUF_VADDR)[0], + ((u8*) TMPFS_READ_BUF_VADDR)[1]); + printf("memcpy %x %x %d\n", buf, (const void *) TMPFS_READ_BUF_VADDR, cur); + memcpy2(buf, (const void *) TMPFS_READ_BUF_VADDR, cur); +// u64 i = 0; +// for (; i < cur; i += 1) { +// ((u8 *) buf)[i] = ((u8 *) TMPFS_READ_BUF_VADDR)[i]; +// } + pos += cur; buf += cur; } diff --git a/lab5/user/lab5/apps/init_test.c b/lab5/user/lab5/apps/init_test.c index 58c6b66..4aa908e 100644 --- a/lab5/user/lab5/apps/init_test.c +++ b/lab5/user/lab5/apps/init_test.c @@ -43,6 +43,8 @@ int main() usys_fs_load_cpio(CPIO_BIN); boot_fs(); + builtin_cmd("cat tar/cat_test.txt"); + return 0; test_readline(); test_echo(); diff --git a/lab5/user/lib/string.c b/lab5/user/lib/string.c index 5f4893a..3f348a9 100644 --- a/lab5/user/lib/string.c +++ b/lab5/user/lib/string.c @@ -1,4 +1,5 @@ #include +#include "print.h" /* * A very shabby implementation, optimize it if you like.