- 博客(10)
- 资源 (5)
- 收藏
- 关注
原创 Linux Shell下的快捷键
Linux Shell下的快捷键Ctrl相关Alt相关 & ESC相关Ctrl + A光标回行首(等同Home)Alt + >历史记录第一条Ctrl + E光标到行尾(等同于End)Alt + 历史记录最后一条Ctrl + C
2014-11-21 10:52:39 992
原创 Linux字符设备驱动程序框架
1:注册设备,注册设备或者模块加载的时候,必须将设备登记到内核相应的设备数组,并返回设备的主设备号2:定义功能函数,对于每一个驱动函数来说,都有一些和该设备密切相关的功能函数,拿最常用的字符设备来来说,存在着诸如open() read() write() ioctl()这一类的操作,当系统使用这些系统调用的时候,将自动使用驱动模块中的特定的函数来执行具体的操作。而对于特地的设备,上面的系统调用
2014-11-17 10:18:56 1422
原创 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 3695
原创 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 4829
原创 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 3578
原创 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 5555 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 7785 1
原创 硬盘中的扇区,Linux Driver 中Block的块,以及内存中的段和页
扇区是硬件设备传送数据的基本单位,而块是VFS和文件系统传送数据的基本单位一个块对应磁盘上一个或多个相邻的扇区,而VFS系统将其看成是一个单一的数据单元。扇区:为了达到可接受的性能,硬盘和类似的设备快速传送几个相邻字节的数据。块设备的每次数据传输操作都是作用于一组称为扇区的相邻字节。大部分磁盘设备中,一个扇区的大小是512字节。块:在Linux中,块的大小必须四
2014-11-13 15:45:19 3553
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人