linux主次设备号介绍
linux主次设备号有哪些呢?下面是小编给大家介绍一下linux主次设备号,大家可以参考阅读,更多详情请关注应届毕业生考试网。
1、主设备号与次设备号的功能
在Linux内核中,主设备号标识设备对应的驱动程序,告诉Linux内核使用哪一个驱动程序为该设备(也就是/dev下的设备文件)服务;而次设备号则用来标识具体且唯一的某个设备。
比如说在linux的终端打入命令:
**@ubuntu:/dev$ ls –l
crw-rw—- 1 root root 4, 0 2010-05-25 06:50 tty0
crw——- 1 root root 4, 1 2010-05-25 06:51 tty1
会出现很多的文件列表,这里举例字符串设备文件【字符串设备的开头表示为c,当然块设备表示为b】,这些文件可以称为文件系统书的节点,都是位于/dev目录下。另外上面2行中的数字,4【紫红表示】,0,1【蓝色表示】分别表示的是该设备的主设备号,次设备号。一个主设备号和一个次设备号就组成了该设备的.唯一标识符。虽然现在的linux内核允许多个驱动程序共享主设备号,但是现在大多数的设备仍然按照“一个主设备号对应一个驱动程序”的原则组织。次设备号用来指向驱动程序所实现的设备,内核本身基本上不会去关心关于次设备号的任何其他信息。
查看系统已经分配的主设备有哪些:
#cat /proc/devices
2、设备编号的内部表达
设备号的类型是dev_t类型(2.4内核为kdev_t),在<linux/coda.h>中定义。
typedef unsigned long dev_t ;
其中dev_t是一个32位的数,12位表示主设备号,另外20位表示次设备号。
2.6内核把主设备号由8位扩展到12位,而次设备号由8位扩展到20位。
获取主设备号和次设备号的方法如下:
MAJOR(dev_t dev):根据设备号dev获得主设备号;
MINOR(dev_t dev):根据设备号dev获得次设备号;
在<linux/kdev_t.h> 中以上宏的定义如下:
#define MAJOR(dev) ((unsigned int) ((dev) >> MINORBITS))
#define MINOR(dev) ((unsigned int) ((dev) & MINORMASK))
根据主设备号major和次设备号minor构建设备号(转换成dev_t的类型),可以使用
MKDEV(int major, int minor);
在<linux/kdev_t.h> 中以上宏的定义如下:
#define MKDEV(ma,mi) (((ma) << MINORBITS) | (mi))
3、杂项设备的介绍
misc设备,主设备号为10,函数注册的方式也不一样。使用如下:
misc_register(&XXX_miscdev);
misc_deregister(&XXX_miscdev);
上面的函数需指定miscdevice结构体,
在#include <linux/miscdevice.h>中定义:
C++代码
struct miscdevice
{
int minor; //次设备号
const char *name; //设备驱动程序的名称
struct file_operations *fops; //file_operation
struct miscdevice *next, *prev; //用于内部管理
devfs_handle_t devfs_handle; //用于内部管理
}
开发人员必须定义的filed包括:minor ,name 及fops如下:
C++代码
static struct miscdevice mymisc_dev = {
r = MISC_DYNAMIC_MINOR,
= "mymisc",
= &mymisc_fops,
};
可以通过#cat /proc/misc来查看misc设备的注册情况。
-
Win8.1专业版、核心板和企业版有什么区别
导语:win8.1的用户都有一个问题比较疑惑,Win8.1专业版、核心板和企业版有什么区别?小编给大家讲讲!Win8.1核心版(一般就称之为Windows8.1)+Win8.1专业版(称之为Windows8.1Pro),根据用户输入的序列号(就是Win8密钥)来区分安装。Win8.1企业版(称之为Windows8.1Enter...
-
计算机操作系统课程培训学习体会
xxxx年11月20-22日,我们有幸参加了教育部全国高校教师操作系统培训中心对国家精品课程《计算机操作系统课程》的课程培训,聆听了xxxx、xxxx两位教授的讲座,颇受启发,收获很多。回顾三天来的学习活动,深有感触;回顾反省自己以往的教学生活,感慨良多。可以说本次培训活...
-
Windows10系统删除Windows凭据实现方法
导语:Win10系统下的.凭据管理器是用来管理Web凭据以及Windows凭据的一个系统组件,进行维护工作时有时我们需要删除Windows凭据,那么如何进行操作实现呢?下面是小编给大家提供的Windows10系统删除Windows凭据实现方法,大家可以参考阅读,更多详情请关注应届毕业生考试...
-
linux正确重启MySQL的教程
由于是从源码包安装的Mysql,所以系统中是没有红帽常用的servciemysqldrestart这个脚本只好手工重启有人建议Killallmysql。这种野蛮的方法其实是不行的,强制终止的话,如果造成表损坏,损失是巨大的。这里推荐安全的重启方法$mysql_dir/bin/mysqladmin-uroot-pshutdo...