1. 概述

用户空间和内核空间无法直接通过指针或者地址的形式互相访问数据,需要借助特定的函数来实现用户空间和内核空间的数据传递

2. API

2.1 内核空间到用户空间

#include <linux/uaccess.h>
unsigned long copy_to_user(void __user *to, const void *from, unsigned long n);

功能:实现内核数据传到到用户空间

参数:

返回值:成功返回 0,失败返回未传递的字节个数

2.2 用户空间到内核空间

#include <linux/uaccess.h>
unsigned long copy_from_user(void *to, const void __user *from, unsigned long n);

功能:实现用户空间数据传递到内核空间

参数:

3. 实例

3.1 测试程序