xiaopeng14 发表于 2010-12-21 15:25

关于驱动中socket的轮询,很纠结,大家帮设计一下~

现在我一个驱动,很简单,用sock_create_kern来创建socket,然后利用sock_recvmsg去接收对应socket的数据,然后保存到相应的buffer中。。现在这个轮询套接口让我很郁闷。
因为有很多socket,这些socket不是一加载就生产,是交给应用层的程序去发送命令然后生成。一旦生成,工作线程就开始工作,不断的去轮询socket,不管是否有数据接收都一直轮询,这个时候如果没有数据光一个死循环的话就会将CPU耗光,其他操作根本等不到CPU。感觉这样很浪费CPU。
现在我就想找一种像应用层程序那样的io复用机制,像select,epoll那样的,可以根据是否有数据来而去接收数据,而不用一直转线程来接收,这样可以减少CPU的工作。。。
现在我在驱动找不到这样的一种方法,请问大家是否有方法解决,请大家多多指教。。。
thanks。

star316 发表于 2010-12-24 14:01

为什么一直轮循而不睡眠,驱动通知应用程序也可以用fasync
页: [1]
查看完整版本: 关于驱动中socket的轮询,很纠结,大家帮设计一下~