Changeset 7fd77d963a10bba8397593a48a23b970665a9d91
- Timestamp:
- 01/27/08 16:56:24
(7 months ago)
- Author:
- Rémi Denis-Courmont <rem@videolan.org>
- git-committer:
- Rémi Denis-Courmont <rem@videolan.org> 1201449384 +0000
- git-parent:
[37bc09bf45ed85666de87b46718f69b5c1fb46bd]
- git-author:
- Rémi Denis-Courmont <rem@videolan.org> 1201449384 +0000
- Message:
Default to using pthread instead of exploding.
This fixes the single largest source of problems when including vlc/*.h out of the box.
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r37bc09b |
r7fd77d9 |
|
| 765 | 765 | AC_DEFINE(HAVE_NANOSLEEP, 1, [Define if nanosleep is available.]) |
|---|
| 766 | 766 | fi |
|---|
| | 767 | fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" |
|---|
| 767 | 768 | |
|---|
| 768 | 769 | dnl Check for misc headers |
|---|
| 769 | | AC_MSG_CHECKING(for pthread_cond_t in pthread.h) |
|---|
| 770 | | AC_EGREP_HEADER(pthread_cond_t,pthread.h,[ |
|---|
| 771 | | AC_MSG_RESULT(yes) |
|---|
| 772 | | AC_DEFINE(PTHREAD_COND_T_IN_PTHREAD_H, 1, |
|---|
| 773 | | Define if <pthread.h> defines pthread_cond_t.)],[ |
|---|
| 774 | | AC_MSG_RESULT(no)]) |
|---|
| 775 | | |
|---|
| 776 | 770 | AC_MSG_CHECKING(for strncasecmp in strings.h) |
|---|
| 777 | 771 | AC_EGREP_HEADER(strncasecmp,strings.h,[ |
|---|
| r46d6d2d |
r7fd77d9 |
|
| 45 | 45 | # include <byteorder.h> |
|---|
| 46 | 46 | |
|---|
| 47 | | #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) /* pthreads (like Linux & BSD) */ |
|---|
| | 47 | #else /* pthreads (like Linux & BSD) */ |
|---|
| 48 | 48 | # define LIBVLC_USE_PTHREAD 1 |
|---|
| 49 | 49 | # define _APPLE_C_SOURCE 1 /* Proper pthread semantics on OSX */ |
|---|
| … | … | |
| 56 | 56 | # include <time.h> |
|---|
| 57 | 57 | # endif |
|---|
| 58 | | |
|---|
| 59 | | #else |
|---|
| 60 | | # error no threads available on your system ! |
|---|
| 61 | 58 | |
|---|
| 62 | 59 | #endif |
|---|
| … | … | |
| 83 | 80 | # define VLC_THREAD_PRIORITY_HIGHEST 15 |
|---|
| 84 | 81 | |
|---|
| 85 | | #elif defined(PTHREAD_COND_T_IN_PTHREAD_H) |
|---|
| | 82 | #elif defined(LIBVLC_USE_PTHREAD) |
|---|
| 86 | 83 | # define VLC_THREAD_PRIORITY_LOW 0 |
|---|
| 87 | 84 | # define VLC_THREAD_PRIORITY_INPUT 20 |
|---|
| … | … | |
| 190 | 187 | |
|---|
| 191 | 188 | |
|---|
| 192 | | #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) |
|---|
| | 189 | #else |
|---|
| 193 | 190 | typedef pthread_t vlc_thread_t; |
|---|
| 194 | 191 | typedef struct |
|---|
| rc2f196a |
r7fd77d9 |
|
| 85 | 85 | __vlc_mutex_lock( __FILE__, __LINE__, P_MUTEX ) |
|---|
| 86 | 86 | |
|---|
| 87 | | #if defined( PTHREAD_COND_T_IN_PTHREAD_H ) |
|---|
| | 87 | #if defined(LIBVLC_USE_PTHREAD) |
|---|
| 88 | 88 | static inline unsigned long int CAST_PTHREAD_TO_INT (pthread_t th) |
|---|
| 89 | 89 | { |
|---|
| … | … | |
| 130 | 130 | } |
|---|
| 131 | 131 | |
|---|
| 132 | | #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) |
|---|
| | 132 | #elif defined(LIBVLC_USE_PTHREAD) |
|---|
| 133 | 133 | # define vlc_assert_locked( m ) \ |
|---|
| 134 | 134 | assert (pthread_mutex_lock (&((m)->mutex)) == EDEADLK) |
|---|
| … | … | |
| 200 | 200 | } |
|---|
| 201 | 201 | |
|---|
| 202 | | #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) |
|---|
| | 202 | #elif defined(LIBVLC_USE_PTHREAD) |
|---|
| 203 | 203 | i_result = pthread_mutex_unlock( &p_mutex->mutex ); |
|---|
| 204 | 204 | if ( i_result ) |
|---|
| … | … | |
| 333 | 333 | } |
|---|
| 334 | 334 | |
|---|
| 335 | | #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) |
|---|
| | 335 | #elif defined(LIBVLC_USE_PTHREAD) |
|---|
| 336 | 336 | i_result = pthread_cond_signal( &p_condvar->cond ); |
|---|
| 337 | 337 | if ( i_result ) |
|---|
| … | … | |
| 479 | 479 | i_result = 0; |
|---|
| 480 | 480 | |
|---|
| 481 | | #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) |
|---|
| | 481 | #elif defined(LIBVLC_USE_PTHREAD) |
|---|
| 482 | 482 | |
|---|
| 483 | 483 | # ifdef DEBUG |
|---|
| … | … | |
| 655 | 655 | #elif defined( HAVE_KERNEL_SCHEDULER_H ) |
|---|
| 656 | 656 | # error Unimplemented |
|---|
| 657 | | #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) |
|---|
| | 657 | #elif defined(LIBVLC_USE_PTHREAD) |
|---|
| 658 | 658 | lldiv_t d = lldiv( deadline, 1000000 ); |
|---|
| 659 | 659 | struct timespec ts = { d.quot, d.rem * 1000 }; |
|---|
| … | … | |
| 707 | 707 | i_ret = ( TlsSetValue( p_tls->handle, p_value ) != 0 ); |
|---|
| 708 | 708 | |
|---|
| 709 | | #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) |
|---|
| | 709 | #elif defined(LIBVLC_USE_PTHREAD) |
|---|
| 710 | 710 | i_ret = pthread_setspecific( p_tls->handle, p_value ); |
|---|
| 711 | 711 | |
|---|
| … | … | |
| 727 | 727 | p_ret = TlsGetValue( p_tls->handle ); |
|---|
| 728 | 728 | |
|---|
| 729 | | #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) |
|---|
| | 729 | #elif defined(LIBVLC_USE_PTHREAD) |
|---|
| 730 | 730 | p_ret = pthread_getspecific( p_tls->handle ); |
|---|
| 731 | 731 | |
|---|
| r99fab90 |
r7fd77d9 |
|
| 1814 | 1814 | change_need_restart(); |
|---|
| 1815 | 1815 | |
|---|
| 1816 | | #if !defined(__APPLE__) && !defined(SYS_BEOS) && defined(PTHREAD_COND_T_IN_PTHREAD_H) |
|---|
| | 1816 | #if !defined(__APPLE__) && !defined(SYS_BEOS) && defined(LIBVLC_USE_PTHREAD) |
|---|
| 1817 | 1817 | add_bool( "rt-priority", VLC_FALSE, NULL, RT_PRIORITY_TEXT, |
|---|
| 1818 | 1818 | RT_PRIORITY_LONGTEXT, VLC_TRUE ); |
|---|
| … | … | |
| 1820 | 1820 | #endif |
|---|
| 1821 | 1821 | |
|---|
| 1822 | | #if !defined(SYS_BEOS) && defined(PTHREAD_COND_T_IN_PTHREAD_H) |
|---|
| | 1822 | #if !defined(SYS_BEOS) && defined(LIBVLC_USE_PTHREAD) |
|---|
| 1823 | 1823 | add_integer( "rt-offset", 0, NULL, RT_OFFSET_TEXT, |
|---|
| 1824 | 1824 | RT_OFFSET_LONGTEXT, VLC_TRUE ); |
|---|
| r46d6d2d |
r7fd77d9 |
|
| 73 | 73 | |
|---|
| 74 | 74 | #elif defined( HAVE_KERNEL_SCHEDULER_H ) |
|---|
| 75 | | #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) |
|---|
| | 75 | #elif defined( LIBVLC_USE_PTHREAD ) |
|---|
| 76 | 76 | static pthread_mutex_t once_mutex = PTHREAD_MUTEX_INITIALIZER; |
|---|
| 77 | 77 | #endif |
|---|
| … | … | |
| 116 | 116 | } |
|---|
| 117 | 117 | #elif defined( HAVE_KERNEL_SCHEDULER_H ) |
|---|
| 118 | | #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) |
|---|
| | 118 | #elif defined( LIBVLC_USE_PTHREAD ) |
|---|
| 119 | 119 | pthread_mutex_lock( &once_mutex ); |
|---|
| 120 | 120 | #endif |
|---|
| … | … | |
| 147 | 147 | |
|---|
| 148 | 148 | #elif defined( HAVE_KERNEL_SCHEDULER_H ) |
|---|
| 149 | | #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) |
|---|
| | 149 | #elif defined( LIBVLC_USE_PTHREAD ) |
|---|
| 150 | 150 | #endif |
|---|
| 151 | 151 | |
|---|
| … | … | |
| 180 | 180 | #elif defined( HAVE_KERNEL_SCHEDULER_H ) |
|---|
| 181 | 181 | while( i_status == VLC_THREADS_PENDING ) msleep( THREAD_SLEEP ); |
|---|
| 182 | | #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) |
|---|
| | 182 | #elif defined( LIBVLC_USE_PTHREAD ) |
|---|
| 183 | 183 | pthread_mutex_unlock( &once_mutex ); |
|---|
| 184 | 184 | #endif |
|---|
| … | … | |
| 203 | 203 | #elif defined( WIN32 ) |
|---|
| 204 | 204 | #elif defined( HAVE_KERNEL_SCHEDULER_H ) |
|---|
| 205 | | #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) |
|---|
| | 205 | #elif defined( LIBVLC_USE_PTHREAD ) |
|---|
| 206 | 206 | pthread_mutex_lock( &once_mutex ); |
|---|
| 207 | 207 | #endif |
|---|
| … | … | |
| 220 | 220 | #elif defined( WIN32 ) |
|---|
| 221 | 221 | #elif defined( HAVE_KERNEL_SCHEDULER_H ) |
|---|
| 222 | | #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) |
|---|
| | 222 | #elif defined( LIBVLC_USE_PTHREAD ) |
|---|
| 223 | 223 | pthread_mutex_unlock( &once_mutex ); |
|---|
| 224 | 224 | #endif |
|---|
| … | … | |
| 281 | 281 | return B_OK; |
|---|
| 282 | 282 | |
|---|
| 283 | | #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) |
|---|
| | 283 | #elif defined( LIBVLC_USE_PTHREAD ) |
|---|
| 284 | 284 | # if defined(DEBUG) |
|---|
| 285 | 285 | { |
|---|
| … | … | |
| 314 | 314 | p_mutex->mutex = CreateMutex( 0, FALSE, 0 ); |
|---|
| 315 | 315 | return ( p_mutex->mutex != NULL ? 0 : 1 ); |
|---|
| 316 | | #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) |
|---|
| | 316 | #elif defined( LIBVLC_USE_PTHREAD ) |
|---|
| 317 | 317 | pthread_mutexattr_t attr; |
|---|
| 318 | 318 | int i_result; |
|---|
| … | … | |
| 372 | 372 | return B_OK; |
|---|
| 373 | 373 | |
|---|
| 374 | | #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) |
|---|
| | 374 | #elif defined( LIBVLC_USE_PTHREAD ) |
|---|
| 375 | 375 | i_result = pthread_mutex_destroy( &p_mutex->mutex ); |
|---|
| 376 | 376 | if( i_result ) |
|---|
| … | … | |
| 464 | 464 | return 0; |
|---|
| 465 | 465 | |
|---|
| 466 | | #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) |
|---|
| | 466 | #elif defined( LIBVLC_USE_PTHREAD ) |
|---|
| 467 | 467 | pthread_condattr_t attr; |
|---|
| 468 | 468 | int ret; |
|---|
| … | … | |
| 514 | 514 | return 0; |
|---|
| 515 | 515 | |
|---|
| 516 | | #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) |
|---|
| | 516 | #elif defined( LIBVLC_USE_PTHREAD ) |
|---|
| 517 | 517 | i_result = pthread_cond_destroy( &p_condvar->cond ); |
|---|
| 518 | 518 | if( i_result ) |
|---|
| … | … | |
| 550 | 550 | i_ret = !( p_tls->handle == 0xFFFFFFFF ); |
|---|
| 551 | 551 | |
|---|
| 552 | | #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) |
|---|
| | 552 | #elif defined( LIBVLC_USE_PTHREAD ) |
|---|
| 553 | 553 | i_ret = pthread_key_create( &p_tls->handle, NULL ); |
|---|
| 554 | 554 | #endif |
|---|
| … | … | |
| 611 | 611 | i_ret = resume_thread( p_priv->thread_id ); |
|---|
| 612 | 612 | |
|---|
| 613 | | #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) |
|---|
| | 613 | #elif defined( LIBVLC_USE_PTHREAD ) |
|---|
| 614 | 614 | i_ret = pthread_create( &p_priv->thread_id, NULL, func, p_data ); |
|---|
| 615 | 615 | |
|---|
| … | … | |
| 706 | 706 | } |
|---|
| 707 | 707 | |
|---|
| 708 | | #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) |
|---|
| | 708 | #elif defined( LIBVLC_USE_PTHREAD ) |
|---|
| 709 | 709 | # ifndef __APPLE__ |
|---|
| 710 | 710 | if( config_GetInt( p_this, "rt-priority" ) > 0 ) |
|---|
| … | … | |
| 838 | 838 | i_ret = (B_OK == wait_for_thread( p_priv->thread_id, &exit_value )); |
|---|
| 839 | 839 | |
|---|
| 840 | | #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) |
|---|
| | 840 | #elif defined( LIBVLC_USE_PTHREAD ) |
|---|
| 841 | 841 | i_ret = pthread_join( p_priv->thread_id, NULL ); |
|---|
| 842 | 842 | |
|---|