diff options
author | waker <wakeroid@gmail.com> | 2010-10-24 09:37:43 +0200 |
---|---|---|
committer | waker <wakeroid@gmail.com> | 2010-11-14 22:33:43 +0100 |
commit | 5a6ebf3ea5d325fbdf6cc33333274ca37fee5a2e (patch) | |
tree | aff21d2096bd2116184b849b59cc6d603cda0cec | |
parent | 2c2b62a0f140221dec44d31d6d04816f3cea4f3f (diff) |
added thread_detach and thread_exit APIs
-rw-r--r-- | deadbeef.h | 2 | ||||
-rw-r--r-- | plugins.c | 2 | ||||
-rw-r--r-- | threading.h | 6 | ||||
-rw-r--r-- | threading_pthread.c | 15 |
4 files changed, 25 insertions, 0 deletions
@@ -324,6 +324,8 @@ typedef struct { intptr_t (*thread_start) (void (*fn)(void *ctx), void *ctx); intptr_t (*thread_start_low_priority) (void (*fn)(void *ctx), void *ctx); int (*thread_join) (intptr_t tid); + int (*thread_detach) (intptr_t tid); + void (*thread_exit) (void *retval); uintptr_t (*mutex_create) (void); uintptr_t (*mutex_create_nonrecursive) (void); void (*mutex_free) (uintptr_t mtx); @@ -95,6 +95,8 @@ static DB_functions_t deadbeef_api = { .thread_start = thread_start, .thread_start_low_priority = thread_start_low_priority, .thread_join = thread_join, + .thread_detach = thread_detach, + .thread_exit = thread_exit, .mutex_create = mutex_create, .mutex_create_nonrecursive = mutex_create_nonrecursive, .mutex_free = mutex_free, diff --git a/threading.h b/threading.h index dee1cc3c..6ceca641 100644 --- a/threading.h +++ b/threading.h @@ -29,6 +29,12 @@ thread_start_low_priority (void (*fn)(void *ctx), void *ctx); int thread_join (intptr_t tid); +int +thread_detach (intptr_t tid); + +void +thread_exit (void *retval); + uintptr_t mutex_create (void); diff --git a/threading_pthread.c b/threading_pthread.c index 66db5844..13d12b94 100644 --- a/threading_pthread.c +++ b/threading_pthread.c @@ -99,6 +99,21 @@ thread_join (intptr_t tid) { return 0; } +int +thread_detach (intptr_t tid) { + int s = pthread_detach ((pthread_t)tid); + if (s) { + fprintf (stderr, "pthread_detach failed: %s\n", strerror (s)); + return -1; + } + return 0; +} + +void +thread_exit (void *retval) { + pthread_exit (retval); +} + uintptr_t mutex_create_nonrecursive (void) { pthread_mutex_t *mtx = malloc (sizeof (pthread_mutex_t)); |