【问题标题】:what is the difference between api and device files in linux?linux中的api和设备文件有什么区别?
【发布时间】:2018-04-14 15:04:26
【问题描述】:

Difference between an API and a device driver

从上面的链接中我了解到,API 就像一个描述要做什么的规范,而驱动程序是一个描述如何做的实现。

现在,我在 linux 中找不到用于显示、音频等的 API。我还在互联网上读到 linux 提供设备文件来与设备驱动程序交互。我们可以通过在这些文件中写入或读取来与设备进行通信,但如上所述,API 是描述要做什么的规范,这里缺少 API 层。所以,我不知道在这些文件中写入哪些命令来与设备交互.借助这些设备文件对显示的图像进行光栅化。

【问题讨论】:

  • 不要过于关注 API 和设备驱动程序或设备文件之间的区别。这就像比较苹果和抵押贷款。至于您的实际问题,如何在屏幕上显示图像:这取决于您要使用什么技术。 Linux 中的选项(至少)使用控制台帧缓冲区,或使用 X 窗口系统。两者都存在库来完成工作,无需自己与设备文件交互。
  • display 只是一个示例,如何与其他设备交互?我需要为每个设备查找库吗?

标签: linux io linux-device-driver


【解决方案1】:

设备文件只是用户空间和内核之间通信的一种实用方式。一些设备文件(尤其是块设备)对它们有一个统一的 API,但这不是重点。

对于大多数标准操作,您不会直接与设备文件交互,而是使用库,公开记录的 API 来执行您想要的操作。所以,如果你想播放声音文件,你会使用,例如,libjack,甚至更高的抽象层,比如gstreamerlibvlc

这些库有可能甚至很可能使用设备文件进行实际输出。除非您愿意,否则您无需处理。

在其他情况下,您确实希望打开设备文件并与之交互。在这些情况下,您需要阅读相关文档以了解如何执行此操作。一些设备文件只接受readwrite 请求。其他的,例如tty 设备,有ioctl 命令来修改它们的工作方式。相关设备的手册页会告诉您需要了解的内容。

通常,许多人将设备文件视为内核 API 的扩展。事实上,许多人将ioctl 命令称为“用户定义的系统调用”。在所有情况下,只需阅读文档以了解您需要做什么。

【讨论】:

  • 你能给我这些文件的链接吗?
  • 不知道你想做什么,不。通常,转到您最喜欢的搜索引擎并输入界面名称。
  • dev/dsp - 数字信号处理器。基本上,这形成了产生声音的软件和声卡之间的接口。现在我可以在哪里找到它的文档。我在谷歌上找不到。
  • 搜索“linux dsp库”
猜你喜欢
  • 1970-01-01
  • 2013-07-10
  • 2017-04-04
  • 2018-07-28
  • 2016-06-10
  • 1970-01-01
  • 2023-02-10
  • 2015-01-02
相关资源
最近更新 更多