linux 块设备驱动
爱编程的大圣
这个作者很懒,什么都没留下…
展开
-
leveldb 源码分析---接口详解之include文件
leveldb头文件结构include└── leveldb ├── c.h => c binding ├── cache.h => cache接口 ├── comparator.h => 比较器接口 ├── db.h => DB接口 ├── env.h =>原创 2017-09-26 19:26:34 · 573 阅读 · 0 评论 -
linux私房菜 之centos 的安装
安装须知 1。linux 的角色定位 2。选择的版本 3。计算机硬件配比 4。磁盘分区的配置原创 2017-12-14 17:48:30 · 167 阅读 · 0 评论 -
存储笔记--导论篇
1.计算机器总线示意图计算机总线工作模式: 半双工总线或设备的位宽: 按照数据总线的条数CPU位数: 内部寄存器到计算单元之前的总线条数PCI总线: 目前台式机与服务器所普遍使用的一种南桥与外设连接的总线技术。PCI地址总线、数据总线分时复用。系统总线(前端总线): CPU与北桥连接的总线内存总线: 内存原创 2018-01-15 20:10:48 · 311 阅读 · 0 评论 -
存储笔记--导论篇2
计算机内部通信将通信的所有节点连接起来,然后找到目标,找到后就发送数据。即“连找发”网络三元素模型。连:就是保证每个网络点到其它网络点总有通路,总是可达的。找:就是提供区分机制,区分体现在主机总线中就是设备地址映射。每个IO设备在启动时都要向内存中映射一个或者多个地址,这个地址有8位长,又被称为IO端口。针对这个地址的数据,统统被北桥芯片重定向到总线上实际的设备上。假如,IDE磁盘控制原创 2018-01-15 20:41:08 · 289 阅读 · 0 评论 -
存储笔记--磁盘原理篇
1。磁盘体系结构2。磁盘组织结构图1。 在磁盘不工作的时候,磁头停靠在靠近主轴接触盘片的表面,即线速度最小的地方,这里是一个不存放任何数据的特殊区域,称为启停区或着陆区,启停区以外就是数据区。 2。 在磁盘的最外圈,离主轴最远的磁道称为“0”磁道,磁盘数据的存放就是从最外圈“0”磁道开始的。既然磁盘数据从最外圈开始,而停止时磁头又是在最内圈启停区,那么磁头是如何找到“0”原创 2018-01-16 19:42:33 · 482 阅读 · 0 评论 -
存储笔记--ssd基本原理篇
1.SSD介绍1.什么是ssd?固态硬盘(Solid State Drives),用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也完全与普通硬盘一致。2.ssd分类固态硬盘(SSD)的存储介质分为两种,一种是采用闪存(FLASH芯片)作为存储介质,原创 2018-01-16 20:31:57 · 15491 阅读 · 0 评论 -
存储笔记--NVMe原理篇
参考:http://home.eeworld.com.cn/home.php?mod=space&uid=346593&do=blog&id=272657目录目录NVMe 是什么nvme 处于什么位置为什么需要nvme命令如何执行支持的admin command支持的io command下发命令流程流程步骤图详解总结NVM原创 2018-01-19 21:06:09 · 12662 阅读 · 5 评论 -
存储笔记--NVMe原理篇之数据传输
接上文继续 http://blog.csdn.net/u010709783/article/details/791107531。read–write 命令基本流程Host在与SSD的数据传输过程中,Host是被动的一方,SSD是主动的一方。你Host需要数据,是我SSD主动把数据写入到你的内存中;你Host写数据,同样是我SSD主动去你Host的内存中取数据,然后写入到闪存。Writ原创 2018-01-29 20:29:14 · 10874 阅读 · 1 评论 -
存储笔记--块设备驱动的注册
块设备的注册1。块设备模型示意图一个块是一个固定大小的数据块, 大小由内核决定. 块常常是 4096 字节, 但是这个值可依赖体系和使用的文件系统而变化. 一个扇区, 相反, 是一个小块, 它的大小常常由底层的硬件决定. 内核期望处理实现 512-字节扇区的设备。2。注册2.1 块驱动的注册 int register_blkdev(unsigned int major,...原创 2018-03-27 09:58:06 · 698 阅读 · 0 评论 -
linux 驱动学习之ioctl 命令_IOC _ 相关宏
转载 :http://blog.csdn.net/u010245383/article/details/29391805简介在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值。cmd除了可区别数字外,还包含有助于处理的几种相应信息。 cmd的大小为 32位,共分 4 个域:bit31~bit30 2位为 “区别读写” 区,作用是区分是读取命令还是转载 2017-11-01 14:41:03 · 1660 阅读 · 0 评论 -
linux驱动学习之模块访问权限的控制
简述:在驱动模块,可以对没有权限的进程和应用程序拒绝访问,有权限的才允许访问。权限控制接口:bool capable(int cap); 定义头文件: include “linux/capability.h”用法例子:if (! capable (CAP_SYS_ADMIN)) return -EPERM;capable()没有权限时返回0,有权限时返回1。 在file_operti转载 2017-11-01 14:12:32 · 1139 阅读 · 0 评论 -
Rocksdb数据库---levle compaction
rocksdb levled compactionStructure of the filesrocksdb 把磁盘上的文件组织为多层,我们称之为level1,levle2,或者L1,L2… 比较特殊的levle0层包含的文件是从memtable 中flushed过来 的,每个层的数据按照以下的方式组织排序 非0 level上的数据,被分片保存在大量不同 的sstable 文件中。 每翻译 2017-09-28 10:52:50 · 2078 阅读 · 0 评论 -
Rocksdb 数据库--MANIFEST文件
官方文档—https://github.com/facebook/rocksdb/wiki/MANIFEST 如有错误或翻译不当,请指正。其他rocksdb 文档请关注后续文章。MANIFESTrocksdb 是一个与存储介质无关的文件系统,文件系统的操作不是原子操作,所以在系统失败后,很容易导致文件的不一致,尽管后来随着日志记录的出现,但是也没有办法保证长期运行期间文件数据的一致性,POSIX翻译 2017-09-27 11:15:17 · 2395 阅读 · 0 评论 -
linux c语言之文件操作相关函数--fopen(),fopen_s(),fread(),fwrite(),fclose(),
fopen: 原型: FILE * fopen(const char * path,const char * mode);接收两个实参 返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中fopen_s: 原型: errno_t fopen_s( FILE** pFile, const char *filename, cons原创 2017-09-30 18:19:20 · 7112 阅读 · 0 评论 -
linux驱动学习之工作队列机制
转载:http://www.cnblogs.com/wwang/archive/2010/10/27/1862202.html什么是工作队列?工作队列(work queue)是Linux kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在于它允许重新调度甚至睡眠。工作队列相关数据结构struct w转载 2017-10-26 19:25:37 · 223 阅读 · 0 评论 -
linux 驱动学习之list链表机制
转载:http://blog.chinaunix.net/uid-27122224-id-3277511.html双向链表struct list_head{ struct list_head *next, *prev;};struct dlist{ int no; void* data; struct dlist *prev, *next; };转载 2017-10-27 17:24:49 · 451 阅读 · 0 评论 -
linux 驱动学习之kmalloc 内存分配
kmalloc 函数void *kmalloc(size_t size, int flags); 第一个参数是要分配的块的大小. 第 2 个参数, 分配标志, GFP_ATOMIC用来从中断处理和进程上下文之外的其他代码中分配内存. 从不睡眠.GFP_KERNEL内核内存的正常分配. 可能睡眠.GFP_USER用来为用户空间页来分配内存; 它可能睡眠.GFP_HIGHUSER如同 GFP_转载 2017-10-27 17:59:07 · 1137 阅读 · 0 评论 -
Linux——信号掩码(signal mask)
转载 :http://blog.csdn.net/budory/article/details/46803863在POSIX下,每个进程有一个信号掩码(signal mask)。简单地说,信号掩码是一个“位图”,其中每一位都对应着一种信号。如果位图中的某一位为1,就表示在执行当前信号的处理程序期间相应的信号暂时被“屏蔽”,使得在执行的过程中不会嵌套地响应那种信号。为什么对某一信号进行屏蔽呢?我们来看转载 2017-10-30 09:47:21 · 2805 阅读 · 0 评论 -
linux驱动学习之kthread_work和kthread_worker机制
转载 :http://blog.csdn.net/cq062364/article/details/39647907kthread_work和kthread_worker机制Kernel中提供的kthread_work和kthread_worker机制和经典的work_struct和workqueue_struct的关系有点类似.通过一个kthread_worker可以处理多个kthread_wor转载 2017-10-30 17:47:04 · 4226 阅读 · 0 评论 -
存储笔记--块设备驱动的操作
1。块设备的openstatic int sbull_open(struct inode *inode, struct file *filp) { struct sbull_dev *dev = inode->i_bdev->bd_disk->private_data; del_timer_sync(&dev->timer)...原创 2018-03-27 10:36:02 · 477 阅读 · 1 评论