首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux 常见主设备号设备清单

Linux 常见主设备号设备清单# 在Linux系统中,设备通常通过主设备号和次设备号来标识。主设备号用于区分设备的大类,例如硬盘、字符设备等;次设备号用于在同一大类设备中区分不同的设备。...以下是一些常见设备类型及其固定的主设备号: 设备类型 主设备号 设备描述 RAM disk 1 虚拟磁盘设备,其存储空间位于RAM中 TTY 4 控制台设备,如 tty1、tty2 等 ttyS (串行端口设备...NVMe 设备的主设备号是在设备驱动程序注册到内核时由内核动态分配的,因此,不同的系统,内核版本或配置可能会有所不同。在许多现代 Linux 系统中,NVMe 设备的主设备号可能是 259。...Linux 源码定义# 设备号的分配在早期的 Linux 内核版本中是静态的,设备号的列表可以在内核源代码的 Documentation/admin-guide/devices.txt 文件中找到。...函数的返回值就是分配给设备的主设备号。 然而,查看驱动程序的源代码并不能直接告诉你在特定系统上的设备号是什么,因为这取决于内核在运行时的动态分配。

75410

Linux0号进程,1号进程,2号进程

本节我们将从linux启动的第一个进程说起,以及后面第一个进程是如何启动1号进程,然后启动2号进程。...0号进程是linux启动的第一个进程,它的task_struct的comm字段为"swapper",所以也成为swpper进程。...我们本节重点关注是0号进程是如何启动的。在linux内核中为0号进程专门定义了一个静态的task_struct的结构,称为init_task。...现在SP指到了内核栈的顶端 最终通过b start_kernel就跳转到我们熟悉的linux内核入口处了。 至此0号进程就已经运行起来了。...所以说所有的内核线程的父进程都是2号进程,也就是kthreadd。 总结: linux启动的第一个进程是0号进程,是静态创建的 在0号进程启动后会接连创建两个进程,分别是1号进程和2和进程。

