[pulseaudio-discuss] [PATCH] win32: Make once-test work
Maarten Bosmans
mkbosmans at gmail.com
Thu Jun 23 13:21:02 PDT 2011
The barrier is not used when pthread is not available.
---
src/Makefile.am | 8 +-------
src/pulsecore/thread-win32.c | 21 +++++++++++++++++++++
src/tests/once-test.c | 10 ++++++++++
src/tests/thread-test.c | 2 --
4 files changed, 32 insertions(+), 9 deletions(-)
diff --git a/src/Makefile.am b/src/Makefile.am
index 3858cb3..a0e7ce3 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -271,6 +271,7 @@ TESTS = \
TESTS_norun = \
mcalign-test \
+ once-test \
pacat-simple \
parec-simple \
extended-test \
@@ -309,13 +310,6 @@ TESTS_norun += \
alsa-time-test
endif
-if !OS_IS_DARWIN
-if !OS_IS_WIN32
-TESTS_BINARIES += \
- once-test
-endif
-endif
-
if BUILD_TESTS_DEFAULT
noinst_PROGRAMS = $(TESTS) $(TESTS_norun)
else
diff --git a/src/pulsecore/thread-win32.c b/src/pulsecore/thread-win32.c
index e0839af..89c8c46 100644
--- a/src/pulsecore/thread-win32.c
+++ b/src/pulsecore/thread-win32.c
@@ -123,6 +123,27 @@ pa_thread* pa_thread_self(void) {
return pa_tls_get(thread_tls);
}
+void* pa_thread_get_data(pa_thread *t) {
+ pa_assert(t);
+
+ return t->userdata;
+}
+
+void pa_thread_set_data(pa_thread *t, void *userdata) {
+ pa_assert(t);
+
+ t->userdata = userdata;
+}
+
+void pa_thread_set_name(pa_thread *t, const char *name) {
+ /* Not implemented */
+}
+
+const char *pa_thread_get_name(pa_thread *t) {
+ /* Not implemented */
+ return NULL;
+}
+
void pa_thread_yield(void) {
Sleep(0);
}
diff --git a/src/tests/once-test.c b/src/tests/once-test.c
index 1379168..8a9995d 100644
--- a/src/tests/once-test.c
+++ b/src/tests/once-test.c
@@ -21,7 +21,9 @@
#include <config.h>
#endif
+#ifdef HAVE_PTHREAD
#include <pthread.h>
+#endif
#include <pulsecore/thread.h>
#include <pulsecore/once.h>
@@ -33,7 +35,9 @@
static pa_once once = PA_ONCE_INIT;
static volatile unsigned n_run = 0;
static const char * volatile ran_by = NULL;
+#ifdef HAVE_PTHREAD
static pthread_barrier_t barrier;
+#endif
static unsigned n_cpu;
#define N_ITERATIONS 500
@@ -45,6 +49,7 @@ static void once_func(void) {
}
static void thread_func(void *data) {
+#ifdef HAVE_PTHREAD
int r;
#ifdef HAVE_PTHREAD_SETAFFINITY_NP
@@ -60,6 +65,7 @@ static void thread_func(void *data) {
r = pthread_barrier_wait(&barrier);
pa_assert(r == 0 || r == PTHREAD_BARRIER_SERIAL_THREAD);
+#endif /* HAVE_PTHREAD */
pa_run_once(&once, once_func);
}
@@ -72,7 +78,9 @@ int main(int argc, char *argv[]) {
for (n = 0; n < N_ITERATIONS; n++) {
pa_thread* threads[N_THREADS];
+#ifdef HAVE_PTHREAD
pa_assert_se(pthread_barrier_init(&barrier, NULL, N_THREADS) == 0);
+#endif
/* Yes, kinda ugly */
pa_zero(once);
@@ -94,7 +102,9 @@ int main(int argc, char *argv[]) {
n_run = 0;
ran_by = NULL;
+#ifdef HAVE_PTHREAD
pa_assert_se(pthread_barrier_destroy(&barrier) == 0);
+#endif
}
return 0;
diff --git a/src/tests/thread-test.c b/src/tests/thread-test.c
index 4943a17..4071e42 100644
--- a/src/tests/thread-test.c
+++ b/src/tests/thread-test.c
@@ -94,8 +94,6 @@ int main(int argc, char *argv[]) {
int i, k;
pa_thread* t[THREADS_MAX];
- assert(pa_thread_is_running(pa_thread_self()));
-
mutex = pa_mutex_new(FALSE, FALSE);
cond1 = pa_cond_new();
cond2 = pa_cond_new();
--
1.7.4.1
More information about the pulseaudio-discuss
mailing list