summaryrefslogtreecommitdiff
path: root/lib/tevent/tevent_select.c
AgeCommit message (Collapse)AuthorFilesLines
2013-03-01tevent: optimize adding new zero timer eventsStefan Metzmacher1-1/+1
Such events were used before we had immediate events. It's likely that there're a lot of this events and we need to add new ones in fifo order. The tricky part is that tevent_common_add_timer() should not use the optimization as it's used by broken Samba versions, which don't use tevent_common_loop_timer_delay() in source3/lib/events.c. Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
2013-03-01tevent: use DLIST_DEMOTE() before calling on fde handler after select() and ↵Stefan Metzmacher1-0/+1
poll() This makes sure we don't preferr events which are at the beginning of the list. Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
2013-03-01tevent: debug a FATAL message on EBADF from the select backendStefan Metzmacher1-0/+4
Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
2013-03-01tevent: Fix multiple handler on the same fd bug in the tevent select backend.Jeremy Allison1-2/+6
When we're deciding what handlers to call in the select backend, we didn't take into account the fact that the same fd may have been added into the read FD_SET and the write FD_SET but with different handlers. We must match on both the file descriptor and the flags requested before calling the handler. Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org>
2013-03-01tevent: remember the errno from select(), poll() and epoll_wait()Stefan Metzmacher1-2/+4
Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
2013-02-14tevent: Add in the same tevent_re_initialise() fix Metze put in the ↵Jeremy Allison1-0/+6
tevent_poll backend. We might be called during tevent_re_initialise() which means we need to free our old additional_data. Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org>
2012-06-08lib/tevent: Add trace point callbackMartin Schwenke1-0/+2
Set/get a single callback function to be invoked at various trace points. Define "before wait" and "after wait" trace points - more trace points can be added later if required. CTDB wants this to log long waits and events. Pair-programmed-with: Amitay Isaacs <amitay@gmail.com> Signed-off-by: Martin Schwenke <martin@meltin.net> Signed-off-by: Stefan Metzmacher <metze@samba.org>
2011-02-28Finish the range checking on all FD_SET calls for select().Jeremy Allison1-0/+10
Autobuild-User: Jeremy Allison <jra@samba.org> Autobuild-Date: Mon Feb 28 21:10:08 CET 2011 on sn-devel-104
2010-06-10tevent: Fix maxfd calculation in tevent_selectVolker Lendecke1-1/+2
When doing fd1 = tevent_add_fd(ev, ev, 2, 0, NULL, NULL); fd2 = tevent_add_fd(ev, ev, 3, 0, NULL, NULL); TALLOC_FREE(fd2); fd2 = tevent_add_fd(ev, ev, 1, 0, NULL, NULL); we end up with select_ev->maxfd==1. This is wrong. An alternative fix might be to make select_ev->maxfd an unsigned int and make EVENT_INVALID_MAXFD==UINT_MAX. But in theory we might end up with an fd of UINT_MAX. std_event_add_fd() contains exactly the same piece of code, so I'm directly pushing it. Volker
2010-04-18tevent: mark backend init fns as _PRIVATE_Andrew Tridgell1-1/+1
these are not supposed to be exposed in the library
2009-03-17tevent: add support for immediate eventsStefan Metzmacher1-11/+17
They're like directly triggered timed events, but you can preallocated them and scheduling them will not fail. metze
2009-03-17tevent: add tevent_common_loop_wait() helper function and use itStefan Metzmacher1-19/+1
tevent_loop_wait should do the same for all backends. It should loop as long as we have pending events. metze
2009-03-17tevent: check signal events first in event_loop_onceStefan Metzmacher1-0/+5
We also check for signal events directly before and after the select/epoll calls. metze
2009-03-17tevent: let tevent_loop_once() just run one fd eventStefan Metzmacher1-11/+2
This makes the logic much simpler for the callers, and matches the samba3 behavior. If needed we can add performance tunning for tevent_loop_wait() later. metze
2009-03-12tevent: pass __location__ to tevent_loop_once/wait()Stefan Metzmacher1-3/+3
metze
2009-02-17tevent: Rename ev_timeval* functions to tevent_timeval, export them.Kai Blin1-1/+1
Also add tevent_timeval_add() and tevent_timeval_current_ofs() to help not depending on lub/util/time.c for things that just need tevent
2009-02-16lib/tevent: change to LGPLv3+Stefan Metzmacher1-13/+17
metze
2009-01-05tevent: keep a linked list of fd_eventsStefan Metzmacher1-39/+16
metze
2009-01-05tevent: keep a linked list of signal eventsStefan Metzmacher1-2/+2
metze
2009-01-04tevent: completely initialize tevent_fd structsStefan Metzmacher1-0/+1
This fixes crash bugs... I forgot to commit and squash this to commit e45ed828d042acca09cb1ed5b6dd7a24eb5e7ffd metze
2009-01-03tevent: remove TEVENT_FD_AUTOCLOSE featureStefan Metzmacher1-3/+0
TEVENT_FD_AUTOCLOSE adds a dependency to SOCKET_WRAPPER, which is bad. Callers should use tevent_fd_set_close_fn() now. metze
2009-01-03tevent: add tevent_fd_set_close_fn()Stefan Metzmacher1-1/+5
Let callers specify a close function as an alternative to TEVENT_FD_AUTOCLOSE. metze
2009-01-03tevent: move some common tevent_fd related functions into tevent_fd.cStefan Metzmacher1-27/+2
metze
2009-01-02tevent: use TEVENT_FD_* instead of EVENT_FD_*Stefan Metzmacher1-5/+5
metze
2009-01-02tevent: rename ev_debug_ops => tevent_debug_opsStefan Metzmacher1-2/+2
And related changes, but we keep compat macros metze
2009-01-02tevent: pass down handler_name and location to the backend layerStefan Metzmacher1-9/+13
metze
2009-01-02tevent: rename event_register_backend() => tevent_register_backend()Stefan Metzmacher1-4/+3
And fix the callers and there init functions. metze
2008-12-29s4:lib/tevent: rename structsStefan Metzmacher1-16/+16
list="" list="$list event_context:tevent_context" list="$list fd_event:tevent_fd" list="$list timed_event:tevent_timer" for s in $list; do o=`echo $s | cut -d ':' -f1` n=`echo $s | cut -d ':' -f2` r=`git grep "struct $o" |cut -d ':' -f1 |sort -u` files=`echo "$r" | grep -v source3 | grep -v nsswitch | grep -v packaging4` for f in $files; do cat $f | sed -e "s/struct $o/struct $n/g" > $f.tmp mv $f.tmp $f done done metze
2008-12-29lib/tevent: rename event_* => tevent_* in the header fileStefan Metzmacher1-1/+1
We have compat macros to keep the callers happy. metze
2008-12-17s4:lib/tevent: add lib/events/ compat and let things compileStefan Metzmacher1-3/+3
metze
2008-12-17s4:lib/events: move to toplevel directory as lib/tevent/Stefan Metzmacher1-0/+302
This commit will not compile on its own. metze