summaryrefslogtreecommitdiff
path: root/source4/lib/events
AgeCommit message (Collapse)AuthorFilesLines
2007-10-10r24502: More work to get LOCAL-EVENT passing on all platforms:Andrew Bartlett1-11/+18
- Make the epoll_event_context_init() call fail if epoll_create() fails. This should cause this backend to be skipped on host with epoll() in libc but not in the kernel. - At the moment, there is no sensible way to handle failures to add an epoll() event, and 'fallback to select' is misnamed (so we now abort()). Andrew Bartlett (This used to be commit fb1e1eebdae740a2b66ee1ea9e1e35f21292ac14)
2007-10-10r23792: convert Samba4 to GPLv3Andrew Tridgell10-30/+20
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 Tridgell3-0/+6
(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 Tridgell3-0/+3
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 Tridgell3-33/+33
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 Tridgell3-1/+4
(This used to be commit a69f28599845d3ea3868a574c6b0ba8db8486ef5)
2007-10-10r22963: fixed the epoll/fork interaction in the epoll and aio backendsAndrew Tridgell2-0/+86
(This used to be commit aeca07659aa612bee0c4dd6bdbb24c799e912909)
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 Tridgell9-8/+74
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 Metzmacher6-48/+60
- 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 Tridgell8-21/+69
(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-10r21299: Fix the build for those that don't have talloc.h installed.Jelmer Vernooij1-1/+1
(This used to be commit e782035251fd3d51a7a4221d107519fb1ba70ba7)
2007-10-10r21297: Remove the GTK+ tools and library from the main repository. They are ↵Jelmer Vernooij2-0/+4
now maintained separately in bzr at http://people.samba.org/bzr/jelmer/samba-gtk This also adds some more headers to the list that is installed and a couple of extra #include lines so these headers can be used externally without problems. (This used to be commit 07652f65ce7a5b19130f1a27cbf0e1e5fae13454)
2007-10-10r21212: detect if the kernel does not support integrated epoll/aio when theAndrew Tridgell1-1/+11
event context is created. This allows the LOCAL-EVENT test to pass on systems with have libaio but not the necessary kernel patches (This used to be commit 2ff8abf0022824e6ae93019ee1b3391e651a8ee7)
2007-10-10r21171: fixed a bug related to recursive event handling.Andrew Tridgell4-11/+7
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-10r20989: don't mark epoll as set until after the io_submit() succeedsAndrew Tridgell1-1/+1
this is part of the solution to LOCAL-EVENT on fort (This used to be commit 35f62bc12559e355d4ac73018afe255ea7c5866b)
2007-10-10r20984: Try to ensure we can't have sig_state dissapear before se.Andrew Bartlett1-0/+5
I think this happens when both are eventual children of the autofree context. (Trying to track down a valgrind error on fort). Andrew Bartlett (This used to be commit aee751497ca738fa0de72dd0748590a74d5af2fd)
2007-10-10r20960: attempt to fix a valgrind error in the signals backend.Andrew Tridgell1-38/+48
This also reduces the static data in the signal backend when not using signals to 4 bytes. (This used to be commit 071a6e8eb1861b10b8a7aa61470f21a546ffa0ca)
2007-10-10r20941: avoid races in the block/unblock codeAndrew Tridgell1-3/+11
(This used to be commit 83353ec0cd05464abb581f51d8c26ade7f0876fe)
2007-10-10r20940: allow SA_SIGINFO signals to be oneshot. Why you would ever want thisAndrew Tridgell1-0/+3
is beyond me :-) (This used to be commit e892cbdb4bb0779f8abb0902bee4a2e79456808d)
2007-10-10r20939: reduce the amount of static state for signal handlers from 96k to 1.2kAndrew Tridgell1-4/+23
(This used to be commit bf060ce4fe3b58fc3e58214490c4da9c6644c365)
2007-10-10r20938: use a double counter trick to avoid the need for atomic incrementAndrew Tridgell1-10/+31
(This used to be commit 7c7b79ed042abebc48d8eaa71c252df3200a84d9)
2007-10-10r20934: I *hate* deep indents :-)Volker Lendecke1-26/+28
(This used to be commit c98dd55e32a1d2df016e7a4deba218cd54efcdd2)
2007-10-10r20930: use sigaction() instead of signal()Andrew Tridgell4-11/+87
add support for sa_flags argument to event_add_signal(). These are passed to sigaction(). Special handling is provided for SA_RESETHAND (which tells the event system to remove the handler after the signal) and SA_SIGINFO which allows the siginfo structure to be received per signal (This used to be commit 1bb10b6cf7d717ad21834e73a4ca4b22b5fb6f0a)
2007-10-10r20929: fixed typoAndrew Tridgell1-4/+4
(This used to be commit bad87e2c82208646c331507d3999a3311ed153d9)
2007-10-10r20928: added signal events to lib/eventsAndrew Tridgell10-2/+261
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-10r20794: hopefully fix the build on systems without native linux aioStefan Metzmacher1-1/+1
metze (This used to be commit 4787b8e1f7a7bb6b1e0f8ca64a27e4c5e6f53c2c)
2007-10-10r20788: - remove epoll configure checks from libreplaceStefan Metzmacher3-17/+15
- fix epoll configure checks for the epoll and aio events backends - we should only activate the epoll backend if sys/epoll.h and epoll_create() are found - we should only activate the aio backend if sys/epoll.h, epoll_create(), libaio.h and io_getevents() are found hopefully fix the build on 'bnhtest' in the build farm... metze (This used to be commit d46a5efb03ea1df50567cad00e1589870cdb31fe)
2007-10-10r20787: a subsystem doesn't need explicit dependencies to its modulesStefan Metzmacher1-1/+1
metze (This used to be commit 017cf3f13799b03e0aef995bc4fa9ae74bc1acb7)
2007-10-10r20623: change where the smb.conf parm event:backend is checked to ensure itAndrew Tridgell1-4/+6
affects all event_context_init() calls (This used to be commit 803e6cf6ef5caaf7c9faefcc111c97e1a97e9b82)
2007-10-10r20621: - enable the aio events backend on systems that support itAndrew Tridgell3-7/+19
- allow the events backend to be chosen in smb.conf (This used to be commit 4a8e07286f827a6f57b2c54d97d31172553ceb0d)
2007-10-10r20540: darn, also need to fix this event_context referenceAndrew Tridgell1-2/+2
(This used to be commit c8bd3ec09d3c370475df3a3cd77de6743b316c9e)
2007-10-10r20539: - split the common timer related events code into events_timed.cAndrew Tridgell10-265/+1137
- 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-10r20104: this is a alternative events backend, which uses a hybrid of aio andAndrew Tridgell1-0/+518
epoll. It is not linked in anywhere yet - I'm committing it in case anyone else wants to have a look at it. The concept is quite strange really, but it seems to be the only way that Linux 2.6.x can currently use a unified event model allowing for AIO events and socket events to be waited for by a single unified event wait function. You setup a epoll system, then setup a weird aio event that points at the epoll system, then use io_getevents() to actually do the waiting. I'm hoping that kevents or a proper integration of epoll will allow us to avoid ths rather hackish scheme, but meanwhile this is the only path to proper AIO in Samba on Linux (without a horrible signals mess) (NOTE: this code requires some kernel patches to work at the moment) (This used to be commit 195051fdee341e8d8cb76e5c91dcc0f6c246a870)
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 Tridgell2-16/+10
(This used to be commit 61c6100617589ac6df4f527877241464cacbf8b3)
2007-10-10r15207: Introduce PRIVATE_DEPENDENCIES and PUBLIC_DEPENDENCIES as replacementJelmer Vernooij1-1/+1
for REQUIRED_SUBSYSTEMS. (This used to be commit adc8a019b6da256f104abed1b82bfde6998a2ac9)
2007-10-10r14542: Remove librpc, libndr and libnbt from includes.hJelmer Vernooij1-0/+5
(This used to be commit 51b4270513752d2eafbe77f9de598de16ef84a1f)
2007-10-10r14477: Remove the NOPROTO property - it's no longer used as proto.h is gone.Jelmer Vernooij1-1/+0
(This used to be commit 9c37f847d32d2f327a88c53a90af0c73126b76be)
2007-10-10r13842: Make some more functions public.Jelmer Vernooij1-1/+1
(This used to be commit aac1b99b362993352d80692afa55c38fc851c016)
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-10r12498: Eliminate INIT_OBJ_FILES and ADD_OBJ_FILES. We were not usingJelmer Vernooij1-2/+1
the difference between these at all, and in the future the fact that INIT_OBJ_FILES include smb_build.h will be sufficient to have recompiles at the right time. (This used to be commit b24f2583edee38abafa58578d8b5c4b43e517def)
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 Metzmacher3-3/+6
the events backend can store private flags - add function to access the gtk event loop ops struct metze (This used to be commit a5cc0758a393f36a770cdd57e317214d03934c13)