7K21
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    一文秒懂|Linux字符设备驱动

    /types.h 主要作用:表示字符设备对应的设备号,其中包括主设备号和次设备号。...主设备号:用于标识设备的类型, 次设备号:用于区分同类型的不同设备 简单来说,主设备号用于区分是IIC设备还是SPI设备,而次设备号用于区分IIC设备下,具体哪一个设备,是MPU6050还是EEPROM...,并自动分配一个主设备号,将主、次组成的设备号信息赋值给*dev **这两个函数最大的区别在于**: register_chrdev_region:调用前,已预先定义好了主设备号和次设备号,调用该接口后...alloc_chrdev_region:调用前,未定义主设备号和次设备号;调用后,主设备号以0来表示,以自动分配,并且将自动分配的设备号,同样加入到子系统中,方便系统追踪系统设备号的使用情况。...其中主设备号和次设备号的分界线,由MINORBITS宏定义指定: #define MINORBITS 20 也就是主设备号占用高12bit,次设备号占用低20bit 并且,内核还提供了相关API接口,

    1.7K11

    linux中mknod_linux命令解析器

    先来看看linux系统中设备管理的基本知识: 我们的linux操作系统跟外部设备(如磁盘、光盘等)的通信都是通过设备文件进行的,应用程序可以打开、关闭、读写这些设备文件,从而对设备进行读写,...c表示字符设备文件与设备传送数据的时候是以字符的形式传送,一次传送一个字符,比如打印机、终端都是以字符的形式传送数据; 3,MAJOR和MINOR分别表示主设备号和次设备号...: 为了管理设备,系统为每个设备分配一个编号,一个设备号由主设备号和次设备号组成。...主设备号标示某一种类的设备,次设备号用来区分同一类型的设备。...linux操作系统中为设备文件编号分配了32位无符号整数,其中前12位是主设备号,后20位为次设备号,所以在向系统申请设备文件时主设备号不好超过4095,次设备号不好超过2^20 -1。 .

    55640

    【i.MX6ULL】驱动开发2——新字符设备开发模板

    先看目录: 1 旧字符设备驱动的弊端 使用register_chrdev函数注册字符设备,需要指定一个设备号,这就造成: 需要事先确定好哪些主设备号没有使用 会将一个主设备号下的所有次设备号都使用掉,...2 新字符设备驱动原理 2.1 分配和释放设备号 使用设备号的时候向Linux内核申请,需要几个就申请几个,由Linux内核分配设备可以使用的设备号。...dev_t from, unsigned count) 新字符设备驱动下,设备号分配示例代码如下: int major; /*主设备号*/ int minor; /*次设备号*.../ dev_t devid; /*设备号*/ /*定义了主设备号*/ if (major) { devid = MKDEV(major, 0); /*大部分驱动次设备号都选择...alloc_chrdev_region(&devid, 0, 1, "test"); /*申请设备号*/ major = MAJOR(devid); /*获取分配号的主设备号*/

    62120

    i.MX283开发板第一个Linux驱动-LED驱动

    为了方便管理,Linux 中每个设备都有一个设备号,设备号由主设备号和次设备号两部分组成,主设备号表示某一个具体的驱动,次设备号表示使用这个驱动的各个设备。...: register_chrdev函数第一个参数为0,则表示需要内核动态分配主设备号,其合法返回值(大于0)就是分配的主设备号。...因此我们可以通过如下方式让内核动态分配主设备号,而不需要我们手动设置。...//格式 mknod /dev/xxx 设备类型 主设备号 次设备号 //主设备号是cat /proc/devices里看到的 次设备号需要我们手动填写这里设置为0 最大255 mknod /dev...ls -l /dev|grep led ↵ 可以看到/dev下已经生成了imx283_led设备节点,主设备号200,次设备号0,名称imx283_led。 这时候就可以执行测试程序了。

    6100

    Linux设备驱动之字符设备(一)

    对于红色区域来说,1是主设备号,11是次设备号。 对于绿色区域来说,7是主设备号,0-7代表是次设备号。...主设备号用来标识对于的设备驱动程序,而次设备号则由驱动程序使用,用来标识它所管理的若干同类设备。 设备号的表示 在linux系统中,设备号用dev_t表示。这是个32位的无符号整数。...随着Linux系统的演变,上述的主次设备号的分发可能在将来会发生变化,所以设备驱动程序开发者应该避免直接使用主次设备号所占的位宽来获得对于的主设备号或次设备号。...MKDEV则是将主设备号ma和次设备号mi合成一个dev_t类型的设备号。...是在主设备号不知情的情况下,让系统给分配设备号。

    7.2K52

    mknod命令

    先来看看linux系统中设备管理的基本知识: 我们的linux操作系统跟外部设备(如磁盘、光盘等)的通信都是通过设备文件进行的,应用程序可以打开、关闭、读写这些设备文件,从而对设备进行读写,这种操作就像读写普通的文件一样...buffer中读取数据,而不经过磁盘;     c表示字符设备文件与设备传送数据的时候是以字符的形式传送,一次传送一个字符,比如打印机、终端都是以字符的形式传送数据;   3,MAJOR和MINOR分别表示主设备号和次设备号...:   为了管理设备,系统为每个设备分配一个编号,一个设备号由主设备号和次设备号组成。...主设备号标示某一种类的设备,次设备号用来区分同一类型的设备。...linux操作系统中为设备文件编号分配了32位无符号整数,其中前12位是主设备号,后20位为次设备号,所以在向系统申请设备文件时主设备号不好超过4095,次设备号不好超过2^20 -1。 .

    51220

    linux字符设备驱动基本框架

    作为Linux特有的抽象方式,将所有的硬件抽象成文件的读写。 (2)设备类型 字符设备、块设备、网络设备 (3)设备文件、主设备号、从设备号 有了设备类型的划分,还需要进行进一步明确。...每个设备节点有主设备号和次设备号,用一个32位来表示,前12位表示主设备号,后20位表示次设备号。...主设备号和次设备号统称为设备号。主设备号用来表示一个特定的驱动程序。次设备号用来表示使用该驱动程序的各设备。...可以用MAJOR宏和MINOR宏,将主设备号和次设备号,提取打印出来,看是自动分配的是多少,方便我们在mknod创建设备文件时用到主设备号和次设备号。...> #include linux/device.h> #include linux/slab.h> #include //指定的主设备号 #define MAJOR_NUM

    6K53

    字符设备驱动程序接口

    major, const char *name, const struct file_operations *fops) unsigned int major:主设备号(1 - 255),传递0则由内核自动分配一个合适的空闲的主设备号...,传递0则由内核自动分配一个合适的空闲的主设备号 **const char *name**:设备名称 字符设备驱动新接口 主次设备号 在老接口中使用register_chrdev函数来注册字符设备驱动,...但是设备号只有major(主设备号),而新接口中提供了minor(次设备号),内核中通过dev_t类型描述设备号,其实质是unsigned int类型,其中高12位为设备号,低20位为次设备号。.../* linux/kdev_t.h */ // 传入两个参数生成设备号(dev_t),分别为主设备号和次设备号 MKDEV(ma, mi) // 传入设备号(dev_t),返回主设备号 MAJOR(...(主设备号 + 次设备号) unsigned int count; // 文件引用计数 }; cdev_alloc 为cdev指针分配内存 /* linux/cdev.h

    1.5K30

    Linux驱动实践:你知道【字符设备驱动程序】的两种写法吗?

    ,使用这个主设备号; 参数2 name:设备名称; 参数3 fops:file_operations 类型的指针变量,用于操作设备; 如果是动态分配,那么这个函数的返回值就是:操作系统动态分配给这个设备的主设备号...0 ~ 9 这 10 个次设备号; 参数4 name:设备名称; 补充一下关于设备号的内容: 这里的结构体 dev_t,用来保存设备号,包括主设备号和次设备号。...它本质上是一个 32 位的数,其中的 12 位用来表示主设备号,而其余 20 位用来表示次设备号。...系统中定义了3宏,来实现dev_t变量、主设备号、次设备号之间的转换: MAJOR(dev_t dev): 从 dev_t 类型中获取主设备号; MINOR(dev_t dev): 从 dev_t...来查看一下 /proc/devices 目录下显示的设备号: 可以看到 driver1 已经挂载好了,并且它的主设备号是244。

    1.9K20

    2.制作第一个驱动程序

    /module.h> #include linux/kernel.h> #include linux/fs.h> #include linux/init.h> #include linux...,函数的返回值是主设备号*/ register_chrdev (111, “first_drv”, &first_drv_fops); //111:主设备号,”first_drv”:设备名 /* register_chrdev...作用:在VFS虚拟文件系统中找到字符设备,然后通过主设备号找到内核数组里对应的位置,最后将设备名字和fops结构体填进去 */ return 0; } /*5 module_init修饰入口函数...4.然后开发板通过nfs网络文件系统来加载frist_drv.ko 加载之前首先通过 cat /proc/devices来查看字符主设备号111是否被占用 ?...(void) { /*设置major为0,由内核动态分配主设备号,函数的返回值是主设备号*/ major =register_chrdev (0, “first_drv”, &first_drv_fops

    1.1K50

    linux设备驱动第三篇:如何写一个简单的字符设备驱动

    1、主设备号和次设备号 对于字符设备的访问是通过文件系统中的设备名称进行的。他们通常位于/dev目录下。...那么主设备号和次设备号分别代表什么意义呢?一般情况下,可以这样理解,主设备号标识设备对应的驱动程序,也就是说1个主设备号对应一个驱动程序。当然,现在也有多个驱动程序共享主设备号的情况。...1.1、设备编号的表达 在内核中,dev_t用来保存设备编号,包括主设备号和次设备号。在2.6的内核版本种,dev_t是一个32位的数,其中12位用来表示主设备号,其余20位用来标识次设备号。...通过dev_t获取主设备号和次设备号使用下面的宏: MAJOR(dev_t dev); MINOR(dev_t dev); 相反,通过主设备号和次设备号转换为dev_t类型使用: MKDEV(int major.../slab.h> #include linux/device.h> #define CDEVDEMO_MAJOR 255 /*预设cdevdemo的主设备号*/ static int

    2.1K150

    嵌入式Linux驱动开发——字符设备驱动框架入门

    printk("exit\n"); unregister_chrdev(major, dev_name); //卸载设备,实际是将file_operations结构体从内核维护的相关数组中以主设备号作为索引删除...mknod命令,第一个参数是设备文件的名字,这个名字要和测试程序中的打开的相一致 第二参数c代表的是字符设备 55代表的是主设备号 0代表的是次设备号 驱动程序测试通过了,当我们不需要驱动程序的时候,我们应该将他卸载掉...首先关于第一个问题的解决方案很简单,注册驱动程序的时候,如果传入的major为0,那么系统将会自动为这个驱动程序分配主设备号,同时这个程序也会返回所分配的主设备号。...0,同时把用设备号来接收函数的返回值,实际该函数会返回自动创建的主设备号 third_class = class_create(THIS_MODULE, "third_drv"); //初始化...252的设备,名字为third_driver,而实际代码中并没有指定对应的主设备号,那么也就是说明该设备号是由系统自动创建的。

    3.2K20

    获取Linux环境的硬盘序列号

    因最近工作要求,需要获取Linux环境上的硬盘序列号,经过多番尝试,最终得到满意的结果,先寻找过程梳理汇总如下。...最开始使用hdparam命令来获取,它是Linux上获取或设置硬盘参数的工具,包括测试读写性能以及缓存性能等。...在本场景中涉及到的指令为: hdparam -I /dev/sda 提示结果如下图: 无法获得想要的硬盘序列号,经过一番搜索发现,hdparam是适用于SATA/IDE接口类型的硬盘,sdparam...硬盘和光驱同属于存储设备,那么通过上述获取硬盘序列号的命令,应该是可以获取的到,但实际获取为空,这是为什么呢?...总结 在linux上,可以通过lsblk --nodeps -no serial /dev/sda命令来获得硬盘序列号,注意,在虚拟机上运行的linux,获取到的结果为空。

    15.7K40

    Linux驱动实践:一步一步编写字符设备驱动程序

    静态注册:由我们的驱动程序来指定主设备号,即参数1:from; 动态注册:由操作系统来分配,驱动程序提供一个变量来接收该设备号,即参数1: dev 指针; 另外,在Linux 2.6后期的内核版本中,引入了...在调用 alloc_chrdev_region( ) 时,操作系统分配了主设备号,并且保存在 dev_no 变量中,然后 cdev_add() 再把设备号与cdev结构体进行关联。...$ cat /proc/devices /proc/devices 文件: 列出字符和块设备的主设备号,以及分配到这些设备号的设备名称。...来查看一下 /proc/devices 目录下显示的设备号: $ cat /proc/devices 设备已经注册了,主设备号是: 244 。...现在,我们手动创建设备节点: $ sudo mknod -m 660 /dev/driver2 c 244 0 主设备号 244 是从 /proc/devices 查到的。

    3.7K30

    Linux 常见固定主次设备号设备清单

    Linux 常见固定主次设备号设备清单# 在 Unix 或 Linux 系统中,一些设备的主次设备号是固定的。...下面是一些常见的设备及其固定的主次设备号: 设备前缀 设备路径 设备描述 主设备号 次设备号 c /dev/null 空设备,接收且丢弃所有输入,读取时立即返回EOF 1 3 c /dev/zero 零设备...如果真随机数不足时会使用伪随机数生成 1 9 c /dev/tty 当前终端设备 5 0 c /dev/tty0 当前虚拟控制台 4 0 c /dev/console 系统主控制台 5 1 c /dev/ptmx 伪终端主设备...c /dev/mem 物理内存访问设备 1 1 c /dev/kmem 内核虚拟内存访问设备 1 2 c /dev/full 写入总是返回磁盘已满错误,读取返回null字节 1 7 请注意,上述设备号在大多数...Unix和Linux系统上是固定的,但这是由内核源代码中的设备注册逻辑决定的,因此在一些定制的或者旧版本的系统中可能会有所不同。

    25440
    领券