博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux kernel的函数与抽象层
阅读量:5922 次
发布时间:2019-06-19

本文共 1002 字,大约阅读时间需要 3 分钟。

在领域,函数是一种关系,这种关系使一个集合里的每一个元素对应到另一个(可能相同的)集合里的唯一元素。

在C语言中函数也有这种联系。自变量影响着因变量。

在linux内核驱动编程经常会有抽象层的概念。硬件抽象层是位于与硬件电路之间的接口层,其目的在于将硬件抽象化。它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。内核提供了简单的内核符号表机制(可以理解为全局函数/变量指针),模块或者源程序向其他程序导出符号,则使用下面的宏:EXPORT_SYMBOL(name);

模块层叠技术在复杂的项目中非常有用。如果以设备驱动的形式实现一个新的软件抽象,则可以为硬件相关的实现提供一个“插头”。例如video-for-linux驱动程序组划分出一个通用的模块,它导出的符号可以供下层具体硬件相关的驱动程序使用。根据所安装的硬件的不同,我们加载通用的video模块和硬件相关的特定模块。在《linux device driverⅢ》中这样描述符号导出的作用:

Modulestacking is useful in complex projects. If a new abstraction is implemented in theform of a device driver, it might offer a plug for hardware-specificimplementa-tions. For example, the video-for-linux set of drivers is split intoa generic module that exports symbols used by lower-level device drivers forspecific hardware. According to your setup, you load the generic video moduleand the specific module for your installed hardware.

抽象层的函数提供给底层的驱动,底层驱动利用这些函数传入与硬件相关的参数(一般是结构体,结构体中需要底层的各种操作函数指针)。抽象层是这一类驱动的共同部分,抽象部分,做了封装,这样和具体硬件相关的驱动一起作为完整的驱动。

转载地址:http://oqivx.baihongyu.com/

你可能感兴趣的文章
Linux_NIS+NFS+Autofs
查看>>
VirtualBox下配置串口以及stty命令详解(原创)
查看>>
通过分析蜘蛛侠论坛中的版块管理功能来介绍该如何使用我开发出来的ROM框架...
查看>>
无线路由器用多少信道好?
查看>>
poi读取excel,获取全部数据.
查看>>
Java如何获取文件编码格式
查看>>
Java之JMX 详解
查看>>
iOS开发之JSON & XML
查看>>
Ubuntu安装配置mysql
查看>>
YARN加载本地库Unable to load native-hadoop library解决办法
查看>>
【Go语言】【4】GO语言类型和为类型增加方法
查看>>
Linux挂载ntfs分区
查看>>
软件需求调研“五步法” 收藏
查看>>
Html 语法学习笔记三
查看>>
IIS 服务或万维网发布服务,或者依赖这 服务可能在启动期间发生错误或者已禁用...
查看>>
【斗医】【2】Web应用开发20天
查看>>
图像处理------Mean Shift滤波(边缘保留的低通滤波)
查看>>
大牛解密阿里云直播技术平台
查看>>
laravel吐槽系列之一
查看>>
FTP的主动和被动模式详解
查看>>