在内核空间和用户空间交换数据时,get_user和put_user是两个两用的函数。相对于
copy_to_user和copy_from_user(将在另一篇文中分析),这两个函数主要用于完成一些简
单类型变量(char、int、long等)的拷贝任务,对于一些复合类型的变量,比如数据结构或
者数组类型,get_user和put_user函数还是无法胜任,这两个函数内部将对指针指向的对
象长度进行检查,在arm平台上只支持长度为1,2,4,8的变量。下面我具体分析,首先
看get_user的定义(linux/include/asm-arm/uaccess.h)