研究glibc库以了解memcpy函数是如何实现的,我发现了这段代码:
#include <mach.h>
/* Threshold at which vm_copy is more efficient than well-optimized copying
by words. */
#define PAGE_COPY_THRESHOLD (16384)
#define PAGE_SIZE __vm_page_size
#define PAGE_COPY_FWD(dstp, srcp, nbytes_left, nbytes)
((nbytes_left) = ((nbytes) -
(__vm_copy (__mach_task_self (),
(vm_address_t) srcp, trunc_page (nbytes),
(vm_address_t) dstp) == KERN_SUCCESS
? trunc_page (nbytes)
: 0)))
但是我没有找到什么是__vm_copy
。
谁能帮我弄清楚什么是__vm_copy
和它在哪里实现?
我克隆了glibc repo并使用grep utiitegrep -rnw . -e vm_copy
,但没有找到任何东西。
编辑:这是上面代码的链接
谁能帮我弄清楚什么是__vm_copy
这是一个在Mach内核内部实现的函数。
在哪里实现?
在这里实现http://fxr.watson.org/fxr/source/vm/vm_user.c?v=MK84#L400 .