内存映射问题
启动时预留了一块物理内存,这块内存不在页表中。使用这块内存时,先通过ioremap将它映射到内核空间,这块内存可以正常读写。ioremap实现应该跟架构有关,它只是检查一下这块内存在不在页表中,如果不在,就给你做映射!我是在x86下的。因为ioremap是映射外设内存的,不知道用来映射内存安不安全?哪位达人分析一下?
作者: kgd7558 发布时间: 08-26
VMALLOC_RESERVE 和 896M
VMALLOC_RESERVE和896MLINUX内核虚拟地址空间到物理地址空间一般是固定连续影射的。假定机器内存为512M,从3G开始,到3G+512M为连续固定影射区。zone_dma,zone_normal为这个区域的。固定影射的VADDR可以直接使用(getafreepage,thenusepfn_to_virt()等宏定义转换得到vaddr)或用kmall
作者: 思一克 发布时间: 01-16
get_user_pages()真是个好东东
发现get_user_pages()接口真是个好东东,它能获取用户区进程使用内存的某个页(structpage),然后可以在内核区通过kmap_atomic(),kmap()等函数映射到内核区线性地址,从而可以在内核区向其写入数据。据我所知,用户区使用共享内存获取的内存是页对齐的,可以比较方便传给内核使用,请问还有其他方式获取整页内存不?get_user_pages()的函数声明如下:
作者: spren 发布时间: 08-25
内核定时器的一点疑问
本帖最后由donotgiveup于2010-08-2610:48编辑按《linux内核设计与实现》所说,del_timer是不安全的。在smp环境下,只要在定时器函数中操作了timer,就可能引发问题,因为这个时候timer已经删除了。那就只能用del_timer_sync了。因为一般会在timer回调函数里面mod_timer,准备下一次定时。我这样理解对吗?书上又说del
作者: donotgiveup 发布时间: 08-25
请教块设备驱动的问题
大家好,我的sd卡驱动(未用linux自带的)是用的blk_init_queue,采用__make_request处理bio,然后发送request,建立线程处理request的做法。以前设置的一次性最大传输长度是PAGE_SIZE,也就是4K,现在希望改成64k提高速度。linuxkernel是2.6.34我在读写前加入card_queue_map_sg将biomap到内部申请的b
作者: fei1700 发布时间: 08-24
【求助】终端设备tty初始化代码
本帖最后由nathan10于2010-08-2517:43编辑tty设备初始化用到如下函数voidtty_init(void){ rs_init(); con_init();}其中rs_init()实现如下voidrs_init(void){
作者: nathan10 发布时间: 08-25
内核代码中的 _be32是什么数据类型?
最近在学习romfs,看它的源代码时不知道_be32是什么数据类型.知道_u32的意思是32位整数类型_u32=unsignedlongint但是不知道_be32列如在函数romfs_checksum(void*data,intsize)中有:const_be32*ptr=data;(新手拜求)
作者: wykitty 发布时间: 08-25
请问为何需要local_t类型?
ProfessionalLinuxKernelArchitecture一书讲到:内核为SMP系统也提供了local_t类型,该类型允许在单个CPU上的原子操作。但我看源代码,看不出来local_t与atomic_t有什么区别啊!
作者: rc_hz 发布时间: 08-25