专业汉语词典知识平台,分享汉字词语知识、历史文学知识解答!

励北网
励北网

linux内核是是什么意思,一文看懂Linux内核

来源:小易整编  作者:小易  发布时间:2023-03-20 08:46
摘要:linux内核是是什么意思,一文看懂Linux内核Linux内核预备工作理解Linux内核最好预备的知识点:懂C语言懂一点操作系统的知识熟悉少量相关算法懂计算机体系结构Linux内核的特点:结合了unix操作系统的一些基础概念。Linux内...
从上面可以看出,platform机制最后还是调用了bus_register() , device_add() , driver_register() 这三个关键的函数。
下面看几个结构体:

struct platform_device  (/include/linux/Platform_device.h){  const char     * name;  int            id;  struct device  dev;  u32             num_resources;  struct resource  * resource;};

Platform_device 结构体描述了一个 platform 结构的设备,在其中包含了一般设备的结构体 struct device  dev; 设备的资源结构体 struct resource   * resource;还有设备的名字 const char * name。(注意,这个名字一定要和后面platform_driver.driver àname相同,原因会在后面说明。)

该结构体中最重要的就是resource结构,这也是之所以引入platform机制的原因。

struct resource     ( /include/linux/ioport.h){  resource_size_t start;  resource_size_t end;  const char *name;  unsigned long flags;  struct resource *parent, *sibling, *child;};

其中 flags 表示该资源的类型,start 和 end 分别表示该资源的起始地址和结束地址(/include/linux/Platform_device.h):

struct platform_driver {  int (*probe)(struct platform_device *);  int (*remove)(struct platform_device *);  void (*shutdown)(struct platform_device *);  int (*suspend)(struct platform_device *, pm_message_t state);  int (*suspend_late)(struct platform_device *, pm_message_t state);  int (*resume_early)(struct platform_device *);  int (*resume)(struct platform_device *);  struct device_driver driver;};

Platform_driver 结构体描述了一个 platform 结构的驱动。其中除了一些函数指针外,还有一个一般驱动的 device_driver 结构。

名字要一致的原因:

上面说的驱动在注册的时候会调用函数 bus_for_each_dev(), 对在每个挂在虚拟的platform bus 的设备作__driver_attach()→driver_probe_device(),在此函数中会对dev和drv做初步的匹配,调用的是drv->bus->match所指向的函数。

platform_driver_register 函数中 drv->driver.bus = &platform_bus_type,所以 drv->bus->match 就为 platform_bus_type→match,为 platform_match 函数,该函数如下:

static int platform_match(struct device * dev, struct device_driver * drv){  struct platform_device *pdev = container_of(dev, struct platform_device, dev);  return (strncmp(pdev->name, drv->name, BUS_ID_SIZE) == 0);}

是比较 dev 和 drv 的 name,相同则会进入 really_probe() 函数,从而进入自己写的 probe 函数做进一步的匹配。所以 dev→name 和 driver→drv→name 在初始化时一定要填一样的。

不同类型的驱动,其 match 函数是不一样的,这个 platform 的驱动,比较的是 dev 和drv 的名字,还记得 usb 类驱动里的 match 吗?它比较的是 Product ID 和 Vendor ID。

个人总结 Platform 机制的好处:

1、提供 platform_bus_type 类型的总线,把那些不是总线型的soc设备都添加到这条虚拟总线上。使得,总线——设备——驱动的模式可以得到普及。

2、提供platform_device和platform_driver类型的数据结构,将传统的device和driver数据结构嵌入其中,并且加入resource成员,以便于和Open Firmware这种动态传递设备资源的新型bootloader和kernel 接轨。

本文地址:百科问答频道 https://www.neebe.cn/wenda/933974_4.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!

共4页 1 2 3 4 当前是最后一页

百科问答
小编:小易整编
相关文章相关阅读
  • 销售额是什么意思?

    销售额是什么意思?

    销售额是指商业企业的一项关键指标,代表企业在一定时期内的营业额,它实时反映企业经营活动的情况,是衡量企业经营能力和效益的重要指标。销售额可以有多种形式,如零售销售额、批发销售额和出口销售额等。销售额的计算方法很简单,即:销售额=销售数量...

  • iTools是什么意思?

    iTools是什么意思?

    iTools是一款功能强大的苹果设备管理工具。它为苹果设备用户提供了便捷的设备管理功能,包括文件传输、备份还原、应用程序管理、屏幕截图、屏幕录制、音乐管理、视频管理等多种功能,而且支持所有的i系列设备,例如iPod、iPhone和iPad...

  • 无损分区工具是什么意思?

    无损分区工具是什么意思?

    无损分区工具是一种硬盘分区方式,是指在分区时保持原有数据不受损坏的一种分区技术,这种分区技术称为“无损分区”。无损分区可以保护硬盘上的数据,在分区时不会破坏硬盘上的任何数据。而且,在数据安全性上也有一定的优势,因为它不会破坏的数据,因此可...

  • 消费凭证是什么意思?

    消费凭证是什么意思?

    消费凭证是指一种书面的证明凭证,当消费者购买商品或服务时,商家会向其提供消费凭证,凭此凭证可以证明消费者购买了特定的商品或服务,以及在这次购买中耗费的钱财数额。消费凭证是一种用于表示购买交易的依据,是为消费者提供全面鉴证的凭证。它可以表明...

  • DSM系统是什么意思?

    DSM系统是什么意思?

    DSM是一种新晋的分布式、可扩展的模块化系统。它是以无服务器、全节点一致性的系统架构为基础,采用多进程系统将服务、运维功能以模块化的方式集合到一起而不会配置服务的的系统设计模型。DSM的核心特点在于采用了一致性的分布式架构,模块化的结构,...

  • 裸金属是什么意思?

    裸金属是什么意思?

    简而言之,裸金属是指被提取出来,没有被添加任何基材的未加工金属。它是将矿石熔化下去后提炼出来的金属,用来做各种活动和企业的原材料。裸金属通常是一种切削或加工的未经热处理的金属。裸金属一般不经过任何表面处理,以自身属性状态出售。它不会涂以油...

  • CVSS是什么意思?

    CVSS是什么意思?

    CVSS(CommonVulnerabilityScoringSystem,中文译名“公共漏洞评分系统”)是一种漏洞分级和评分系统,是由美国国家信息安全标准研究所(NIST)推行的一套机制,它利用特定的参数来构建一个漏洞评级分类体系...

  • 键盘接口是什么意思?

    键盘接口是什么意思?

    键盘接口一般是用于挂接键盘的接口。它也称为键盘插座或键盘接头,它是一个连接键盘和计算机系统之间的重要硬件部件。键盘接口可以用来接收键盘上发出信号,以便在主板上发出完整的指令。键盘接口可以分为有线和无线两种,有线键盘接口是指采用插孔的连接方...

  • 周排行
  • 月排行
  • 年排行

精彩推荐