ChinaUnix.net
相关文章推荐:

mmap例子

kernel 2.6.32 1:kmalloc的内存想mmap到用户空间,书上说要先设置为保留,但是我看网上有的并没有先设置为保留,直接remap_pfn_range,而有的先设置为保留,到底需要先设置保留吗? 2: 不设置为保留内存的话,echo 到对应设备一串数据然后再通过应用层代码mmap,向其中写数据unmap,进程退出,再cat设备,发现数据并没有更新,这时为何? 3:所以我怀疑是要设置成保留,但是设置保留后SetPageReserved,加载该驱动时,老是被kil...

by helun - 内核源码 - 2013-08-13 16:28:51 阅读(1198) 回复(0)

相关讨论

弄了两天,总算弄明白了内核虚拟地址,内核逻辑地址,物理地址,page, pfn等的概念及转换 初步了解了设备的mmap操作(我只会很简单的) 下面的两个例子是由ldd3的simple改写而成,解压后直接make 测试例程则是自己写的,也很简单, 但需要手工编译,因为我不会在同一Makefile中写多个目标,特别是因为这个Makefile是编译模块的 编译测试代码 gcc test.c -o test /xx/yy/bb.a (/xx/yy/bb.a是因为这个例程里使用了apue的例库) 理所当...

by fly6 - 驱动开发 - 2013-06-16 23:16:48 阅读(5134) 回复(11)

前些日子看到linuxforum上wheelz发的一个帖子, kernel空间和用户空间通信的经典的例子 。 特整理一下: kernel代码: #include linux/config.h> #include linux/module.h> #include linux/kernel.h> #include linux/mm.h> MODULE_LICENSE("GPL"); MODULE_AUTHOR("Wheelz"); MODULE_DESCRIPTION("mmap demo"); static unsigned long p = 0; static int __init init(void) { //分配共享内存(一个页面) p = __ge...

by tezuka158 - Linux文档专区 - 2008-12-05 11:33:37 阅读(540) 回复(0)

用户空间与kernel空间通信的例子(利用mmap) 前些日子看到linuxforum上wheelz发的一个帖子, kernel空间和用户空间通信的经典的例子 。 特整理一下: kernel代码: #include #include #include #include MODULE_LICENSE("GPL"); MODULE_AUTHOR("Wheelz"); MODULE_DESCRIPTION("mmap demo"); static unsigned long p = 0; static int __init init(void) { //分配共享内存(一个页面) p = __get_free_pages(GFP_K...

by edwinrong - Linux文档专区 - 2008-04-14 10:18:58 阅读(446) 回复(0)

请问PACKET mmap如何用,哪里有例子? 应用层可以通过这个进行零拷贝转发吗?就是从网卡收包之后用户层处理然后再转发出去,类似IPS,但是要性能高。PACKET mmap可不可认为就是零拷贝?

by bekars - 内核源码 - 2007-06-15 11:34:48 阅读(3069) 回复(0)

前些日子看到linuxforum上wheelz发的一个帖子, kernel空间和用户空间通信的经典的例子 。 特整理一下: kernel代码: #include linux/config.h> #include linux/module.h> #include linux/kernel.h> #include linux/mm.h> MODULE_LICENSE("GPL"); MODULE_AUTHOR("Wheelz"); MODULE_DESCRIPTION("mmap demo"); static unsigned long p = 0; static int __init init(void) { //分配共享内存(一个页面) p = __ge...

by bob_zhang2004 - Linux文档专区 - 2006-12-14 12:37:42 阅读(773) 回复(0)

mmap   功能描述: mmap函数是unix/linux下的系统调用   mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。   基于文件的映射,在mmap和munmap执行过程的任何时刻,被映射文件的st_atime可能被更新。如果st_atime字段在前述的情况下没有得到更新,首次对映射区的第一个页索引...

by coolcoolrain - Linux文档专区 - 2010-01-15 23:45:59 阅读(629) 回复(0)

mmap   功能描述: mmap函数是unix/linux下的系统调用   mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。   基于文件的映射,在mmap和munmap执行过程的任何时刻,被映射文件的st_atime可能被更新。如果st_atime字段在前述的情况下没有得到更新,首次对映射区的第一个页索引...

by embededgood - Linux文档专区 - 2009-07-12 00:11:30 阅读(669) 回复(0)

struct page中有一个域为指针mapping ,它指向一个struct address_space类型结构。page cache或swap cache中的所有页面就是根据address_space结构以及一个偏移量来区分的。 文件与 address_space结构的对应:一个具体的文件在打开后,内核会在内存中为之建立一个struct inode结构,其中的i_mapping域指向一个address_space结构。这样,一个文件就对应一个address_space结构,一个 address_space与一个偏移量能够确定一个page cache...

by Elite - Linux文档专区 - 2007-01-28 22:45:10 阅读(590) 回复(0)

由于要访问大内存(over 4G),所以要使用以上几个函数。 但是在使用过程中遇到几个问题: 1. mmap2按照man里说的,include了,但是却编不过。 在.cpp里使用,是直接报没有声明的错误。 在.c里使用,可以编译但是链接失败。而且编译时有一个warning,说是把integer赋给了pointer,明明返回的是void*怎么成integer了?搞不懂。 2. mmap64在32位系统上使用没有问题, 在64位系统上,.c编译也会有上面...

by Finasy - 程序开发 - 2007-01-08 10:58:36 阅读(1118) 回复(0)

由于要访问大内存(over 4G),所以要使用以上几个函数。 但是在使用过程中遇到几个问题: 1. mmap2按照man里说的,include了,但是却编不过。 在.cpp里使用,是直接报没有声明的错误。 在.c里使用,可以编译但是链接失败。而且编译时有一个warning,说是把integer赋给了pointer,明明返回的是void*怎么成integer了?搞不懂。 2. mmap64在32位系统上使用没有问题, 在64位系统上,.c编译也会有上面...

by Finasy - Linux环境编程 - 2007-01-11 22:24:36 阅读(3857) 回复(1)