对于在x86硬件上运行的Linux OS,要调用内核中作为TCP / IP驱动程序(用于x86)一部分的TCP_listen()
,用户空间客户端应用程序调用{{1}}接口,这是用户空间的一部分listen()
库[GNU distri。]。
glibc
在通过listen()
软件中断进入内核模式之前调用sys_Listen()
来调用内核模式INT 0x80
系统调用。
因此,TCP_listen()
库层直接提供供应商中性接口,即glibc
运行供应商(x86)特定的TCP / IP驱动程序系统调用listen()
,这是Linux内核的一部分
我的问题:
在Android世界中,我想了解库(Bionic Libc)和Linux内核之间的额外层(HAL)的目的。
注意:对于Android世界的新用户,可能是TCP_listen()
不适合在Android堆栈中使用。
注意:我知道许多线程在SO上回答类似的查询。
答案 0 :(得分:0)
(免责声明:关于这个问题,我是个新手。我只是试图天真地提供指向其他信息来源的指示。) < / p>
我认为Android Camera界面 - 从Camera HAL的上方和下方查看它,将有助于阐明HAL图层所扮演的角色。
简而言之,HAL的存在是为了提供一个统一的接口(对框架或应用程序)访问特定于供应商的实现。
通过&#34;特定于供应商的&#34;,我并不意味着他们符合任何开放的规范。事实上,他们可能不会。
移动设备中的相机不是USB相机。他们是CSI-MIPI interface cameras。但是,它仍然不会阻止供应商尝试从Android支持USB摄像头。
Android Java编程接口android.hardware.camera2
(link)是框架和应用程序使用的API。
Camera HAL v3(link)与供应商特定的内容进行对话。
在该图中,在标有&#34; Linux Kernel&#34;的空间下,并不一定意味着相机模块供应商与外部共享任何源代码。它也可能是加载到内核空间并在内核空间中执行的二进制blob(编译代码)。