我正在开发一个linux内核模块,我需要从串口(字符)读取数据。我希望将字符(例如:'D‘、'T’和'-')设置为来自串行端口的条目,并希望阅读这些条目。我花了很长时间尝试使用"inb(0x3f8)“和"termios”,但都没有成功。但是,使用"outb“正确地编写数据,我已经将Ubuntu10.10作为系统安装在我设置的VirtualBox上的VBox配置上的来宾:
activated serial port
port number : COM1 IRQ 4 PORT I/O : 0x3f8
Port/p
据我所知。Linux是异步通知。当文件描述符变得可读/可写/可接受时,epoll_wait将返回这个fd。但是读写仍然是同步的,会阻塞线程。因此Redis6.0使用线程池来处理网络io。
Windows IOCP和Linux是预言家。当io_uring_enter返回时,读取的数据已经放置在缓冲区中,写缓冲区全部已经写入。
我的问题是:
负责复制这些缓冲区数据的?仍然会阻塞当前线程?如果是,如何加快线程池的使用?