(e)poll takeover

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi

I have tried to find a way to have a thread take over the event waiting from 
another thread. This should be done without context switching.

A more precise description:

1. Thread A are waiting in poll or epoll.
2. Thread B decides to take over the waiting. This means stopping thread A 
from responding to new events and go into a (e)poll for the same events.
3. After handling some events thread B decides to let thread A take over 
again.

This should be done without context switching. At least in step 3.

The only way I can think of is using two epoll fd's (e0 and e1). e0 should
just contain e1 and e1 should contain the actual events:

Thread A:
 epoll_wait(e0)
 epoll_wait(e1)
 /*handle events*/

Thread B (takeover):
 epoll_ctl(e0, remove e1)
 epoll_wait(e1)
 /*handle events*/
 .
 .
 epoll_ctl(e0, add e1)


I have left out the synchronization.

Is there a better way to do this. Perhaps one that also work with plain 
poll().

Hans  
-
: send the line "unsubscribe linux-net" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux