Epoll (tapahtumakysely) on multipleksoitu I/O-sovellusliittymä, jonka Linux tarjoaa sovelluksille. Sovellusliittymän avulla sovellukset voivat valvoa useita avoimia tiedostokuvauksia (jotka voivat olla tiedostoja, laitteita tai pistokkeita, mukaan lukien verkkopistokkeet) nähdäkseen, onko laite valmis jatkamaan syöttämistä (tulostusta). Epoll oli tarkoitettu POSIXin määrittämien select()ja kutsujen tehokkaammaksi korvaajaksi . Epoll voi tarjota tehokkaamman mekanismin sovelluksille, jotka käsittelevät suurta määrää samanaikaisesti avoimia yhteyksiä O(1)-monimutkaisuudella verrattuna tavalliseen O(n)-mekanismiin. Epoll on samanlainen kuin Kqueue- järjestelmäpoll()FreeBSD ja se on myös ydinobjekti, joka on tarkoitettu toimimaan käyttäjätilassa tiedostokuvaajan muodossa .
Analogisesti "epoll" kutsutaan usein muiksi samanlaisiksi ratkaisuiksi, jotka ovat metodologialtaan samanlaisia.
Käyttääkseen valintaa tai kyselyä sovelluksen on välitettävä ytimelle täydellinen luettelo kaikista tiedostokuvauksista, joissa se odottaa tietojen näkyvän. ja ytimen tulee puolestaan tarkistaa kunkin läpäisyn elementin kuvaajien tila ja muodostaa rakenne, joka kuvaa kunkin hyväksytyn kuvaajan tilaa. Tämä lähestymistapa ei aiheuta monia ongelmia kymmenien tai satojen kuvaajien suhteen. Suorituskyky suurissa verkoissa kuitenkin laskee huomattavasti.
Linux tarjoaa seuraavat API-kutsut:
int epoll_create(int size);
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);
Kuinka se toimii: Kun sovellus on lisännyt kuvaajia kelloon ja kutsunut epoll_wait(), kun mikä tahansa kuvaaja on valmis (tietojen ilmestyminen, puskurin tyhjennys jne.), ydin palauttaa sovelluksen osoitteesta epoll_wait luettelon tiedostokuvauksista, jotka ovat valmiita töihin. Jos jotkin kuvaajat ovat valmiita käytettäviksi ennen epoll_wait-kutsua, ne merkitään vastaavasti, ja seuraavan kerran epoll_wait-kutsussa ohjaus palautetaan sovellukselle välittömästi ja tiedostokuvaajat ovat valmiina.
Tapahtumat, joita voidaan seurata epollin avulla:
epollin avulla voit työskennellä kahdessa tilassa:
Jos sovellus luki vain osan luettavasta tiedosta tiedostokuvauksesta, niin seuraavassa kutsussa:
Vuodesta 2.6.28 lähtien /proc/sys/fs/epoll/max_user_watches määrittää tiedostokuvaajien enimmäismäärän, joita käyttäjä voi katsella.