Difference between an API and a device driver
从上面的链接我读到API就像一个描述要做什么的规范,而驱动程序是一个描述如何做的实现。
现在,我无法在linux中找到用于显示,音频等的API。我还在互联网上读到linux提供的设备文件与设备驱动程序进行交互。我们可以通过写入或读取这些文件来与设备进行通信,但如上所述API是描述该做什么的规范,这里缺少API层。因此,我不知道在这些文件中写入哪些命令与设备交互。借助这些设备文件对显示屏上的图像进行光栅化。
答案 0 :(得分:0)
设备文件只是用户空间和内核之间通信的实用方法。一些设备文件(最值得注意的是,块设备)具有统一的API,但除此之外还有点。
对于大多数标准操作,您不会直接与设备文件交互,而是使用库,公开已记录的API,以执行您想要的操作。因此,如果您想播放声音文件,您将使用例如libjack
,甚至更高的抽象层,例如gstreamer
或libvlc
。
这些库可能,甚至可能使用设备文件作为实际输出。除非您愿意,否则无需处理。
在其他情况下,您确实要打开设备文件并与之交互。在这些情况下,您需要阅读相关文档以了解如何执行此操作。某些设备文件仅接受read
和write
个请求。其他设备(例如tty
设备)具有ioctl
个命令,可以修改它们的工作方式。相关设备的手册页将告诉您需要了解的内容。
通常,许多人将设备文件视为内核API的扩展。实际上,许多人调用ioctl
命令“用户定义的系统调用”。在所有情况下,只需阅读文档以了解您需要做什么。