memcpy 复现
This commit is contained in:
parent
50da90a75f
commit
54f32e597f
@ -418,6 +418,14 @@ int fs_read(char *path, off_t offset, ssize_t count) {
|
|||||||
return ret;
|
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;
|
return cur;
|
||||||
}
|
}
|
||||||
// FIXME: 此处在 Release 模式下第一次读取前 16 字节为空
|
// 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;
|
pos += cur;
|
||||||
buf += cur;
|
buf += cur;
|
||||||
}
|
}
|
||||||
|
@ -43,6 +43,8 @@ int main()
|
|||||||
usys_fs_load_cpio(CPIO_BIN);
|
usys_fs_load_cpio(CPIO_BIN);
|
||||||
|
|
||||||
boot_fs();
|
boot_fs();
|
||||||
|
builtin_cmd("cat tar/cat_test.txt");
|
||||||
|
return 0;
|
||||||
|
|
||||||
test_readline();
|
test_readline();
|
||||||
test_echo();
|
test_echo();
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#include <lib/type.h>
|
#include <lib/type.h>
|
||||||
|
#include "print.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A very shabby implementation, optimize it if you like.
|
* A very shabby implementation, optimize it if you like.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user