我听说scenario 'user signs up' do
Users::RegistrationsController.any_instance.stub(:check_captcha).and_return(true)
# Begin signup
visit new_user_registration_path
是一种非常有效的复制数据算法。为了尝试为我的代码学习一些课程,我决定研究它在GNU中的实现。但是,对于大内存块,它会进行一些检查,然后calls a PAGE_COPY_FWD macro - 我无法在任何地方找到它。
mem_cpy源代码的最后一个链接说:
memcpy
两个问题:
1)如何找到这个宏的实现? (任何地方 - 无论是在我的机器上,还是在别人的机器上 - 即使这意味着我必须阅读汇编代码。)
2)我必须包含什么才能直接调用此宏,即不先通过memcpy?
答案 0 :(得分:0)
我找到了PAGE_COPY_FWD
#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)))
在https://www.sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/mach/pagecopy.h
找到它