copy_from_user和copy_to_user

https://blog.csdn.net/liuhangtiant/article/details/85227125

copy_from_user和copy_to_user这两个函数分别是将用户空间的数据拷贝到内核空间以及将内核空间中的数据拷贝到用户空间。这两个函数一般用于系统调用中,前者将用户空间参数拷贝到内核,后者将系统用的结果返回到用户空间。

用户空间和内核空间

Linux将地址空间分为用户空间和内核空间,内核文档Documentation/arm64/memory.txt中定义了内核地址空间和用户地址空间的范围,比如4K Page +4 level页表时,地址空间分布如下:

AArch64 Linux memory layout with 4KB pages + 4 levels:
Start			End			Size	      Use
0000000000000000	0000ffffffffffff	 256TB	      user
ffff000000000000	ffffffffffffffff	 256TB	     kernel

用户空间占用低地址,内核空间占用高地址。
注意第一个是to

static inline unsigned long __must_check copy_from_user(void *to, const void __user *from, unsigned long n)

static inline unsigned long __must_check copy_to_user(void __user *to, const void *from, unsigned long n)

posted @ 2020-02-29 21:02  friedCoder  阅读(285)  评论(0)    收藏  举报