выбор драйвера устройства Linux/поддержка epoll

Я читаю Linux Device Driver 3rd. В главе 6: опрос и выбор автор говорит:

"*unsigned int (*poll) (struct file *filp, poll_table wait); метод драйвера вызывается всякий раз, когда программа пользовательского пространства выполняет системный вызов poll, select или epoll с использованием файлового дескриптора, связанного с драйвером ."

Итак, если у меня есть сотни fd в моем вызове epoll, каждый раз, когда я достигаю epoll(), этот опрос в драйвере будет вызываться сотни раз?

Спасибо.


person doufunao    schedule 13.08.2012    source источник


Ответы (1)


Да, ядро ​​будет перебирать все файловые дескрипторы и вызывать метод poll(). Ему необходимо сэмплировать текущее состояние всех файловых дескрипторов, чтобы сообщить о них вызывающей стороне в пользовательском пространстве.

Обратите внимание, что это верно для выбора и опроса, я не знаком с epoll, но если он использует ту же файловую операцию, то это должно применяться и здесь.

person MikeK    schedule 10.01.2013