Nice work! Re: EXPERIMENTAL: tevent_kqueue support

Jeremy Allison jra at samba.org
Wed Mar 6 13:04:31 MST 2013


On Wed, Mar 06, 2013 at 03:02:32PM -0500, Simo wrote:
> On 03/06/2013 02:57 PM, Jeremy Allison wrote:
> >On Wed, Mar 06, 2013 at 10:47:05AM -0500, Ira Cooper wrote:
> >
> >>On Wed, Mar 6, 2013 at 10:18 AM, Stefan (metze) Metzmacher <metze at samba.org>
> >>
> >>      Solaris/illumos has /dev/poll, correct?
> >>      I haven't looked into details, but that should provide the same
> >>      features
> >>      as poll(),
> >>      which means the kernel reports POLLIN and POLLOUT together.
> >>
> >>In re-reading the doc, for port_associate, I think you are right.  It'll do
> >>that.  But it will only give 1 event per fd.
> >>
> >>http://docs.oracle.com/cd/E23824_01/html/821-1465/port-associate-
> >>3c.html#scrolltoc
> >We should be able to build a tevent backend on top of port_create()/
> >port_associate()/port_getn() and friends.
> >
> >The only tricky bit I see is re-adding the fd events that have
> >fired back (as port_getn() "helpfully" removes them once they've
> >triggered :-).
> >
> >Same for kqueue I think.
> 
> Shouldn't be too difficult you just need an inner wrapping for
> tevent_fd_add and friends so that the callbacks goes first through
> an internal callback that readds the fd once the event has been
> dealt with by the 'real' callback and unless it has been modified by
> the callback of course.
> 
> event fires
>   \-> internal callback
>       | \-> real callback
>       \--re-add event

Yep. The reason I think adding both these systems is possible
for tevent is :

git clone https://github.com/libevent/libevent.git

which already has both systems plumbed in :-). Learn from
the best as I always say :-).

Jeremy.


More information about the samba-technical mailing list