27 Commits

Author SHA1 Message Date
Nick Mathewson
e7dc501ee5 Implement EVBASE_NEED_NOTIFY on win32 2010-09-08 14:46:47 -04:00
Nick Mathewson
9580e282d7 Merge branch 'th_notify_fd_reinit' 2010-09-08 14:00:45 -04:00
Nick Mathewson
c7a06bfaee Avoid needlessly calling evthread_notify_base() when the loop is not running
Also make sure that we always hold the base lock when calling evthread_notify_base.
2010-09-08 13:09:40 -04:00
Nick Mathewson
5de2bcb70f On windows, make lock/thread function tables static
This requires us to have a separate implementation of the lock macros
that indirects to a set of functions.  Fortunately, this isn't too
hard to do.

This may be a fix for bug 3042969, where our openssl dll and our
libevent dll each got their own version of the thread stuff.
2010-09-01 16:03:39 -04:00
Nick Mathewson
d4977b52f0 Add a condition variable backend, with implementations for pthreads and win32
The interface from the user's POV is similar to the locking
implementation: either provide a structure full of function
pointers, or just call evthread_use_*_threads() and everything will
be okay.

The internal interface is meant to vaguely resemble pthread_cond_*,
which Windows people will better recognize as *ConditionVariable*.
2010-08-17 13:15:34 -04:00
Nick Mathewson
ec347b9225 Move event-config.h to include/event2
This change means that all required include files are in event2, and
all files not in event2/* are optional.
2010-08-06 20:21:27 -04:00
Nick Mathewson
218a3c372c Do not check that event_base is set in EVBASE_ACQUIRE_LOCK
In every place that we call EVBASE_ACQUIRE_LOCK, the base is either
set, or must be set, so the test is redundant.
2010-05-13 15:40:43 -04:00
Nick Mathewson
17efc1cdfa Update all our copyright notices to say "2010" 2010-03-04 01:38:48 -05:00
Nick Mathewson
e5bbd40ad7 Clean up formatting: use tabs, not 8-spaces, to indent. 2010-02-18 17:44:09 -05:00
Nick Mathewson
97a8c79006 Fix compilation of rate-limit code when threading support is disabled 2010-01-22 00:34:21 -05:00
Nick Mathewson
689fc091a5 New EVTHREAD_TRY_LOCK function to try to grab a lock. 2009-12-04 14:15:17 -05:00
Nick Mathewson
0cd3bb9f3a Improved optional lock debugging.
There were a couple of places in the code where we manually kept lock
counts to make sure we never accessed resources without holding a
lock, and that we never released a lock we didn't have.  The
lock-debugging code already puts counts on _every_ lock when lock
debugging is enabled, so there is no need to keep these counts around
otherwise.  This patch rewrites the ASSERT_FOO_LOCKED macros to all
use a common EVLOCK_ASSERT_LOCKED().

We also teach the lock debugging code to keep track of who exactly
holds each lock, so that EVLOCK_ASSERT_LOCKED() means "locked by this
thread."
2009-11-27 17:36:51 -05:00
Nick Mathewson
76cd2b70bb Stop passing EVTHREAD_READ and EVTHREAD_WRITE to non-rw locks.
Previously, our default lock model kind of assumed that every lock was
potentially a read-write lock.  This was a poor choice, since
read-write locks are far more expensive than regular locks, and so the
lock API should only use them when we can actually take advantage of
them.  Neither our pthreads or win32 lock implementation provided rw
locks.

Now that we have a way (not currently used!) to	indicate that we
really want a read-write lock, we shouldn't actually say "lock this
for reading" or "lock this for writing" unless we mean it.
2009-11-27 17:36:51 -05:00
Nick Mathewson
347952ffe0 Revise the locking API: deprecate the old locking callbacks and add trylock.
Previously, there was no good way to request different kinds of lock
(say, read/write vs writeonly or recursive vs nonrecursive), or for a
lock function to signal failure (which would be important for a
trylock mode).

This patch revises the lock API to be a bit more useful.  The older
lock calls are still supported for now.

We also add a debugging mode to catch common errors in using the
locking APIs.
2009-11-27 17:36:24 -05:00
Nick Mathewson
e3fd294a6d Spelling fixes in comments and strings.
svn:r1445
2009-10-16 13:19:57 +00:00
Nick Mathewson
eda27f9557 Update copyright notices, add some missing license statements
svn:r1208
2009-04-19 20:54:12 +00:00
Nick Mathewson
838d0a81c3 Document many internal functions and pieces of code.
svn:r1181
2009-04-17 06:55:08 +00:00
Nick Mathewson
28255a2635 Finally, get unit tests to pass with threading turned off again.
svn:r1137
2009-04-05 04:26:46 +00:00
Nick Mathewson
661b5eea09 Actually, move EVUTIL_NIL_STMT to util-internal.h
svn:r1135
2009-04-05 04:10:05 +00:00
Nick Mathewson
d13b59ce37 Fix build with thread support disabled, and make no-op macros a little more no-oppy.
svn:r1133
2009-04-05 02:44:04 +00:00
Nick Mathewson
70ee390fc9 Add some more utility macros to evthread-internal.h
svn:r1132
2009-04-05 02:43:55 +00:00
Nick Mathewson
ec35eb5520 Make threading functions global, like the mm_ functions. Use the libevent_pthread.la library in regress_pthread.
svn:r1121
2009-02-12 22:19:54 +00:00
Nick Mathewson
b85b710cf5 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
2009-01-27 22:34:36 +00:00
Nick Mathewson
8889a77039 Replace all use of config.h with event-config.h.
svn:r1064
2009-01-27 22:30:46 +00:00
Niels Provos
502929cdf2 add a check that base != NULL for threading; might want to drop this later
svn:r696
2008-03-31 00:31:53 +00:00
Niels Provos
c182baca10 switch thread support so that locks get allocated as they are needed.
svn:r690
2008-03-10 03:17:20 +00:00
Niels Provos
558de9b377 Provide OpenSSL style support for multiple threads accessing the same event_base
svn:r684
2008-03-02 21:18:33 +00:00