首页 > 系统相关 >linux——misc杂项设备

linux——misc杂项设备

时间:2023-04-18 15:05:03浏览次数:56  
标签:struct misc linux device miscdevice 杂项 设备

简介

Linux里面的misc杂项设备是主设备号为10的驱动设备,它的注册跟使用比较的简单,所以比较适用于功能简单的设备。正因为简单,所以它通常嵌套在platform 总线驱动中,配合总线驱动达到更复杂,多功能的效果。

源码

[[05.miscdevice 源码]]
![[Pasted image 79.png]]

parent

这个指针决定了在/sys文件系统里面,它是创建在哪个目录下。如果为空就在/sys/class根目录下创建,如果不为空都是在/sys/class/misc 文件下面创建的一些属性文件。
![[Pasted image 81.png]]

this_device

这个就代表当前设备的设备结构体,这个在查找扩充数据结构时,非常有用。

minor

次设备号,如果是MISC_DYNAMIC_MINOR,则会动态分配。

fops

设备文件操作结构体[[02.file_operations]]

注册过程

  1. 初始化miscdevice结构体
  2. 调用misc_register

misc_register()函数在misc.c中,最主要的功能是基于misc_class构造一个设备,将miscdevice结构挂载到misc_list列表上,并初始化与linux设备模型相关的结构,它的参数是miscdevice结构体。

miscdevice 源码

struct miscdevice  {
	int minor; //次设备号,主设备号已经敲定是10了,后面我们跟进代码看一下。
	const char *name;  //驱动名字,最终会反映在设备节点名字上。
	const struct file_operations *fops; //设备操作方法集合
	struct list_head list; //链接到所有杂项设备链表当中。
	struct device *parent; //父设备,这个一般为NULL
	struct device *this_device;//当前设备的devices结构。
	const char *nodename;
	umode_t mode;
};

标签:struct,misc,linux,device,miscdevice,杂项,设备
From: https://www.cnblogs.com/lattelover/p/17329576.html

相关文章

  • linux安装两个python版本
    1.下载python3安装包wgethttps://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz2.解压python的tgz压缩包文件tar-xzvfPython-3.7.2.tgz3.进入解压的文件cdPython-3.7.24.在python文件路径下编译pythonprefix=/usr/local/python37,指定python安装路径,这个路径......
  • Linux操作系统网络模块
    Linux操作系统的网络模块是负责网络通信的核心部分。它通过实现各种协议和算法,使得计算机能够在网络中进行数据交换和通信。网络模块主要包括以下几个方面的功能:(1)IP协议栈:负责处理网络层的数据包,实现IP地址的分配、路由选择等功能。IP协议栈是网络模块中最基本的部分,它负责处理......
  • Redis Linux环境 安装,卸载,启动,通用名令,数据结构,字符串类型操作
    目录Redis高级Linux下安装redis卸载教程redis启动方式1.在redis目录下的src文件路径下2.动态参数启动3.配置文件启动客户端连接命令配置文件redis通用命令redis数据结构Redis字符串类型操作redis单线程为什么这么快Redis高级速度快:10wops(每秒10w读写),数据存在内存中,c语言实现,单......
  • linux——file_operations
    结构体源码[[03.file_operations结构体源码]]![[Pastedimage78.png]]Linux使用file_operations结构访问驱动程序的函数,这个结构的每一个成员的名字都对应着一个调用。Linux的设备驱动程序工作的基本原理用户进程利用在对设备文件进行诸如read/write操作的时候,系统调用通过......
  • linux——I2C驱动
    HKA_S32ISPWriteI2CData(HKA_U8u8I2cDev,HKA_U8u8DevAddr,HKA_U32u32RegAddr,HKA_U32u32RegAddrByteNum,HKA_U32u32Data,HKA_U32u32DataByteNum){intret=0;structi2c_adapter*padap=NULL;structi2c_msgmsg;......
  • linux蚁剑入门到熟悉文档地址整理
    linux蚁剑入门到熟悉文档地址收录蚁剑GetHub地址帮助文档kali安装出现问题的解决方式kali安装记录linuxdebian下载解压后进入文件内,使用root身份执行./AntSword后选择下载运行环境,新建并选择位置即可之后再次./AntSword即可......
  • linux——堆、栈、内存映射
    C的虚拟内存区域划分CodeArea(代码区):程序代码指令、常量字符串,只可读。StaticArea(静态区、全局区):存放全局变量/常量、静态变量/常量。该区域的大小在程序一加载进内存的时候就已固定,但是静态变量的值是可以改的。Heap(堆):由程序员控制,使用malloc/free来操作。(空间最大)Stack(栈......
  • Linux服务器怎么关闭防火墙
    Linux服务器怎么关闭防火墙在很多情况下,防火墙都会组织一些端口号的通讯。比如我们的tomcat,nginx,redis明明安装的没问题,但在外部就是访问不了,那很有可能就是防护墙的原因了。我是艾西,今天跟大家分享下Linux服务器怎么关闭防火墙一、重启后永久性生效:开启:chkconfigiptableson关闭:c......
  • Linux服务器怎么修改系统时间
    Linux服务器怎么修改系统时间linux服务器的系统时间,有的时候会产生误差,导致我们的程序出现一些延迟,或者其他的一些错误,那么怎么修改linux的系统时间呢?我是艾西,今天又是跟linux小白分享小知识的时间具体操作:我们一般使用“date-s”命令来修改Linux系统时间。比如将系统时间设定成......
  • Linux基础
    1、Linux目录结构1.1Linux系统的目录结构是一颗到撞树。Linux只有一个顶级目录,称之为:根目录Windows系统有多个顶级目录,即各个盘符在Linux系统中表示出现在开头的/表示:根目录出现在后面的/表示:层次关系1.2常见目录说明①./bin:存放常用命令(即二进制可执行程序)......