linux下获得块设备大小】的更多相关文章

运行结果如下 jackie@Ubuntu:~/work/0602$ sudo ./a.out /dev/sda/dev/sda3907029168,2000398934016 //BLKGETSIZE64 获取空间大小 (bytes) //BLKGETSIZE  获取块数量 * 512 = 空间大小 (在vmware esxi环境下这个不能用,还不知道原因) #include <stdio.h>#include <stdlib.h>#include <string.h>…
块设备的驱动比字符设备的难,这是因为块设备的驱动和内核的联系进一步增大,但是同时块设备的访问的几个基本结构和字符还是有相似之处的. 有一句话必须记住:对于存储设备(硬盘~~带有机械的操作)而言,调整读写的顺序作用巨大,因为读写连续的扇区比分离的扇区快. 但是同时:SD卡和U盘这类设备没有机械上的限制,所以像上面说的进行连续扇区的调整显得就没有必要了. 先说一下对于硬盘这类设备的简单的驱动. 在linux的内核中,使用gendisk结构来表示一个独立的磁盘设备或者分区.这个结构中包含了磁盘的主设备…
上一章主要讲了请求队列的一系列问题.下面主要说一下请求函数.首先来说一下硬盘类块设备的请求函数. 请求函数可以在没有完成请求队列的中的所有请求的情况下就返回,也可以在一个请求都不完成的情况下就返回. 下面贴出请求函数的例程: static int simp_blkdev_make_request(struct request_queue *q, struct bio *bio) { struct bio_vec *bvec; int i; void *dsk_mem; if ((bio->bi_…
Linux显示列出块设备 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 465.8G 0 disk ├─sda1 8:1 0 60G 0 part ├─sda2 8:2 0 1K 0 part ├─sda5 8:5 0 102G 0 part ├─sda6 8:6 0 102G 0 part ├─sda7 8:7 0 101G 0 part ├…
/************************************************************************* * Linux Shell 判断块设备节点是否存在 * 说明: * 能牌问shell脚本-f不能判断mmc设备节点的问题,查了一下资料,发现不能 * 使用-f来判断,要使用-e或者-b来判断才行. * * 2017-1-17 深圳 南山平山村 曾剑锋 *************************************************…
一.啥是块设备呢? 回答:I/O设备大致分为两类:块设备和字符设备.块设备将信息存储在固定大小的块中,每个块都有自己的地址.数据块的大小通常在512字节到32768字节之间.块设备的基本特征是每个块都能独立于其它块而读写.磁盘是最常见的块设备.在大多数的UNIX操作系统中,块设备只支持以块为单位的访问方式,如磁盘等   二.啥是flash卡呢? 回答:固态硬盘(Solid State Disk.IDE FLASH DISK)是由控制单元和存储单元(FLASH 芯片)组成,简单的说就是用固态电子存…
扇区: 1.硬盘控制器将磁盘看成一大组扇区2.扇区就是一组相邻字节3.扇区按照惯例大小设置位512字节4.存放在块设备中的数据是通过它们在磁盘上的位置来标识,即首个扇区的下标和扇区的数目.5.扇区是硬件设备传送数据到基本单位. 块:1.块是VFS和文件系统传送数据到基本单位.它对应磁盘上一个或者多个相邻扇区.2.内核访问一个文件内容时,它先从磁盘上读文件的磁盘索引节点所在的块3.Linux中,块必须是2的幂,且不能超过一个页框(一般4kB),还必须是扇区大小的整数倍.4.对块设备文件的读写操作时…
1 partition table 这里的分析以经典的MBR为例. 在MBR里面有partition table,每一项对应一个逻辑的块设备,partion table中的每一项是16个字节. 第一个字节:标志该分区是不是active.是不是bootable. 第二到第四个字节:该partition的第一个扇区在物理块设备里面的绝对地址,即chs地址. 第五个字节:该分区的类型,比如是不是linux的文件系统. 第六到八字节:该partition的最后一个扇区在物理块设备里面的绝对地址. 第九到…
据了解Linux下可以有两种方法创建交换空间,一种是创建交换分区,另一种是创建交换文件.本文记录的是创建交换文件的方法,因为我用的是这种方法.. 添加交换文件步骤: 1.找个地方创建一个.swap的文件,我放在了/mnt目录下 dd if=/dev/zero of=/mnt/10GB.swap bs=1G count=10 这条命令是在/mnt目录下创建一个名为10GB.swap的交换文件,基础大小为1GB,有10个,so:1*10=10GB 2.把创建的.swap文件格式化为Swap文件 mk…
在驱动模块初始化函数中实现设备节点的自动创建 我们在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点,当然前提条件是用户空间移植了udev. 内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个类,内核同时提供了class_create(…)函数,可以用它来创建一个类,这个类存放于…