首先,这四个函数都有相同的作用:传递内核与用户空间的数据。
它们的区别是:
1、put_user与copy_to_user都是从内核空间到用户空间拷贝数据;get_user与copy_from_user都是从用户空间到内核空间拷贝数据。
2、put_user与get_user只能拷贝简单类型的数据,比如char型、int型等;copy_from_user与copy_to_user可以拷贝多个数据。
比如:
put_user(x,ptr),是把内核空间中x的值拷贝到用户空间中指针ptr指向的地址中。
copy_from_user(*to,*from,n)是把用户空间中from开始的n个数据拷贝到内核空间中to开始的地址上。