Linux驱动:用户空间,内核空间内存交互测试

2014-11-24 14:32:35 · 作者: · 浏览: 4

环境:


目标板:MINI6410


目标板LINUX内核版本:2.6.38



实现功能:


使用read函数读取内核空间开辟的数组,使用write函数从用户空间写入数据到内核空间开辟的数组



说明:


Linux中内核空间和用户空间有不同的内存定义,只能通过交互函数来互相访问.


//检测用户空间地址是否合法,type选项:VERIFY_READ,VERIFY_WRITE


int access_ok(int type,const void *addr,unsigned long size);


//从用户空间读取内存


unsigned long copy_from_user(void *to,const void *from,unsigned long n);


//向用户空间内存写入


unsigned long copy_to_user(void *to,void *from,unsigned long len);


//写入单值


int put_user(数据,ptr);


//读取单值


int get_user(数据,ptr);




驱动源代码:


test_driver.c: