- 博客(13)
- 资源 (5)
- 收藏
- 关注
原创 Linux3.19内核block层出现新变化,增加 multi-queue block layer
最近Linux的最新内核已经release到Linux-3.19-rc6,根据Linus的release note,大约再经过一次rc7版本就可以正式release了。Linux 3.19内核在block层的最大变化就是增加了一个multi-queue block layer,来更好的支持类似于NVME等支持multi-queue机制的设备。所谓的multi-queue机制就是在多核CPU的情况下
2015-01-29 09:24:31 8207
原创 bio与bio_vec
通用块层的核心数据结构称为bio描述符,它描述了块设备的io操作。每一个bio结构都包含一个磁盘存储区标识符(存储区中的起始扇区号和扇区数目)和一个或多个描述与IO操作相关的内存区段(bio_vec数组)
2014-12-25 14:34:26 6359
原创 Linux Shell下的快捷键
Linux Shell下的快捷键Ctrl相关Alt相关 & ESC相关Ctrl + A光标回行首(等同Home)Alt + >历史记录第一条Ctrl + E光标到行尾(等同于End)Alt + 历史记录最后一条Ctrl + C
2014-11-21 10:52:39 988
原创 Linux字符设备驱动程序框架
1:注册设备,注册设备或者模块加载的时候,必须将设备登记到内核相应的设备数组,并返回设备的主设备号2:定义功能函数,对于每一个驱动函数来说,都有一些和该设备密切相关的功能函数,拿最常用的字符设备来来说,存在着诸如open() read() write() ioctl()这一类的操作,当系统使用这些系统调用的时候,将自动使用驱动模块中的特定的函数来执行具体的操作。而对于特地的设备,上面的系统调用
2014-11-17 10:18:56 1419
原创 NVME Driver分析之nvme_submit_sync_cmd
前面在分支创建 I/O Completion Queue 命令时我们提到了,Admin command的提交,使用了nvme_submit_admin_cmd函数,该函数其实是调用了nvme_submit_sync_cmd(dev, 0, cmd, result, ADMIN_TIMEOUT);,即提交了一个同步的命令。
2014-11-13 17:29:52 3668
原创 NVME Driver 解析之Create I/O Completion Queue command
NVME Driver 解析之Create I/O Completion Queue command先看一下spec中对Create I/O Completion Queue command的说明Create I/O Completion Queue command就是把上面各个结构体填充好,然后发命令写到queue的tail中,然后按一下dooorbell的门铃s
2014-11-13 16:39:33 4811
原创 NVME Driver分析之nvme_dev_add函数分析
nvme_dev_add @ nvme_probe①int shift = NVME_CAP_MPSMIN(readq(&dev->bar->cap)) + 12;//计算shift,为2的shift次幂②mem = dma_alloc_coherent(&pdev->dev, 8192, &dma_addr, GFP_KERNEL);//这块空间用于读取identifier cont
2014-11-13 16:12:32 3568
原创 NVME driver分析之nvme_dev_start函数分析
3.1 nvme_dev_start函数分析3.1.1 nvme_dev_map@nvme_dev_start函数分析①pci_enable_device_mem(pdev)//为user初始化pci device的memory space②dev->entry[0].vector = pdev->irq;//给中断向量赋值③pci_set_master(p
2014-11-13 16:01:55 5540 1
原创 NVME Driver解析之init与probe
本文说使用的代码版本是Linux3.16.3代码位置drivers\block\nvme-core.c include/linux/nvme.hNVMe driver的init过程,nvme的初始化过程主要跟两个函数有关,一个是nvme_init,另一个还nvme_probe,本文主要讲一下nvme_init和nvme_probe分别做了什么以及如何从nvme_init进入到nv
2014-11-13 15:51:48 7767 1
原创 硬盘中的扇区,Linux Driver 中Block的块,以及内存中的段和页
扇区是硬件设备传送数据的基本单位,而块是VFS和文件系统传送数据的基本单位一个块对应磁盘上一个或多个相邻的扇区,而VFS系统将其看成是一个单一的数据单元。扇区:为了达到可接受的性能,硬盘和类似的设备快速传送几个相邻字节的数据。块设备的每次数据传输操作都是作用于一组称为扇区的相邻字节。大部分磁盘设备中,一个扇区的大小是512字节。块:在Linux中,块的大小必须四
2014-11-13 15:45:19 3546
原创 关于NDK动态链接库中调用动态链接库一种错误的解决办法
做了两个动态链接库,一个是testpointer.so,另一个是test.so。在test.so里使用LOCAL_SHARED_LIBRARIES := testpointer调用libtestpointer.soAndroid.mk文件如下 LOCAL_PATH :
2011-09-20 09:51:59 1374 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人