diff options
| author | Lennart Poettering <lennart@poettering.net> | 2010-01-12 23:03:04 +0100 | 
|---|---|---|
| committer | Colin Guthrie <cguthrie@mandriva.org> | 2010-02-09 22:31:30 +0000 | 
| commit | 7f7455b1be68d2ff5706ccf85eff1a96f7c43d34 (patch) | |
| tree | bd31a5f4767cb457a34b5f13701d97a992879a78 /src | |
| parent | 66ddeede9ea02cc97178d42c7be18067519eed8f (diff) | |
once: make once related variables volatile
Diffstat (limited to 'src')
| -rw-r--r-- | src/pulsecore/flist.h | 2 | ||||
| -rw-r--r-- | src/pulsecore/once.c | 3 | ||||
| -rw-r--r-- | src/pulsecore/thread-posix.c | 8 | ||||
| -rw-r--r-- | src/pulsecore/thread.h | 2 | 
4 files changed, 5 insertions, 10 deletions
diff --git a/src/pulsecore/flist.h b/src/pulsecore/flist.h index e147486e..184e5992 100644 --- a/src/pulsecore/flist.h +++ b/src/pulsecore/flist.h @@ -45,7 +45,7 @@ void* pa_flist_pop(pa_flist*l);  #define PA_STATIC_FLIST_DECLARE(name, size, free_cb)                    \      static struct {                                                     \ -        pa_flist *flist;                                                \ +        pa_flist *volatile flist;                                       \          pa_once once;                                                   \      } name##_flist = { NULL, PA_ONCE_INIT };                            \      static void name##_flist_init(void) {                               \ diff --git a/src/pulsecore/once.c b/src/pulsecore/once.c index 05a3ad2c..4e509e0c 100644 --- a/src/pulsecore/once.c +++ b/src/pulsecore/once.c @@ -29,8 +29,6 @@  #include "once.h"  pa_bool_t pa_once_begin(pa_once *control) { -    pa_mutex *m; -      pa_assert(control);      if (pa_atomic_load(&control->done)) @@ -43,6 +41,7 @@ pa_bool_t pa_once_begin(pa_once *control) {       * executed by us. Hence the awkward locking. */      for (;;) { +        pa_mutex *m;          if ((m = pa_atomic_ptr_load(&control->mutex))) { diff --git a/src/pulsecore/thread-posix.c b/src/pulsecore/thread-posix.c index fdab270f..bc0d6e33 100644 --- a/src/pulsecore/thread-posix.c +++ b/src/pulsecore/thread-posix.c @@ -80,11 +80,9 @@ pa_thread* pa_thread_new(pa_thread_func_t thread_func, void *userdata) {      pa_assert(thread_func); -    t = pa_xnew(pa_thread, 1); +    t = pa_xnew0(pa_thread, 1);      t->thread_func = thread_func;      t->userdata = userdata; -    t->joined = FALSE; -    pa_atomic_store(&t->running, 0);      if (pthread_create(&t->id, NULL, internal_thread_func, t) < 0) {          pa_xfree(t); @@ -135,10 +133,8 @@ pa_thread* pa_thread_self(void) {      /* This is a foreign thread, let's create a pthread structure to       * make sure that we can always return a sensible pointer */ -    t = pa_xnew(pa_thread, 1); +    t = pa_xnew0(pa_thread, 1);      t->id = pthread_self(); -    t->thread_func = NULL; -    t->userdata = NULL;      t->joined = TRUE;      pa_atomic_store(&t->running, 2); diff --git a/src/pulsecore/thread.h b/src/pulsecore/thread.h index 25eace63..60c1267b 100644 --- a/src/pulsecore/thread.h +++ b/src/pulsecore/thread.h @@ -55,7 +55,7 @@ void *pa_tls_set(pa_tls *t, void *userdata);  #define PA_STATIC_TLS_DECLARE(name, free_cb)                            \      static struct {                                                     \          pa_once once;                                                   \ -        pa_tls *tls;                                                    \ +        pa_tls *volatile tls;                                           \      } name##_tls = {                                                    \          .once = PA_ONCE_INIT,                                           \          .tls = NULL                                                     \  | 
