【问题标题】:Read/Write system call reads/writes data from/to which buffer读/写系统调用从/向哪个缓冲区读取/写入数据
【发布时间】:2013-08-22 18:15:30
【问题描述】:

我正在使用串口编程,我有以下疑问请清除它

  1. Read/Write 系统调用是否直接从 UART 缓冲区读取和写入数据?
  2. /proc/tty/driver/serial”的 Rx 和 Tx 指的是哪个缓冲区。

请澄清。

【问题讨论】:

    标签: c linux serial-port


    【解决方案1】:

    read()write()通过调用open()返回的所谓文件描述符访问数据。

    open() 以串行设备的名称传递。

    串行设备可以命名为"/dev/ttySX"X={0..N}

    【讨论】:

      【解决方案2】:

      你为什么担心:

      Read/Write 系统调用是否直接从/向读取和写入数据 UART缓冲区?

      无论文件是设备还是数据文件,内核都会处理对文件的实际读/写调用,在设备的情况下,将对相关设备进行 IOCTL 调用并在后台处理它。

      “/proc/tty/driver/serial”的Rx和Tx指的是哪个缓冲区。

      同样,这是由内核和相关的 IOCTL 调用串行驱动程序通过设备描述符到实际串行端口来处理的。

      如果仍有疑问,建议复习一下 Linux/FreeBSD 等 Un*x 环境下的串行端口编程。

      【讨论】:

      • Meta Stack Overflow在所有文章中他们都指定在缓冲区中没有数据时读取系统调用块,但他们没有提到是用户空间缓冲区还是内核空间缓冲区,请澄清它。
      猜你喜欢
      • 2021-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-30
      • 1970-01-01
      • 2019-02-28
      • 2020-11-11
      相关资源
      最近更新 更多