Poll裝置操作(國嵌筆記)

2021-06-29 01:25:43 字數 1083 閱讀 5680

poll裝置操作

使用者空間中的select對應核心中的poll

1.select系統呼叫用於多路監控,當沒有乙個檔案滿足要求時,select將阻塞呼叫程序。

int select(int maxfd,fd_set *readfds,fd_set *writefds,fe_set *exceptfds,const struct timeval *timeout)

maxfd:檔案描述符的範圍,比待檢測的最大檔案描述符大1即可

readfds:被讀監控的檔案描述符

writefds:被寫監控的檔案描述符

exceptfds:被異常監控的檔案描述符

timeout:定時器,0:不管是否滿足要求,都會立即返回。null:select將阻塞,直到某個檔案滿足要求。正整數:就是等待的最長時間,即select在timeout時間內阻塞程序

2.返回值:正常情況下,返回滿足要求的檔案描述符個數,經過timeout等待後仍無檔案滿足要求,返回0;select被某個訊號中斷,返回-1並設errno為eintr;如果出錯,返回-1並設定相應的errno

3.使用步驟:

1.將要監控的檔案新增到檔案描述符集

2.呼叫select開始監控

3.判斷檔案是否發生變化

系統提供了4個巨集來對描述符集來進行描述

#include

fd_set,fd_clr,fd_sero,fd_isset

4.poll方法

原型:unsigned int(*poll)(struct file *filp,poll_table *wait)

poll裝置方法負責完成

1.使用poll_wait將等待佇列新增到poll_table

2.返回描述裝置是否可讀或可寫的掩碼(pollin,pollrdnorm等)

5.範例

static unsigned int mem_poll(struct file *filp,poll_table *wait)

6.工作原理

poll方法只是做乙個登記,真正的阻塞發生在select.c中的do_select函式。

do_select中根據返回的掩碼來決定是否發生阻塞(通過排程)

poll裝置方法

當應用程式需要進行對多檔案讀寫時,常用到poll system v select bsd unix epoll linux2.5.45開始 沒驗證 系統呼叫配合使用。當poll函式返回時,會給出乙個檔案是否可讀寫的標誌,應用程式根據不同的標誌讀寫相應的檔案,實現阻塞或非阻塞的讀寫。這些系統呼叫功能相...

7 4 POLL裝置方法

系統呼叫 使用者空間 驅動 核心空間 open open close release read write ioctl ioctl lseek llseek select poll select系統呼叫 用於多路監控,當沒有乙個檔案滿足要求時,select將阻塞呼叫程序。int select max...

Linux 裝置驅動poll輪詢程式設計

linux系統下網路模型數select最為常用,當然,select只是檢測檔案系統資料狀態,並不只侷限於網路程式設計,select的功能需要底層驅動提供支援,其中核心應用即為等待佇列,其他模型,如poll和epoll,對驅動來說並無區別,驅動只是返回資料狀態而已。驅動支援select,需要實現fil...