在Linux系統上,哪裏定義和實現了函數copy_to_user和copy_from_user?copy_to_user在哪裏定義
0
A
回答
4
它在asm/uaccess.h
定義,例如,在/usr/src/linux-3.0.6-gentoo/include/asm-generic/uaccess.h:
static inline long copy_from_user(void *to,
const void __user * from, unsigned long n)
{
might_sleep();
if (access_ok(VERIFY_READ, from, n))
return __copy_from_user(to, from, n);
else
return n;
}
static inline long copy_to_user(void __user *to,
const void *from, unsigned long n)
{
might_sleep();
if (access_ok(VERIFY_WRITE, to, n))
return __copy_to_user(to, from, n);
else
return n;
}
而且__copy_to_user
:
#ifndef __copy_to_user
static inline __must_check long __copy_to_user(void __user *to,
const void *from, unsigned long n)
{
if (__builtin_constant_p(n)) {
switch(n) {
case 1:
*(u8 __force *)to = *(u8 *)from;
return 0;
case 2:
*(u16 __force *)to = *(u16 *)from;
return 0;
case 4:
*(u32 __force *)to = *(u32 *)from;
return 0;
#ifdef CONFIG_64BIT
case 8:
*(u64 __force *)to = *(u64 *)from;
return 0;
#endif
default:
break;
}
}
memcpy((void __force *)to, from, n);
return 0;
}
#endif
+0
這導致下一個問題:__copy_to_user()定義在哪裏:-) –
+0
@ott它在同一個文件中,我包含片段 –
相關問題
- 1. LPPICTURE在哪裏定義?
- 2. Enum.values()定義在哪裏?
- 3. OSTYPE_solaris定義在哪裏
- 4. BCRYPT_HASH_FUNCTION_TABLE在哪裏定義?
- 5. RestClient.send在哪裏定義?
- 6. IRepository定義在哪裏 - ServiceStack
- 7. 定義yearMonthDuration在哪裏?
- 8. FireDAC pbByNumber在哪裏定義?
- 9. DEBUG宏定義在哪裏?
- 10. kill_proc_info定義在哪裏?
- 11. glTextureVertexPointer定義在哪裏?
- 12. XMLHttpRequest.responseStream在哪裏定義?
- 13. 「sprite」在哪裏定義?
- 14. UNS_32定義在哪裏?
- 15. __NR_accept的定義在哪裏?
- 16. NSLineSeparatorCharacter在哪裏定義?
- 17. _kCLLocationAccuracyBest在哪裏定義?
- 18. DIR定義在哪裏?
- 19. GL_UNSIGNED_INT_8_8_8_8_REV在哪裏定義?
- 20. Widget.Material.Light.TextView.ListSeparator在哪裏定義?
- 21. uc_mcontext定義在哪裏?
- 22. callback()的定義在哪裏?
- 23. getActivity()它在哪裏定義?
- 24. UDP_TABLE_CLASS值在哪裏定義?
- 25. ERROR_PENDING在哪裏定義?
- 26. ConfigDSN定義在哪裏?
- 27. DeleteMediaType()定義在哪裏?
- 28. App :: Application.load_tasks在哪裏定義?
- 29. 這裏定義的樣式在哪裏?
- 30. 在哪裏定義NSArray以及在哪裏定義按鈕操作?
我推薦使用ctags或cstope。我建議使用ctags vim(或emacs) - 這對我很有幫助。 http://kernelnewbies.org/FAQ/CodeBrowsing,http://0x8086.blogspot.cz/2011/02/gvim-ctags-and-linux-kernel.html,http://courses.cs.washington.edu/ course/cse451/10au/tutorials/tutorial_ctags.html – pevik