Информация об изменениях

Сообщение статья про epoll от 12.06.2024 0:47

Изменено 12.06.2024 1:25 maks1180

статья про epoll
Прочитал полезную статью про epoll, но что-то не совсем понятно, кажется что перевод был машинный и с ошибками.
https://habr.com/ru/companies/ruvds/articles/523946/ часть 1
https://habr.com/ru/companies/ruvds/articles/526582/ часть 2
https://habr.com/ru/companies/ruvds/articles/526802/ часть 3
https://habr.com/ru/companies/ruvds/articles/527174/ часть 4

Вот что я понял из статьи:

1) epoll_ctl() региструрует callback функцию которая собирает event от файлового дескриптора, который передали.
2) при вызове epoll_wait(), обрабатывает все event которые были получены через callback функцию, составляет ready list список.
Вызывает vfs_poll() для каждого файла из ready list, что-бы проверить действительно ли он имеет available for read или available for write ?
если имеет, то отдаёт пользователю.
3) если не установлен EPOLLET, то добавляем в ready list, для следующего вызова epoll_wait().

Вот это интересно, получается с EPOLLET будет быстрее работать ?

Что делает vfs_poll ? Где можно информацию почитать, кроме исходников ?

Какие события для TCP сокетов, передаются через callback функцию ?
статья про epoll
Прочитал полезную статью про epoll, но что-то не совсем понятно, кажется что перевод был машинный и с ошибками.
https://habr.com/ru/companies/ruvds/articles/523946/ часть 1
https://habr.com/ru/companies/ruvds/articles/526582/ часть 2
https://habr.com/ru/companies/ruvds/articles/526802/ часть 3
https://habr.com/ru/companies/ruvds/articles/527174/ часть 4

Вот что я понял из статьи:

1) epoll_ctl() региструрует callback функцию которая собирает event от файлового дескриптора, который передали.
2) при вызове epoll_wait(), обрабатывает все event которые были получены через callback функцию, составляет ready list список.
Вызывает vfs_poll() для каждого файла из ready list, что-бы проверить действительно ли он имеет available for read или available for write ?
если имеет, то отдаёт пользователю.
3) если не установлен EPOLLET, то добавляем в ready list, для следующего вызова epoll_wait().

Или по другому, но тот же смысл:
1) при EPOLLET проверяет файл при добавлении или если были события по нему с момента последнего вызова epoll_wait
2) при !EPOLLET проверяет файл, как при п.1 плюс еще если в прошлый вызов epoll_wait файл попал в ready list

Вот это интересно, получается с EPOLLET будет быстрее работать ?

Что делает vfs_poll ? Где можно информацию почитать, кроме исходников ?

Какие события для TCP сокетов, передаются через callback функцию ?