event-internal.h


Log

Author Commit Date CI Message
Nick Mathewson 74871cac 2009-11-09T19:37:27 Change event_base.activequeues to "array of eventlist". Previously, event_base.activequeues was of type "array of pointers to eventlist." This was pointless: none of the eventlists were allowed to be NULL. Worse, it was inefficient: - It made looking up an active event queue take two pointer deferences instead of one, thus risking extra cache misses. - It used more RAM than it needed to, because of the extra pointer and the malloc overhead. Also, this patch fixes a bug where we were saying calloc(N,N*sizeof(X)) instead of calloc(N,sizeof(X)) when allocating activequeues. That part, I'll backport. Also, we warn and return -1 on failure to allocate activequeues, rather than calling event_err. svn:r1525
Nick Mathewson ab96b5f3 2009-11-09T18:30:33 Add an option to disable the timeval cache. svn:r1518
Nick Mathewson 693c24ef 2009-11-09T17:16:30 Implement queued timeouts for case where many timeouts are the same. Libevent's current timeout code is relatively optimized for the randomly scattered timeout case, where events are added with their timeouts in no particular order. We add and remove timeouts with O(lg n) behavior. Frequently, however, an application will want to have many timeouts of the same value. For example, we might have 1000 bufferevents, each with a 2 second timeout on reading or writing. If we knew this were always the case, we could just put timeouts in a queue and get O(1) add and remove behavior. Of course, a queue would give O(n) performance for a scattered timeout pattern, so we don't want to just switch the implementation. This patch gives the user the ability to explicitly tag certain timeout values as being "very common". These timeout values have a cookie encoded in the high bits of their tv_usec field to indicate which queue they belong on. The queues themselves are each triggered by an entry in the minheap. See the regress_main.c code for an example use. svn:r1517
Nick Mathewson a2a7d1d1 2009-10-27T05:16:32 Do not call the locking variant of event_add or event_active in some cases when we know we have the lock. svn:r1471
Nick Mathewson b06b2649 2009-07-26T01:29:39 Make "deferred callback queue" independent of event_base. This way, we can more easily have an IOCP bufferevent implementation that does not need an event_base at all. Woot. svn:r1381
Nick Mathewson 5d71b25b 2009-07-17T18:38:38 Remove all trailing whitespace from end-of-line. svn:r1350
Nick Mathewson 6b4b77a2 2009-07-14T16:54:48 Make event_del(E) block while E is running in another thread. This gives you the property that once you have called event_del(E), you know that E is no longer running or pending or active at all, and so it is safe to delete the resource used by E's callback. svn:r1341
Nick Mathewson b4886ec8 2009-05-15T18:44:44 Trim 22 bytes from struct event on 32 bit platforms, more on 64-bit platforms. svn:r1292
Nick Mathewson fe47003d 2009-05-05T16:52:37 Make unit tests for bufferevent_async compile and _almost_ work. Either I need to make the callbacks get deferred in a base with no events (doable), or I need to make it okay to call launch_read from inside the callback for read (tricky). svn:r1277
Nick Mathewson b69d03b5 2009-05-05T14:18:14 Add a constructor for bufferevent_async. svn:r1274
Nick Mathewson 838d0a81 2009-04-17T06:55:08 Document many internal functions and pieces of code. svn:r1181
Nick Mathewson 4868f4d2 2009-04-10T14:22:33 Initial support for a lightweight 'deferred callbacks'. A 'deferred callback' is just a function that we've queued in the event base. This ability is needed for some mt stuff, and for complex callback chains. For internal use only. svn:r1150
Nick Mathewson ec35eb55 2009-02-12T22:19:54 Make threading functions global, like the mm_ functions. Use the libevent_pthread.la library in regress_pthread. svn:r1121
Nick Mathewson b85b710c 2009-01-27T22:34:36 Update copyright statements to reflect the facts that: a) this is 2009 b) niels and nick have been comaintainers for a while c) saying "all rights reserved" when you then go on to explicitly disclaim some rights is sheer cargo-cultism. svn:r1065
Nick Mathewson 8889a770 2009-01-27T22:30:46 Replace all use of config.h with event-config.h. svn:r1064
Niels Provos 56ea4687 2009-01-22T02:33:38 Change the semantics of timeouts in conjunction with EV_PERSIST; timeouts in that case will now repeat until deleted. svn:r1032
Nick Mathewson a5901991 2009-01-19T20:37:24 Use eventfd for main-thread notification where available (i.e., linux). svn:r1023
Nick Mathewson 554e1493 2009-01-14T20:52:32 Move per-fd info from eventops into evmap. Not done for win32.c yet. svn:r1008
Nick Mathewson 169321c9 2009-01-13T20:26:37 Rename four internal headers to follow the -internal.h convention. svn:r1000
Nick Mathewson 55bcd7d2 2009-01-09T13:42:21 On win32, use a hashtable to map sockets to events rather than using an array. svn:r988
Niels Provos 30cba6d0 2008-12-25T09:22:13 we cannot realloc memory used by TAILQ; instead malloc each slot individually svn:r977
Niels Provos d776f846 2008-12-23T22:23:37 deprecate the usage of signal_{add,del,set} and name it evsignal_{add,del,set} instead; move the old definitions to compat svn:r973
Niels Provos 02b2b4d1 2008-12-23T16:37:01 Restructure the event backends so that they do not need to keep track of events themselves, as a side effect multiple events can use the same fd or signal. svn:r972
Niels Provos f7e61870 2008-07-11T15:49:04 support multiple events listening on the same signal; make signals regular events that go on the same event queue svn:r901
Nick Mathewson 05965921 2008-05-31T14:37:31 Add new functions to access backends by their features and to query the features of a backend. svn:r842
Niels Provos 3f56e364 2008-05-08T05:56:20 event_base_new_with_config() and related methods svn:r789
Niels Provos 8c750eaf 2008-05-03T21:37:33 separate signal events from io events svn:r760
Niels Provos 45e6fb0d 2008-05-03T18:23:44 cache clock_gettime/gettimeofday values in base svn:r758
Niels Provos c182baca 2008-03-10T03:17:20 switch thread support so that locks get allocated as they are needed. svn:r690
Niels Provos 558de9b3 2008-03-02T21:18:33 Provide OpenSSL style support for multiple threads accessing the same event_base svn:r684
Niels Provos 03589ccb 2007-12-24T22:49:30 rollback r594: restructuring to make event activation independent. changes are going to wait for api design svn:r612
Niels Provos 7aa845b7 2007-12-16T04:10:30 restructure the code to make event activation independent of regular event logic svn:r594
Niels Provos fbe24f43 2007-12-09T05:07:20 remove obsoleted recalc code svn:r581
Nick Mathewson 2823cb05 2007-11-25T17:15:28 r14944@tombo: nickm | 2007-11-25 12:12:28 -0500 Make kqueue pass more unit tests. svn:r544
Nick Mathewson 7eb250e9 2007-11-25T17:14:19 r14939@tombo: nickm | 2007-11-25 11:59:26 -0500 New function event_set_mem_functions to replace internal calls to malloc, free, etc with a user-supplied functions. svn:r541
Niels Provos 88897852 2007-11-25T06:57:59 provide event_reinit() to reinitialized an event_base after fork - necessary for epoll/kqueue svn:r539
Nick Mathewson 1c23e219 2007-11-17T22:21:42 r14931@tombo: nickm | 2007-11-17 17:21:09 -0500 Patch from Scott Lamb: Implement event_{base_}loopbreak. Includes documentation and tests. From sf.net Feature Request 1826546. svn:r535
Nick Mathewson f74e7258 2007-11-07T06:01:57 r16501@catbus: nickm | 2007-11-07 01:00:31 -0500 This is one of those patches which will either make matters far simpler after the bugs shake out, or will get reverted pretty quick once we realize that it is a stupid idea. We now post-process the config.h file into a new event-config.h file, whose macros are prefixed with _EVENT_ and which is thus safe for headers to include. Using this, we can define replacement timeval manipulation functions in evutil.h, and use them uniformly through our code. We can also detect which headers are needful in event.h, and include them as required. This is also the perfect time to remove the long-deprecated acconfig.h file, so that autoheader no longer warns. Should resolve the following issues: [ 1826530 ] Header files should have access to autoconf output. [ 1826545 ] acconfig.h is deprecated. [ 1826564 ] On some platforms, event.h can't be included alone. svn:r492
Niels Provos 30ae40cc 2007-11-03T18:04:53 switch timeouts to a min heap; from Maxim Yegorushkin svn:r467
Niels Provos 41b7cbc3 2007-03-10T06:37:53 more the signal base into the event base; this removes global state and makes signals work better with threading; from Wouter Wijngaards small fixes for kqueue and style by me svn:r351
Niels Provos 905ee67d 2005-02-22T15:47:53 provide maintainer mode in automake; put event_gotsig back into global state; return proper error code svn:r131
Niels Provos 8773c4c9 2004-11-25T09:50:18 make libevent thread-safe; first cut svn:r122