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