📄 理解和使用linux的硬件抽象层hal - colorant的专栏 - csdn博客.htm
字号:
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">探测得到,有些设备,例如一个</SPAN><SPAN
lang=EN-US><FONT face="Times New Roman">Camera</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">设备,它支持哪些数据格式啊之类的信息,对应用层程序也是有意义的,但是只是通过</SPAN><SPAN
lang=EN-US><FONT face="Times New Roman">Sysfs</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口并不能得到,而通过</SPAN><SPAN
lang=EN-US><FONT face="Times New Roman">Linux V<ST1:CHMETCNV w:st="on"
unitname="l" sourcevalue="4" hasspace="False" negative="False" numbertype="1"
tcsc="0">4L</ST1:CHMETCNV>2</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">子系统所定义的的一些标准接口函数,通过</SPAN><SPAN
lang=EN-US><FONT face="Times New Roman">IOCTL</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可以得到这些信息。通常这是由</SPAN><SPAN
lang=EN-US><FONT face="Times New Roman">HAL</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务进程调用相应的</SPAN><SPAN
lang=EN-US><FONT face="Times New Roman">callout</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">去</SPAN><SPAN
lang=EN-US><FONT face="Times New Roman">probe</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">得到。类似还有很多子系统都定义了自己标准的接口函数,这为</SPAN><SPAN
lang=EN-US><FONT face="Times New Roman">HAL</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">获取进一步的设备信息提供了可能性。次外,设备的当前状态啊,等信息,也可能由</SPAN><SPAN
lang=EN-US><FONT face="Times New Roman">Addon</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">通过某些接口得到。</SPAN></FONT></P>
<P class=MsoListBullet2
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0cm; mso-list: none; tab-stops: 21.0pt"><SPAN
lang=EN-US><O:P><FONT face="Times New Roman" size=3></FONT></O:P></SPAN></P>
<P class=MsoListBullet2 style="MARGIN: 0cm 0cm 0pt 39pt"><SPAN lang=EN-US
style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><SPAN
style="mso-list: Ignore"><FONT size=3>Ø</FONT><SPAN
style="FONT: 7pt 'Times New Roman'">
</SPAN></SPAN></SPAN><FONT size=3><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">通过</SPAN><SPAN
lang=EN-US><FONT face="Times New Roman">fdi</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">设备信息文件得到。还有些信息,可能是一些通用的设备信息(比如?要举个例子),或者是通过对硬件本身的探测也无法获得的信息,比如某些键盘上的某些特殊功能键的定义等等,还有可能是一些权限控制信息等,这些信息可以通过</SPAN><SPAN
lang=EN-US><FONT face="Times New Roman">fdi</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件添加到</SPAN><SPAN
lang=EN-US><FONT face="Times New Roman">HAL</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的设备对象信息数据中。</SPAN></FONT></P>
<P class=MsoListBullet2
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 0cm; mso-list: none; tab-stops: 21.0pt"><SPAN
lang=EN-US><O:P><FONT face="Times New Roman" size=3></FONT></O:P></SPAN></P>
<H2 style="MARGIN: 0cm 0cm 0pt 31.2pt"><FONT face="Times New Roman"><SPAN
lang=EN
style="mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN"><SPAN
style="mso-list: Ignore">2.4<SPAN style="FONT: 7pt 'Times New Roman'"><FONT
size=5>
</FONT></SPAN></SPAN></SPAN><SPAN lang=EN
style="mso-ansi-language: EN">HAL</SPAN></FONT><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN">的相关文件</SPAN><SPAN
lang=EN style="mso-ansi-language: EN"><O:P></O:P></SPAN></H2>
<P class=MsoNormalIndent style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN
style="mso-ansi-language: EN"><O:P><FONT face="Times New Roman"
size=3></FONT></O:P></SPAN></P>
<P class=MsoNormalIndent style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN">首先是硬件信息文件</SPAN><SPAN
lang=EN style="mso-ansi-language: EN"><FONT
face="Times New Roman">fdi</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN">的路径会有:</SPAN><SPAN
lang=EN style="mso-ansi-language: EN"><O:P></O:P></SPAN></FONT></P>
<P class=MsoNormalIndent style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN lang=EN
style="mso-ansi-language: EN"><FONT face="Times New Roman">/usr/share/hal/fdi
</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN">通常是由系统程序安装包提供的文件。</SPAN><SPAN
lang=EN style="mso-ansi-language: EN"><O:P></O:P></SPAN></FONT></P>
<P class=MsoNormalIndent style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN lang=EN
style="mso-ansi-language: EN"><FONT face="Times New Roman">/etc/hal/fdi
</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN">这里是用户或者管理员修改</SPAN><SPAN
lang=EN style="mso-ansi-language: EN"><FONT
face="Times New Roman">fdi</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN">的位置。</SPAN><SPAN
lang=EN style="mso-ansi-language: EN"><O:P></O:P></SPAN></FONT></P>
<P class=MsoNormalIndent style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN">这两个路径下各自存在</SPAN><SPAN
lang=EN style="mso-ansi-language: EN"><FONT face="Times New Roman">information
policy preprobe</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN">等</SPAN><SPAN
lang=EN style="mso-ansi-language: EN"><FONT
face="Times New Roman">3</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN">个目录,用来存放不同用途的</SPAN><SPAN
lang=EN style="mso-ansi-language: EN"><FONT
face="Times New Roman">fdi</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN">文件。后面再解释。</SPAN><SPAN
lang=EN style="mso-ansi-language: EN"><O:P></O:P></SPAN></FONT></P>
<P class=MsoNormalIndent style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN
style="mso-ansi-language: EN"><O:P><FONT face="Times New Roman"
size=3></FONT></O:P></SPAN></P>
<P class=MsoNormalIndent style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN">其次是</SPAN><SPAN
lang=EN style="mso-ansi-language: EN"><FONT
face="Times New Roman">HAL</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN">的一些</SPAN><SPAN
lang=EN style="mso-ansi-language: EN"><FONT
face="Times New Roman">Callout</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN">和</SPAN><SPAN
lang=EN style="mso-ansi-language: EN"><FONT
face="Times New Roman">Addon</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN">,他们位于</SPAN><SPAN
style="mso-ansi-language: EN"><FONT face="Times New Roman"> <SPAN
lang=EN>/usr/lib/hal/scripts </SPAN></FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN">及</SPAN><SPAN
lang=EN style="mso-ansi-language: EN"><FONT face="Times New Roman">
/usr/lib/hal/ </FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN">下面</SPAN><SPAN
lang=EN style="mso-ansi-language: EN"><O:P></O:P></SPAN></FONT></P>
<P class=MsoNormalIndent style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN
style="mso-ansi-language: EN"><O:P><FONT face="Times New Roman"
size=3></FONT></O:P></SPAN></P>
<P class=MsoNormalIndent style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN">再有一些与</SPAN><SPAN
lang=EN style="mso-ansi-language: EN"><FONT
face="Times New Roman">HAL</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN">本身相关的配置文件等:</SPAN><SPAN
lang=EN style="mso-ansi-language: EN"><O:P></O:P></SPAN></FONT></P>
<P class=MsoNormalIndent style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN lang=EN
style="mso-ansi-language: EN"><FONT face="Times New Roman">/etc/init.d/hal
hal</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN">的启动脚本</SPAN><SPAN
lang=EN style="mso-ansi-language: EN"><O:P></O:P></SPAN></FONT></P>
<P class=MsoNormalIndent style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN lang=EN
style="mso-ansi-language: EN"><FONT
face="Times New Roman">/etc/udev/rules.d/95-hal.rules<SPAN
style="mso-spacerun: yes"> </SPAN>HAL</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN">在</SPAN><SPAN
lang=EN style="mso-ansi-language: EN"><FONT
face="Times New Roman">UDEV</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN">中的规则</SPAN><SPAN
lang=EN style="mso-ansi-language: EN"><O:P></O:P></SPAN></FONT></P>
<P class=MsoNormalIndent style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN lang=EN
style="mso-ansi-language: EN"><FONT
face="Times New Roman">/etc/dbus-1/system.d/hal.conf<SPAN
style="mso-spacerun: yes"> </SPAN>HAL</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN">的一些常用的</SPAN><SPAN
lang=EN style="mso-ansi-language: EN"><FONT
face="Times New Roman">Interface</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN">在</SPAN><SPAN
lang=EN style="mso-ansi-language: EN"><FONT
face="Times New Roman">DBUS</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN">中的权限设置。</SPAN><SPAN
lang=EN style="mso-ansi-language: EN"><O:P></O:P></SPAN></FONT></P>
<P class=MsoNormalIndent style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN
style="mso-ansi-language: EN"><O:P><FONT face="Times New Roman"
size=3></FONT></O:P></SPAN></P>
<P class=MsoNormalIndent style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN">相关程序</SPAN><SPAN
lang=EN style="mso-ansi-language: EN"><O:P></O:P></SPAN></FONT></P>
<P class=MsoNormalIndent style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN
style="mso-ansi-language: EN"><FONT size=3><FONT
face="Times New Roman">/usr/bin/lshal<O:P></O:P></FONT></FONT></SPAN></P>
<P class=MsoNormalIndent style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN
style="mso-ansi-language: EN"><FONT size=3><FONT
face="Times New Roman">/usr/bin/hal-device<O:P></O:P></FONT></FONT></SPAN></P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -