linux驱动之poll

时间:2025-04-20 08:10:32

驱动中 poll 实现

在用户空间实现事件操作的一个主要实现是调用 select/poll/epoll 函数。那么在驱动中怎么来实现 poll 的底层呢?
其实在内核的 struct file_operations 结构体中有一个 poll 成员,其就是底层实现的接口函数。

驱动中 poll 函数实现原理

创建等待队列头;
将传入的队列挂入创建的队列头;

根据标志返回不同的值:

  • 0 表示没有时间
  • POLLIN等,表示有事件触发;

事件由操作完成后设置

需要两个条件:
等待队列头 和 事件触发标志