免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: obrire
打印 上一主题 下一主题

快速内存操作技术 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2006-04-14 16:57 |只看该作者
可是你
m = open("/dev/mem", ...)
read(m, .....)

本身就是要调用copy_to_user. 那能快的起来吗,怎么能是“比mmap更快的方法”?

论坛徽章:
0
32 [报告]
发表于 2006-04-14 17:00 |只看该作者

回复 30楼 思一克 的帖子

当然不连续,正是因为如此,我才改进的.

最初我也采用vmalloc在内核中分配,虽然linus也说这都会成功,的确如此.
不过我的CHIP中的Register中是不能填入vmalloc转换出来的物理地址的.
CHIP的驱动以为是线性块,实际上不是,全乱了.

因此我得100%保证我的地址是线性的,因此修改了实现,并不需对Kernel进行patch
不会影响别人.

论坛徽章:
0
33 [报告]
发表于 2006-04-14 17:03 |只看该作者
原帖由 思一克 于 2006-4-14 16:57 发表
可是你
m = open("/dev/mem", ...)
read(m, .....)

本身就是要调用copy_to_user. 那能快的起来吗,怎么能是“比mmap更快的方法”?

所以我不会用read/write

memset area
*(DWORD *)addr = 0x000000f
这不会更简单吧.

论坛徽章:
0
34 [报告]
发表于 2006-04-14 17:05 |只看该作者
to obrire,

内核中的VMA (vmlist)的的虚拟地址 减去 PAGE_OFFSET 也不等于物理地址啊?你如何算出来的

论坛徽章:
0
35 [报告]
发表于 2006-04-14 17:06 |只看该作者
原帖由 思一克 于 2006-4-14 17:05 发表
to obrire,

内核中的VMA (vmlist)的的虚拟地址 减去 PAGE_OFFSET 也不等于物理地址啊?你如何算出来的



_pa(addr)

论坛徽章:
0
36 [报告]
发表于 2006-04-14 17:07 |只看该作者
那你open("/dev/mem", ...)之后,又不read/write了。

去memset哪个地方?


"所以我不会用read/write

memset area
*(DWORD *)addr = 0x000000f
这不会更简单吧. "

论坛徽章:
0
37 [报告]
发表于 2006-04-14 17:08 |只看该作者
边看边学

论坛徽章:
0
38 [报告]
发表于 2006-04-14 17:10 |只看该作者
to orbire,

_pa(x)不能用于kernel的VMA(vmalloc得到的)地址。无效的

论坛徽章:
0
39 [报告]
发表于 2006-04-14 17:11 |只看该作者
下班了。

论坛徽章:
0
40 [报告]
发表于 2006-04-14 17:13 |只看该作者
原帖由 思一克 于 2006-4-14 17:07 发表
那你open("/dev/mem", ...)之后,又不read/write了。

去memset哪个地方?


"所以我不会用read/write

memset area
*(DWORD *)addr = 0x000000f
这不会更简单吧. "

我当时测试只是稍修改了mapper
方便测试,我加了一句,置/dev/mem 0x600000 0x400000 c
后一看,这段内存全是c

如果没有文件的instance
直接赋予的地址Kernel会以为是虚地址
所以打开是必须的.
也就是说,open /dev/mem
lseek
这几句主要是定位
后面操作时,最好是memcpy/memset等.
如果采用vfs的read/write就没必要了

而且就是文件操作,也并非实现write/read就会调用copy_to_user之类呀
在我的/proc/mem_window中记录文件,实际只返回了物理地址指针及len
其实重写了read/write的operation

[ 本帖最后由 obrire 于 2006-4-14 17:27 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP