新聞中心
poll技術是一種硬件驅動程序或協(xié)議棧等機制循環(huán)檢查狀態(tài)的技術。與中斷(interrupt)技術比較,poll技術更加節(jié)能,因為它可以在不引起系統(tǒng)中斷的情況下檢測到狀態(tài)的變化。在linux系統(tǒng)中,poll技術的使用也越來越多。

poll技術的關鍵組件是poll()系統(tǒng)調用。poll()用于處理未向必經(jīng)文件(及其他描述符)請求讀取或寫入數(shù)據(jù)而沒有反饋結果的情況。poll()將所有這些描述符對象存入 epoll 系統(tǒng)調用中,它會一致地檢查(busy poll)這些描述符對象,并在發(fā)現(xiàn)任何改變時返回結果。
poll技術的應用領域也非常廣泛,例如在硬編碼(hard-coded)型網(wǎng)絡驅動程序中,它常常用于檢查設備收到的幀是否正確。此外,poll技術也廣泛應用于多任務系統(tǒng),通過將多個任務放入一個epoll集中進行檢查,可以減少碎片化任務檢查,從而提高系統(tǒng)的效率。
從上文可以看出,poll技術非常有用,它比中斷技術更加節(jié)能,這使得它在Linux系統(tǒng)中越來越受歡迎。下面是一個簡單的poll技術的實現(xiàn)代碼:
/*poll技術的實現(xiàn)*/
#include
int pollfd;
struct pollfd fds;
void init_pollfd()
{
fds.fd = pollfd;
fds.events = POLLIN;
}
int main()
{
//我們分別檢查pollfd中文件描述符的可讀性,超時時間為60秒
int ret = poll(&fds, 1, 60000);
if (ret == 0)
{
//超時,不做任何操作
}
else if (ret == -1)
{
//poll出錯
}
else
{
if (fds.revents & POLLIN)
//pollfd中有數(shù)據(jù)可讀
// else if (fds.revents & POLLOUT)
// pollfd中可以寫數(shù)據(jù)
}
return 0;
}
以上就是關于Linux驅動中poll技術的一些深入探究。poll技術與中斷技術相比具有節(jié)能、檢測效率高等優(yōu)點,因此在Linux系統(tǒng)中被廣泛應用。
香港服務器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務提供商,擁有超過10年的服務器租用、服務器托管、云服務器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務器、香港云服務器、免備案服務器等。
網(wǎng)站欄目:深入探究:Linux驅動中的poll技術(linux驅動poll)
URL地址:http://www.5511xx.com/article/ccdogej.html


咨詢
建站咨詢
