chengfeng69
驱动牛犊
驱动牛犊
  • 注册日期2005-01-01
  • 最后登录2005-04-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:952回复:2

请教 内核中的数据访问

楼主#
更多 发布于:2005-02-16 10:01
我用Kernel Driver开发的驱动程序。 收到板上的中断后,中断处理程序在内核中分配一块缓冲区,将数据通过DMA传送到缓冲区中。我在内核中维护了一个缓冲区的链表,

现在的问题是用户如何访问里面的数据。我提供了一个API,供用户获取缓冲区地址。我在测试的时候发现,用户程序是不能用*直接访问内核中的缓冲区。所以又加了一个API,用户首先调用malloc获得一块内存,然后调用此API,将内核中的数据传到用户的内存中。这个API实际上就是执行了memcpy函数。

我的问题是,还有比这种方式更高效率的方法吗?毕竟memcpy需要CPU将数据从内存中逐个读出,然后写到另外一个地址。
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-02-16 19:05
我用Kernel Driver开发的驱动程序。 收到板上的中断后,中断处理程序在内核中分配一块缓冲区,将数据通过DMA传送到缓冲区中。我在内核中维护了一个缓冲区的链表,

现在的问题是用户如何访问里面的数据。我提供了一个API,供用户获取缓冲区地址。我在测试的时候发现,用户程序是不能用*直接访问内核中的缓冲区。所以又加了一个API,用户首先调用malloc获得一块内存,然后调用此API,将内核中的数据传到用户的内存中。这个API实际上就是执行了memcpy函数。

我的问题是,还有比这种方式更高效率的方法吗?毕竟memcpy需要CPU将数据从内存中逐个读出,然后写到另外一个地址。
 

有,比如共享内存
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
chengfeng69
驱动牛犊
驱动牛犊
  • 注册日期2005-01-01
  • 最后登录2005-04-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-02-16 21:34

 [/quote]
有,比如共享内存 [/quote]
可是这是kernel中的内存,可以和用户程序共享吗?
游客

返回顶部