当前位置:  技术问答>linux和unix

刚开始学写驱动,请大家帮我看一下,ioremap上后怎么降数据拷贝到用户空间??

    来源: 互联网  发布时间:2015-09-05

    本文导语:  下面是我写的驱动: #include   #include   #include  //#include  #include   //#include   //#include   //#include   //#include   #include  #include  #include  #include  #include  unsigned int test_major = 0;  char *StartAddr = 0; MODULE_LICENSE("GPL")...

下面是我写的驱动:
#include  
#include  
#include 
//#include 
#include  
//#include  
//#include  
//#include  
//#include  
#include 
#include 
#include 
#include 
#include 

unsigned int test_major = 0; 
char *StartAddr = 0;
MODULE_LICENSE("GPL");

static int read_test(struct inode *node,struct file *file,char *buf,int count,loff_t offset)
{
int add = 0;
char p = StartAddr + offset;
if (verify_area(VERIFY_WRITE,buf,count) == -EFAULT )
return -EFAULT;

while(count)
{
*buf = readb(p);
p++;count--;buf++;add++;
}
// copy_to_user(buf,StartAddr+offset,count);
// memcpy_fromio(buf,StartAddr+offset,count);
return add;
}


static int read_test24(struct file *file,char *buf,size_t count, loff_t offset)
{
return read_test(NULL,file,buf,count,offset);


static int write_test(struct inode *node ,struct file *file, const char *buf,int count,loff_t offset)


int left;
if (verify_area(VERIFY_READ,buf,count) == -EFAULT )
return -EFAULT;
for(left = count;left;left--)
{
*(StartAddr + offset + left) = *(buf + left);
}
return count; 


static int write_test24(struct file *file,char *buf,size_t count ,loff_t offset)
{
return write_test(NULL,file,buf,count,offset);
}
static int open_test(struct inode *inode,struct file *file )

MOD_INC_USE_COUNT;
return 0; 


static void release_test(struct inode *inode,struct file *file ) 

MOD_DEC_USE_COUNT;

// 在2.4中要一个返回值 
static int release_test_24(struct inode *inode, struct file *file) 

release_test(inode, file); 
return 0; 
}


static struct file_operations test_fops =
{
#if LINUX_VERSION_CODE 

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 驱动都是从 module_init (...); 开始
  • 刚刚开始搞linux驱动
  • 开始做Linux驱动了,三年的时间能做到什么样?大牛们请答话
  • 求驱动开发的入门资料,从hello world开始的资料
  • 刚开始学习linux下的驱动开发,书上的例子编译不了,大家帮忙看看
  • 08048000 是加载动态库的开始地址,还是程序开始运行的地址
  • 想开始学习Linux下的C++编程,不知道如何开始?
  • 今天开始开始学习LINUX,庆祝一下!
  • 如何开始学习JAVA
  • a如何从0开始
  • 我叛变了,开始学java了,希望大家多多关照!!
  • 学UNIX从SOC UNIX开始好吗?
  • pwd查看工作目录是从home/开始一直到当前文件么?
  • crontab任务怎么设置开始日期?
  • 不知道是继续vb6还是及时开始.net又或者是钻研java呢?
  • 我今天开始学习java 请问 J2EE 怎么用
  • 新的开始。。。新的希望。。。
  • linux 纯C编程从哪里开始
  • 在程序的开始部份这样处理的含义是什么呀
  • Mysql auto_increment 重新计数(让id从1开始)
  • 今天开始学习JAVA,望各位高手指教一二
  • 各位大虾,一个初学者该怎样开始学习java?
  • 如何开始...
  • JAVA考级我需要现在开始学什么?
  • 请问java用什么工具编写?在哪里运行?我刚开始学,不太懂,谢谢了


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3