在從事Linux Kernel開發的過程中,user_app和kernel之間傳遞數據時不能使用memcpy()函數,必須使用copy_to/from_kernel或者是put/get_user。原因是kernel和user_app內存不能直接互訪。
1. put_user
Description
This macro copies a single simple value from kernel space to user space. It supports simple types like char and int, but not larger data types like structures or arrays.
ptr must have pointer-to-simple-variable type, and x must be assignable to the result of dereferencing ptr .
Returns zero on success, or -EFAULT on error.
2. get_user
Description
This macro copies a single simple variable from user space to kernel space. It supports simple types like char and int, but not larger data types like structures or arrays.
ptr must have pointer-to-simple-variable type, and the result of dereferencing ptr must be assignable to x without a cast.
Returns zero on success, or -EFAULT on error. On error, the variable x is set to zero.
1. copy_to_user
Arguments
- to
-
Destination address, in user space.
- from
-
Source address, in kernel space.
- n
-
Number of bytes to copy.
Description
Copy data from kernel space to user space.
Returns number of bytes that could not be copied. On success, this will be zero.