ChinaUnix.net
相关文章推荐:

mmap unix 实现

自己写了一个虚拟的字符设备/dev/test ,字符设备在内核中为一块内存(用kmalloc), 我想实现的功能是:先通过mmap函数把设备文件映射到用户空间,然后通过strncpy函数向设备写入数据,然后再通过read去读我写入的数据。 我的问题是:在用户空间中如设置mmap的参数:offset = 0;可以正常实现功能,也就是可以用read读出来,而当offset = 1024*4(4k倍数)时不能实现我想要的结果(用read读不出用strncpy写入的数据)。其他file_operati...

by bin_linux96 - 内核源码 - 2011-12-02 08:52:51 阅读(2002) 回复(0)

相关讨论

本帖最后由 zcm211 于 2010-11-20 10:59 编辑 我需要在一个C++程序里实现截屏功能,现在大概知道需要读取framebuffer里的信息,然后直接调用Linux下的mmap,但是具体实现不知道怎么搞了,有大大们给个建议吗 系统内核是eabi linux

by zcm211 - C/C++ - 2010-11-20 18:59:24 阅读(1898) 回复(1)

本帖最后由 registcn 于 2014-04-20 10:37 编辑 我知道fork源码中,mm_struct以及其下的vm_area_struct再以及vm_area_struct下的可写页表是执行写时复制的(先设置共享指针,写的时候再复制)。 如果要保证父子进程通过mmap顺畅通信,这里mmap的vm_area肯定不能各自复制一份的。我的问题:那mmap的区间是特殊处理了?对这个vma设置的共享指针是永久的,不会单独复制一份? 求源码或者详细解释,多谢大家

by registcn - 内核源码 - 2014-04-20 10:45:12 阅读(874) 回复(3)

想在驱动中实现mmap方法,将arm的0x10000000映射给应用程序的mmap调用 驱动中的mmap实现是: static int mmapdrv_mmap(struct file *filp, struct vm_area_struct *vma) { vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); vma->vm_pgoff = ( (u32)0x10000000 >> PAGE_SHIFT); if (remap_pfn_range (vma,vma->vm_start,vma->vm_pgoff, vma->vm_end-vma->vm_start,vma->vm_page...

by wgetfree - 嵌入式开发 - 2011-11-24 17:53:51 阅读(1576) 回复(0)

我的需求就是:在内核态利用__get_free_pages申请4MB内存,并且申请多个这样的内存,然后需要将申请的内存区利用mmap到用户态, 这样用户态就可以对这些内存进行读写操作。之前我在较低的内核中都是可以mmap /dev/mem内存设备文件直接实现,但是在redhat企业版5.5 中不允许对/dev/mem内存设备文件进行mmap操作,于是我需要通过别的方法将申请的内存映射出来,请大家帮我想想具体的实现方法,谢谢,小弟不胜感激。前提是不能重新编译...

by Arm_Linux_boy - 内核源码 - 2011-04-06 21:15:58 阅读(3539) 回复(10)

需求:实现mmap访问内核中的一个结构体。 请问怎么做?2.4内核。 内核中结构体的地址是属于内核虚拟地址?还是? 这是我模仿ldd2写的,但是没有效果:(试图访问buff) #ifndef __KERNEL__ # define __KERNEL__ #endif #ifndef MODULE # define MODULE #endif #include #include #include /* printk() */ #include /* kmalloc() */ #include

by hongchunhua - 驱动开发 - 2009-02-13 15:14:22 阅读(3377) 回复(13)

用那个 mm 共享内存池组件,可是共享内存的大小有限制。 不能用到 1G以上内存空间。 用作父子进程的共享数据

by 我要思考 - C/C++ - 2009-01-12 10:08:38 阅读(3554) 回复(4)

使用mmap实现类似cat命令的文件显示功能 文章来源:http://gliethttp.cublog.cn 1.使用vim创建map_cat.c文件 [root@localhost gliethttp]# vim map_cat.c 2.在map_cat.c中录入如下程序 //map_cat.c #include errno.h> #include fcntl.h> #include sys/mman.h> #include sys/stat.h> #include sys/types.h> #include stdio.h> #include unistd.h> int main(int argc,const char *argv[]) {int fd; struct stat sb; void *region; ...

by gliethttp - Linux文档专区 - 2007-11-25 19:04:34 阅读(752) 回复(0)

本帖最后由 Arm_Linux_boy 于 2011-03-31 10:10 编辑 我的需求就是:在内核态利用__get_free_pages申请4MB内存,并且申请多个这样的内存,然后需要将申请的内存区利用mmap到用户态, 这样用户态就可以对这些内存进行读写操作。之前我在较低的内核中都是可以mmap /dev/mem内存设备文件直接实现,但是在redhat企业版5.5 中不允许对/dev/mem内存设备文件进行mmap操作,于是我需要通过别的方法将申请的内存映射出来,请大家帮我想想...

by Arm_Linux_boy - 驱动开发 - 2011-03-31 10:07:51 阅读(1512) 回复(0)

测试失败,原因如下:[code] #include #include #include #include #include #include #include #include int main(int argc, char* argv[]) { char *map_addr; char s[256]; int map_fd = open("/dev/mem", O_RDONLY); if(map_fd < 0) { printf("cannot open file /de...

by snriyt - 驱动开发 - 2010-06-09 14:11:03 阅读(2582) 回复(5)

map_driver.h #include asm/atomic.h> #include asm/semaphore.h> #include linux/cdev.h> struct mapdrv{ struct cdev mapdev; atomic_t usage; /*Since this is read-only, we don't need sem or locks.*/ }; map_driver.c #include linux/kernel.h> #include linux/module.h> #include linux/fs.h> #include linux/string.h> #include linux/errno.h> #include linux/mm.h> #include linux/vmalloc.h> #include l...

by ubuntuer - Linux文档专区 - 2009-12-13 14:28:51 阅读(1856) 回复(0)