From: Bart Van Assche Date: Mon, 10 Nov 2008 18:54:46 +0000 (+0000) Subject: Added regression test for Boost.Threads. X-Git-Tag: svn/VALGRIND_3_4_0~131 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a4ddba81ca7b528524894cdfd796f9968cf3169e;p=thirdparty%2Fvalgrind.git Added regression test for Boost.Threads. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8763 --- diff --git a/drd/tests/Makefile.am b/drd/tests/Makefile.am index 82c129f26b..168daebb28 100644 --- a/drd/tests/Makefile.am +++ b/drd/tests/Makefile.am @@ -20,6 +20,8 @@ EXTRA_DIST = \ atomic_var.stderr.exp-with-atomic-builtins \ atomic_var.stderr.exp-without-atomic-builtins \ atomic_var.vgtest \ + boost_threads.stderr.exp \ + boost_threads.vgtest \ drd_bitmap_test.stderr.exp \ drd_bitmap_test.stdout.exp \ drd_bitmap_test.vgtest \ @@ -247,14 +249,18 @@ check_PROGRAMS = \ tc24_nonzero_sem \ trylock -if HAVE_QTCORE -check_PROGRAMS += qt4_mutex qt4_rwlock qt4_semaphore +if HAVE_BOOST_1_35 +check_PROGRAMS += boost_threads endif if HAVE_OPENMP check_PROGRAMS += omp_matinv omp_prime omp_printf endif +if HAVE_QTCORE +check_PROGRAMS += qt4_mutex qt4_rwlock qt4_semaphore +endif + atomic_var_SOURCES = atomic_var.c atomic_var_LDADD = -lpthread @@ -331,20 +337,6 @@ pth_inconsistent_cond_wait_LDADD = -lpthread pth_spinlock_SOURCES = pth_spinlock.c pth_spinlock_LDADD = -lpthread -if HAVE_QTCORE -qt4_mutex_SOURCES = qt4_mutex.cpp -qt4_mutex_CXXFLAGS = $(AM_CXXFLAGS) $(QTCORE_CFLAGS) -qt4_mutex_LDADD = $(QTCORE_LIBS) - -qt4_rwlock_SOURCES = qt4_rwlock.cpp -qt4_rwlock_CXXFLAGS = $(AM_CXXFLAGS) $(QTCORE_CFLAGS) -qt4_rwlock_LDADD = $(QTCORE_LIBS) - -qt4_semaphore_SOURCES = qt4_semaphore.cpp -qt4_semaphore_CXXFLAGS = $(AM_CXXFLAGS) $(QTCORE_CFLAGS) -qt4_semaphore_LDADD = $(QTCORE_LIBS) -endif - recursive_mutex_SOURCES = recursive_mutex.c recursive_mutex_LDADD = -lpthread @@ -432,6 +424,12 @@ tc24_nonzero_sem_LDADD = -lpthread trylock_SOURCES = trylock.c trylock_LDADD = -lpthread -lrt +if HAVE_BOOST_1_35 +boost_threads_SOURCES = boost_threads.cpp +boost_threads_CXXFLAGS = $(AM_CXXFLAGS) $(BOOST_CFLAGS) +boost_threads_LDADD = $(BOOST_LIBS) +endif + if HAVE_OPENMP omp_matinv_SOURCES = omp_matinv.c omp_matinv_CFLAGS = $(AM_CFLAGS) -fopenmp @@ -448,3 +446,17 @@ omp_printf_CFLAGS = $(AM_CFLAGS) -fopenmp omp_printf_LDFLAGS = -fopenmp omp_printf_LDADD = -lm endif + +if HAVE_QTCORE +qt4_mutex_SOURCES = qt4_mutex.cpp +qt4_mutex_CXXFLAGS = $(AM_CXXFLAGS) $(QTCORE_CFLAGS) +qt4_mutex_LDADD = $(QTCORE_LIBS) + +qt4_rwlock_SOURCES = qt4_rwlock.cpp +qt4_rwlock_CXXFLAGS = $(AM_CXXFLAGS) $(QTCORE_CFLAGS) +qt4_rwlock_LDADD = $(QTCORE_LIBS) + +qt4_semaphore_SOURCES = qt4_semaphore.cpp +qt4_semaphore_CXXFLAGS = $(AM_CXXFLAGS) $(QTCORE_CFLAGS) +qt4_semaphore_LDADD = $(QTCORE_LIBS) +endif diff --git a/drd/tests/boost_threads.cpp b/drd/tests/boost_threads.cpp new file mode 100644 index 0000000000..8560cd9aaf --- /dev/null +++ b/drd/tests/boost_threads.cpp @@ -0,0 +1,30 @@ +#include +#include +#include +#include + + +static boost::condition s_cva; +static boost::mutex s_m; + + +static void thread_func(void) +{ + std::cerr << "Thread 2.\n"; + boost::mutex::scoped_lock sl(s_m); + s_cva.notify_all(); + s_cva.wait(sl); +} + +int main(int argc, char** argv) +{ + std::cerr << "Thread 1.\n"; + boost::mutex::scoped_lock sl(s_m); + boost::thread t(thread_func); + s_cva.wait(sl); + s_cva.notify_all(); + sl.unlock(); + t.join(); + std::cerr << "Finished.\n"; + return 0; +} diff --git a/drd/tests/boost_threads.stderr.exp b/drd/tests/boost_threads.stderr.exp new file mode 100644 index 0000000000..78d8647ea6 --- /dev/null +++ b/drd/tests/boost_threads.stderr.exp @@ -0,0 +1,6 @@ + +Thread 1. +Thread 2. +Finished. + +ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) diff --git a/drd/tests/boost_threads.vgtest b/drd/tests/boost_threads.vgtest new file mode 100644 index 0000000000..cb5f1b67e7 --- /dev/null +++ b/drd/tests/boost_threads.vgtest @@ -0,0 +1,3 @@ +prereq: test -e boost_threads +vgopts: --var-info=yes +prog: boost_threads