X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_threads.h;h=01e8b716aa389c84d993fc2f467fc78b48ea87b7;hb=be378fbc80c384e2541517d6853b59411b7e67de;hp=a31f004eea9fb8fc9ce0b67c40e11cb8a5e7b8dc;hpb=af4010a87619257bd0e5540b2ea88fb5e21021fc;p=vlc diff --git a/include/vlc_threads.h b/include/vlc_threads.h index a31f004eea..01e8b716aa 100644 --- a/include/vlc_threads.h +++ b/include/vlc_threads.h @@ -171,9 +171,10 @@ VLC_EXPORT( int, vlc_threadvar_create, (vlc_threadvar_t * , void (*) (void *) ) VLC_EXPORT( void, vlc_threadvar_delete, (vlc_threadvar_t *) ); VLC_EXPORT( int, __vlc_thread_create, ( vlc_object_t *, const char *, int, const char *, void * ( * ) ( void * ), int, bool ) ); VLC_EXPORT( int, __vlc_thread_set_priority, ( vlc_object_t *, const char *, int, int ) ); -VLC_EXPORT( void, __vlc_thread_ready, ( vlc_object_t * ) ); VLC_EXPORT( void, __vlc_thread_join, ( vlc_object_t *, const char *, int ) ); +#define vlc_thread_ready vlc_object_signal + /***************************************************************************** * vlc_mutex_lock: lock a mutex *****************************************************************************/ @@ -187,7 +188,7 @@ VLC_EXPORT(void, vlc_pthread_fatal, (const char *action, int error, const char * if (val) \ vlc_pthread_fatal (action, val, psz_file, i_line) #else -# define VLC_THREAD_ASSERT (void)0 +# define VLC_THREAD_ASSERT ((void)(val)) #endif static inline void __vlc_mutex_lock( const char * psz_file, int i_line, @@ -567,10 +568,14 @@ static inline int vlc_spin_init (vlc_spinlock_t *spin) #endif static inline void barrier (void) { -#if defined (__APPLE__) - OSMemoryBarrier(); -#elif defined (__GNUC__) /* FIXME: || defined (ICC_whatever) */ +#if defined (__GNUC__) && (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) __sync_synchronize (); +#elif defined(__APPLE__) + OSMemoryBarrier (); +#elif defined(__powerpc__) + asm volatile ("sync":::"memory"); +#elif defined(__i386__) + asm volatile ("mfence":::"memory"); #elif defined (LIBVLC_USE_PTHREAD) static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_lock (&lock); @@ -592,12 +597,6 @@ static inline void barrier (void) #define vlc_thread_set_priority( P_THIS, PRIORITY ) \ __vlc_thread_set_priority( VLC_OBJECT(P_THIS), __FILE__, __LINE__, PRIORITY ) -/***************************************************************************** - * vlc_thread_ready: tell the parent thread we were successfully spawned - *****************************************************************************/ -#define vlc_thread_ready( P_THIS ) \ - __vlc_thread_ready( VLC_OBJECT(P_THIS) ) - /***************************************************************************** * vlc_thread_join: wait until a thread exits *****************************************************************************/