1

对于在 x86 硬件上运行的 Linux 操作系统,为了调用TCP_listen()内核中 TCP/IP 驱动程序(对于 x86)的一部分,用户空间客户端应用程序调用作为用户空间库 [GNU 发行版]listen()一部分的接口。glibc

listen()依次通过软件中断sys_Listen()进入内核模式之前调用内核模式系统调用。INT 0x80TCP_listen()

因此, glibc库层直接提供了供应商中立的接口,即listen()运行供应商(x86)特定的 TCP/IP 驱动程序系统调用TCP_listen(),这是 Linux 内核的一部分。

在此处输入图像描述

我的问题:

在Android世界中,我想了解库(Bionic Libc)和Linux内核之间的额外层(HAL)的目的。

注意:我是 Android 世界的新手,listen()可能不是在 android 堆栈中使用的正确示例。

注意:我知道很多线程在 SO 上回答类似的查询。

4

1 回答 1

0

(免责声明:我是这个问题的菜鸟。我只是想天真地提供指向其他信息源的指针。)

我认为 Android Camera 界面 - 从 Camera HAL 的上方和下方查看它,将有助于阐明 HAL 层所扮演的角色。

简单地说,HAL 的存在是为了提供一个统一的接口(对框架或应用程序)访问特定于供应商的实现。

并且通过“供应商特定”,我并不是说它们符合任何开放规范。事实上,他们可能不会。

移动设备中的摄像头不是 USB 摄像头。它们是CSI-MIPI 接口相机。但是,它仍然不会阻止供应商尝试支持 Android 的 USB 摄像头。

Android Java 编程接口android.hardware.camera2链接)是框架和应用程序使用的 API。

Camera HAL v3 (链接) 与供应商特定的东西对话。

在该图中,在标有“Linux Kernel”的空间下,并不一定意味着相机模块供应商与外部共享任何源代码。它也可能是加载到内核空间并在内核空间中执行的二进制 blob(编译代码)。

于 2014-12-21T01:15:50.603 回答