summaryrefslogtreecommitdiff
path: root/source4/lib/events/events_standard.c
AgeCommit message (Collapse)AuthorFilesLines
2007-10-10r23792: convert Samba4 to GPLv3Andrew Tridgell1-3/+2
There are still a few tidyups of old FSF addresses to come (in both s3 and s4). More commits soon. (This used to be commit fcf38a38ac691abd0fa51b89dc951a08e89fdafa)
2007-10-10r23301: merged from ctdbAndrew Tridgell1-0/+2
(This used to be commit 76b981fcefb0dff24ac7d543da70fbb487ed7072)
2007-10-10r22985: don't do checkins late at night ....Andrew Tridgell1-2/+0
thanks to Volker for spotting this! (This used to be commit d28fc5f87fd4d9a9843d1295fe2a181922a476fc)
2007-10-10r22971: fix build on systems without epollAndrew Tridgell1-0/+1
(This used to be commit 146303d91b4c64c87c356c3ed44ccb5774297a71)
2007-10-10r22970: the events code calls close(), which needs to use socket_wrapper.h inAndrew Tridgell1-0/+1
the build farm (This used to be commit 603d8b6f1702d10234b81ccde0649d8be63ae616)
2007-10-10r22968: andrew bartlett pointed out that the parent process could add a fd toAndrew Tridgell1-11/+11
the epoll context which would then appear in the children. To fix this we need to check for pid changes in more places. Luckily on platforms where we have epoll(), getpid() is very very cheap. (This used to be commit 4f84e6d569f9c9d7dd902f4550735f3ce2d3b424)
2007-10-10r22964: log an error on epoll_create failing on reopenAndrew Tridgell1-0/+1
(This used to be commit a69f28599845d3ea3868a574c6b0ba8db8486ef5)
2007-10-10r22959: cope with a rather interesting interaction between epoll() andAndrew Tridgell1-1/+41
fork(). See http://junkcode.samba.org/ftp/unpacked/junkcode/epoll_fork.c for why this is needed (This used to be commit 6d06132ea9c5a1c7d098ba13f4146dc60e811e44)
2007-10-10r22830: merged the latest lib/events updates from ctdb to Samba4. ThisAndrew Tridgell1-6/+11
includes a new EVENT_FD_AUTOCLOSE flag that prevents race conditions where code using fd events might close a fd before releasing the struct fd_event. That causes headaches for epoll. (This used to be commit f1ad216de13b154a1f8747a44b0970dcc47a784a)
2007-10-10r22661: optimize the handling of directly triggered timed events:Stefan Metzmacher1-5/+5
- if someone adds a timed_event with a zero timeval we now avoid serval gettimeofday() calls and the event handler doesn't get the current time when it's called, instead we also pass a zero timeval - this also makes sure multiple timed events with a zero timeval are processed in the order there're added. the little benchmark shows that processing 2000000 directly timed events is now much faster, while avoiding syscalls at all! > time ./evtest (with the old code) real 0m6.388s user 0m1.740s sys 0m4.632s > time ./evtest (with the new code) real 0m1.498s user 0m1.496s sys 0m0.004s metze@SERNOX:~/devel/samba/4.0/samba4-ci/source> cat evtest.c #include <stdio.h> #include <stdint.h> #include <sys/time.h> #include <talloc.h> #include <events.h> static void dummy_fde_handler(struct event_context *ev_ctx, struct fd_event *fde, uint16_t flags, void *private_data) { } static void timeout_handler(struct event_context *ev, struct timed_event *te, struct timeval tval, void *private_data) { uint32_t *countp = (uint32_t *)private_data; (*countp)++; if (*countp > 2000000) exit(0); event_add_timed(ev, ev, tval, timeout_handler, countp); } int main(void) { struct event_context *ev; struct timeval tval = { 0, 0 }; uint32_t count = 0; ev = event_context_init(NULL); event_add_fd(ev, ev, 0, 0, dummy_fde_handler, NULL); event_add_timed(ev, ev, tval, timeout_handler, &count); return event_loop_wait(ev); } (This used to be commit 4db64b4ce2320b88d648078cbf86385f6fb44f1f)
2007-10-10r22634: make the events system much less dependent on the samba4 build systemAndrew Tridgell1-4/+14
(This used to be commit b0c8c1cd21e3f91431504d70a4bc0d3c6dee6071)
2007-10-10r22632: merged volkers select events fixAndrew Tridgell1-1/+2
(This used to be commit 216aa06fe634f98dce3f157e67303e90ddb70e2d)
2007-10-10r21171: fixed a bug related to recursive event handling.Andrew Tridgell1-2/+2
If this happens: - two sockets are readable, and select/epoll/aio returns both of them - read event on socket1 is called - inside that read event an event_loop_once is called, this returns that socket2 is readable - read event on socket2 is called - event_loop_once returns - top level event handler then calls read event on socket2 (as it still has that listed as readable) - read handler for socket2 returns zero byte read, which is interpreted as end of file - socket is incorrectly closed this happened with ctdb, but it could happen anywhere (just rarely). The fix is trivial - ensure we break out of the event loop when we have been called recursively. (This used to be commit e042002bb5ee8974220e1ade56b64389571f75a6)
2007-10-10r20928: added signal events to lib/eventsAndrew Tridgell1-0/+23
Jeremy asked for this to allow Samba3 to use the Samba4 events library see torture/local/event.c for an example (This used to be commit 7e105482ff9a3da6b4708ff99a64f1881614fc5f)
2007-10-10r20539: - split the common timer related events code into events_timed.cAndrew Tridgell1-117/+15
- make it easier to plug in a new events backend - add simpler 'select' and 'epoll' backends This is part of the effort to add good AIO support. The events_aio.c backend is done, but sometimes dies with a SEGV, which is why it isn't enabled yet. (This used to be commit 934f18283dbc7958944931a93a854526bcd54884)
2007-10-10r17930: Merge noinclude branch:Jelmer Vernooij1-1/+1
* Move dlinklist.h, smb.h to subsystem-specific directories * Clean up ads.h and move what is left of it to dsdb/ (only place where it's used) (This used to be commit f7afa1cb77f3cfa7020b57de12e6003db7cfcc42)
2007-10-10r15854: more talloc_set_destructor() typesafe fixesAndrew Tridgell1-8/+4
(This used to be commit 61c6100617589ac6df4f527877241464cacbf8b3)
2007-10-10r13699: restore the system/select.h include, as otherwise we don't detectAndrew Tridgell1-0/+1
epoll support (This used to be commit 71eb159f9cc00e8de23a8700cea0e7a3be8c64d4)
2007-10-10r12844: don't include system headers directlyStefan Metzmacher1-9/+1
metze (This used to be commit 75a98047d6829cadf4b9082bec2733055dad3465)
2007-10-10r12153: work arround the fact that epoll reports EPOLLERR and EPOLLHUP, even ifStefan Metzmacher1-10/+87
you don't ask for. with this patch the epoll mode behaves like the select mode metze (This used to be commit f26c28a3ae7951657cc304659f3d19c16f462dd8)
2007-10-10r12146: as epoll notifies EPOLLERR and EPOLLHUP implicit,Stefan Metzmacher1-2/+2
let our code make it explicit, to make it clear metze (This used to be commit cf733e2684ab0d43d83b1ab5c9d178d895f768a1)
2007-10-10r12141: - move epoll related code into one big #ifdef, and use dummy #define'sStefan Metzmacher1-160/+174
for the case where, epoll isn't available at compile time - only pass the private std_event_context, to the local function, to get rid of the talloc_get_type() calls - use the private pointer to std_event_context_init() to decide if we want to disable epoll at runtime metze (This used to be commit de322ea8b761df5434e60879b7eae3796ea68007)
2007-10-10r12140: - add an additional_flags field to the fd_event struct, so thatStefan Metzmacher1-0/+1
the events backend can store private flags - add function to access the gtk event loop ops struct metze (This used to be commit a5cc0758a393f36a770cdd57e317214d03934c13)
2007-10-10r12123: handle fde == NULL at the correct levelStefan Metzmacher1-6/+3
metze (This used to be commit 1dd5bb60a5047b94034eb084473bb8f4a9926e7c)
2007-10-10r10690: Fix a bug that metze pointed out: Leaving the "rejecting" destructor ↵Volker Lendecke1-0/+1
around prevents the memory from being freed. Thanks, Volker (This used to be commit df8eeb01f498568207a4a8d5d12348c473f41799)
2007-10-10r10684: Add a nasty hack for the failure case of wbinfo -t. Tridge has a ↵Volker Lendecke1-1/+9
proper fix for it pending. Also fix a bug with timed events: Don't call the same event recursively in the handler's inner semi-async event loop. Volker (This used to be commit e38e50127a3414461578421e676a9c58c106c272)
2007-10-10r10537: - we now use a much nicer way to handle talloc_free(timed_event)Stefan Metzmacher1-9/+9
the events code replaces a destructor to one that returns allways -1 while it's calling the event handler - we don't need the composite and winsrepl specific fixes any more - this also fixes the problem with smbcli, dcerpc, cldap, ldap and nbt request timeouts metze (This used to be commit 495996cfc49a1c6eefde6ff04fc75e0739be3aab)
2007-10-10r8886: Exchange the arguments of timeval_compare, this makes it behave like ↵Volker Lendecke1-1/+2
strcmp. Volker (This used to be commit 6f5bd7602155413029de32295d2639c4073ad4d8)
2007-10-10r8875: Rename timeval_diff to timeval_until and revert the arguments. ↵Volker Lendecke1-1/+1
timeval_diff is not strictly a subtraction function, there can't be negative timevals. Volker (This used to be commit 525d75dd24f6a8810f1ed2043d170c70b060f1f0)
2007-10-10r8409: fixed another error found on netbsd.Andrew Tridgell1-8/+13
some of our torture code does its own timeout processing, which means there is no event timer in the event context. To fix this gererically I have added a 30 second timout to all select/epoll calls so the callers timeout loop is guaranteed to run eventually (This used to be commit 01e5aa146439f2dbf6c4133a0b5d910383a6576b)
2007-10-10r6147: The maxfd was being recalculated on every event loop, which made usAndrew Tridgell1-1/+0
less scalable. It only needs to be recalculated when we the highest fd is destroyed. (This used to be commit 568b9175f329f594404c9091ee5946670c40697e)
2007-10-10r5437: Allow Samba4 to be compiled by tcc (www.tinycc.org). It still crashes ↵Jelmer Vernooij1-3/+3
when linking though. (This used to be commit 2e1e8db6dc877eb32b51cfc3d9c8f463d14530ec)
2007-10-10r5407: - this patch makes samba's event loop code more generic and makesStefan Metzmacher1-183/+183
using other implementations possible. This will be mostly usefull for client apps which have there own event loop and want to use our client libs - add a example plugin for liboop (see http://liboop.org) NOTE: this just compiles and is completly untested and is commited only as example metze (This used to be commit b3d0a410efe856e3bcf127f00c31905f5a23cc04)
2007-10-10r5393: trigger timed events not to early, better do it a bit to lateStefan Metzmacher1-1/+2
metze (This used to be commit 67bf637e9a44202061fd71c92142f835ba76da89)
2007-10-10r5373: prepare infrastructure for maing different eventsStefan Metzmacher1-0/+540
implementations possible metze (This used to be commit dd77ec754b811feb147458d76fa16833767dccea)