Linux poll机制详细讲解




Linux poll机制详细讲解

2022-07-20 20:23:51 网络知识 官方管理员

所有的系统调用,基于都可以在它的名字前加上sys_前缀,这就是它在内核中对应的函数。比如系统调用open、read、write、poll,与之对应的内核函数为:sys_open、sys_read、sys_write、sys_poll。

一、内核框架:

对于系统调用poll或select,它们对应的内核函数都是sys_poll。分析sys_poll,即可理解poll机制

1.

sys_poll函数位于fs/select.c文件中,代码如下:

asmlinkagelongsys_poll(structpollfd__user*ufds,unsignedintnfds,longtimeout_msecs){s64timeout_jiffies;if(timeout_msecs>0){#ifHZ>1000/*WecanonlyoverflowifHZ>1000*/if(timeout_msecs/1000>(s64)0x7fffffffffffffffULL/(s64)HZ)timeout_jiffies=-1;else#endiftimeout_jiffies=msecs_to_jiffies(timeout_msecs);}else{/*Infinite(<0)orno(0)timeout*/timeout_jiffies=timeout_msecs;}returndo_sys_poll(ufds,nfds,&timeout_jiffies);}

发表评论:

最近发表
网站分类
标签列表