Tobias Brunner
0d30d73eb9
thread: Properly clean up meta data of main thread
2014-03-07 18:28:38 +01:00
Martin Willi
bbb62267e0
thread: Note that tread_cancellation_point temporarily activates cancelability
2013-11-06 10:31:00 +01:00
Tobias Brunner
1dd58b0e21
Fixed some typos
2013-10-29 11:44:23 +01:00
Martin Willi
1a20a22d09
rwlock: Disable thread cancelability while waiting in (fallback) rwlock
...
An rwlock wait is not a thread cancellation point. As a canceled thread
would not have released the mutex, the rwlock would have been left in unusable
state.
2013-10-24 14:53:53 +02:00
Martin Willi
181d071363
rwlock: Don't use buggy pthread_rwlock on OS X
...
Recursive read locks don't seem to work properly, at least on 10.9.
2013-10-24 14:53:47 +02:00
Martin Willi
b08292a520
semaphore: Support cancellation in wait functions of semaphore fallback
...
Semaphore wait functions should be a thread cancellation point, but did
not properly release the mutex in the fallback implementation.
2013-10-23 16:08:40 +02:00
Martin Willi
47c76c1b05
rwlock: Re-acquire rwlock even if condvar wait times out
...
A caller expects that the associated rwlock is held, whether the condvar
gets signaled or the wait times out.
2013-10-23 11:52:26 +02:00
Martin Willi
01c0267778
thread: implicitly create thread_t if an external thread calls thread_current()
2013-07-18 12:17:53 +02:00
Martin Willi
b0ccd14f2a
semaphore: similar to thread_create(), semaphore_create() is used by Mach
...
The compiler spits no warning, but the wrong symbol is used when calling
semaphore_create() from strongSwan. Override the name with a #define to force
the use of our semaphore_create().
2013-05-06 16:06:48 +02:00
Tobias Brunner
bc07fef09c
Use SIGUSR2 for SIG_CANCEL on Android
...
SIGRTMIN is defined as 32 while sigset_t is defined as
unsigned long (i.e. holds 32 signals). Hence, the signal
could never be blocked. Sending the signal still canceled
threads, but sometimes in situations where they shouldn't
have been canceled (e.g. while holding a lock).
Fixes #298 .
2013-02-26 11:40:34 +01:00
Martin Willi
4185c64464
Use a ./configure check to detect pthread spinlock availability
...
_POSIX_SPIN_LOCKS does not seem to be defined correctly on all
systems (Debian libc 2.3.6). Fixes #262 .
2012-12-18 09:51:33 +01:00
Tobias Brunner
f05b427265
Moved debug.[ch] to utils folder
2012-10-24 16:00:51 +02:00
Tobias Brunner
12642a6831
Moved data structures to new collections subfolder
2012-10-24 16:00:49 +02:00
Tobias Brunner
eecd41e349
Use a helper function to add milliseconds to timeval structs
2012-10-18 12:25:59 +02:00
Tobias Brunner
e811cf152a
Properly handle thread cancelation in rwlock_condvar_t
2012-09-21 18:16:27 +02:00
Tobias Brunner
60dc44648f
Added a condvar implementation that works with rwlock_t
2012-09-21 18:16:27 +02:00
Martin Willi
88a5abf5e2
Don't use POSIX semaphores if a MONOTONIC clock is available
...
POSIX semaphores use CLOCK_REALTIME, but our semaphore_t abstraction
expects CLOCK_MONOTONIC based times. Use the mutex/condvar based
fallback if time_monotonic() actuall returns monotonic times.
2012-08-20 18:01:20 +02:00
Martin Willi
907d3d0f1d
Add a mutex/condvar based semaphore implementation if sem_timedwait is unavailable
...
Fixes #214 .
2012-08-20 17:20:26 +02:00
Tobias Brunner
09ae3d79ca
Merge branch 'android-app'
...
This branch introduces a userland IPsec implementation (libipsec) and an
Android App which targets the VpnService API that is provided by Android 4+.
The implementation is based on the bachelor thesis 'Userland IPsec for
Android 4' by Giuliano Grassi and Ralf Sager.
2012-08-13 12:07:52 +02:00
Tobias Brunner
efbb5e8c57
Ensure thread IDs always start with 1 even if the library is reused
...
Within the Android App the library stays loaded in memory and is just
initialized/deinitialized with each connection, the static thread
counter would continuously increase without this patch.
2012-08-13 11:28:08 +02:00
Martin Willi
a63192479d
If _POSIX_SPIN_LOCKS is defined as -1, it is not available
2012-08-10 17:02:46 +02:00
Tobias Brunner
decc467a4f
Implemented recursive mutex without thread-specific counter
2012-08-03 11:30:18 +02:00
Tobias Brunner
920f29e7d5
Use a single thread-specific value for our custom rwlock_t implementation
...
The pthread implementation on Android currently only supports 64
different thread-specific values per process, which we hit easily when
every rwlock_t requires one.
2012-08-03 11:30:18 +02:00
Tobias Brunner
2b19dd3502
Properly cleanup thread-local values for the threads destroying thread_value_t objects
2012-07-12 09:43:27 +02:00
Tobias Brunner
12fa85c664
Added wrapper for POSIX spin locks
2012-07-04 10:13:49 +02:00
Tobias Brunner
4d21000cf7
Added recursive read_lock support to our own implementation of rwlock_t.
2012-05-02 14:45:38 +02:00
Tobias Brunner
8f6c13271c
Added a wrapper class around POSIX semaphores.
2012-05-02 14:45:37 +02:00
Tobias Brunner
17e3a92661
Fix gettid() on Android, which is defined in unistd.h there.
2012-01-12 11:08:22 +01:00
Tobias Brunner
66f16d9629
Use native gettid() if available (which is the case on Android).
2012-01-10 18:31:33 +01:00
Tobias Brunner
c17f6f96e2
Log native thread ID when a thread is created.
...
If possible gettid() is used, otherwise pthread_self() is logged (which is
not completely portable, but seems to work on most supported platforms).
2011-12-16 16:44:38 +01:00
Martin Willi
005b02cbe3
Create a dummy pthread key for value "0", as some buggy PKCS#11 libraries mangle it
2011-12-07 13:42:07 +01:00
Tobias Brunner
c8541efe70
Migrated thread_t to INIT/METHOD macros.
2011-10-03 15:54:36 +02:00
Tobias Brunner
f5808078cb
Migrated mutex_t to INIT/METHOD macros.
2011-10-03 15:45:17 +02:00
Tobias Brunner
7fa43a9036
Migrated rwlock_t to INIT/METHOD macros.
2011-10-03 15:31:04 +02:00
Tobias Brunner
242f7c857f
Migrated thread_value_t to INIT/METHOD macros.
2011-10-03 14:57:07 +02:00
Andreas Steffen
51f259a82d
id of non-registered threads defaults to 0
2011-05-06 06:22:19 +02:00
Martin Willi
091d178060
Option to skip slow addr2line resolution in leak-detective
2010-05-20 17:37:18 +02:00
Tobias Brunner
726c0ae9d3
We have to rename thread_create on Mac OS X because it conflicts with a syscall.
2010-04-29 14:52:20 +02:00
Tobias Brunner
361f416d2c
The mutex of a thread has to be locked when destroying it.
2010-04-29 13:30:51 +02:00
Tobias Brunner
8b0e09103b
Adding DBG_LIB to all calls of libstrongswan's version of DBG*.
2010-04-06 12:47:40 +02:00
Andreas Steffen
b7fd2ea76c
corrected captions
2010-02-01 12:44:44 +01:00
Tobias Brunner
85202e8795
Added a workaround for the missing pthread_cancel on Android.
2009-12-23 17:03:42 +01:00
Tobias Brunner
b2944d71ca
Use pthread_cond_timedwait_monotonic on Android.
2009-12-23 17:03:41 +01:00
Tobias Brunner
4ec2c94b5d
Readding changes that got lost during refactoring/rebasing.
2009-12-23 17:03:41 +01:00
Tobias Brunner
4a5a5dd290
Using the thread wrapper in charon, libstrongswan and their plugins.
2009-12-23 17:03:41 +01:00
Tobias Brunner
c48eea9203
Adding an object-oriented wrapper for thread-specific values.
2009-12-23 17:02:26 +01:00
Tobias Brunner
0d5c6a28d5
Adding an object-oriented wrapper for threads.
2009-12-23 17:02:26 +01:00
Tobias Brunner
866dc0134a
Check for pthread_condattr_init added to configure script.
2009-12-23 17:02:25 +01:00
Tobias Brunner
5fe538504e
Moved implementation of condvar_t to mutex.c because it requires access to private_mutex_t.
2009-12-23 17:02:25 +01:00
Tobias Brunner
eba64cef41
Separated the public interfaces of the threading primitives.
2009-12-23 17:01:53 +01:00