/*****************************************************************************
* Function definitions
*****************************************************************************/
-VLC_EXPORT( int, vlc_mutex_init, ( vlc_mutex_t * ) );
-VLC_EXPORT( int, vlc_mutex_init_recursive, ( vlc_mutex_t * ) );
+VLC_EXPORT( void, vlc_mutex_init, ( vlc_mutex_t * ) );
+VLC_EXPORT( void, vlc_mutex_init_recursive, ( vlc_mutex_t * ) );
VLC_EXPORT( void, vlc_mutex_destroy, ( vlc_mutex_t * ) );
VLC_EXPORT( void, vlc_mutex_lock, ( vlc_mutex_t * ) );
VLC_EXPORT( int, vlc_mutex_trylock, ( vlc_mutex_t * ) LIBVLC_USED );
VLC_EXPORT( void, vlc_mutex_unlock, ( vlc_mutex_t * ) );
-VLC_EXPORT( int, vlc_cond_init, ( vlc_cond_t * ) );
+VLC_EXPORT( void, vlc_cond_init, ( vlc_cond_t * ) );
VLC_EXPORT( void, vlc_cond_destroy, ( vlc_cond_t * ) );
VLC_EXPORT( void, vlc_cond_signal, (vlc_cond_t *) );
VLC_EXPORT( void, vlc_cond_broadcast, (vlc_cond_t *) );
/**
* Initializes a spinlock.
*/
-static inline int vlc_spin_init (vlc_spinlock_t *spin)
+static inline void vlc_spin_init (vlc_spinlock_t *spin)
{
- return pthread_spin_init (spin, PTHREAD_PROCESS_PRIVATE);
+ if (pthread_spin_init (spin, PTHREAD_PROCESS_PRIVATE))
+ abort ();
}
/**
/**
* Initializes a spinlock.
*/
-static inline int vlc_spin_init (vlc_spinlock_t *spin)
+static inline void vlc_spin_init (vlc_spinlock_t *spin)
{
- return !InitializeCriticalSectionAndSpinCount(spin, 4000);
+ if (!InitializeCriticalSectionAndSpinCount(spin, 4000))
+ abort ();
}
/**
/* Fallback to plain mutexes if spinlocks are not available */
typedef vlc_mutex_t vlc_spinlock_t;
-static inline int vlc_spin_init (vlc_spinlock_t *spin)
+static inline void vlc_spin_init (vlc_spinlock_t *spin)
{
- return vlc_mutex_init (spin);
+ vlc_mutex_init (spin);
}
# define vlc_spin_lock vlc_mutex_lock
/*****************************************************************************
* vlc_mutex_init: initialize a mutex
*****************************************************************************/
-int vlc_mutex_init( vlc_mutex_t *p_mutex )
+void vlc_mutex_init( vlc_mutex_t *p_mutex )
{
pthread_mutexattr_t attr;
- int i_result;
-
- pthread_mutexattr_init( &attr );
+ if( pthread_mutexattr_init( &attr ) )
+ abort();
#ifndef NDEBUG
/* Create error-checking mutex to detect problems more easily. */
# if defined (__GLIBC__) && (__GLIBC_MINOR__ < 6)
pthread_mutexattr_settype( &attr, PTHREAD_MUTEX_ERRORCHECK );
# endif
#endif
- i_result = pthread_mutex_init( p_mutex, &attr );
+ if( pthread_mutex_init( p_mutex, &attr ) )
+ abort();
pthread_mutexattr_destroy( &attr );
- return i_result;
}
/*****************************************************************************
* vlc_mutex_init: initialize a recursive mutex (Do not use)
*****************************************************************************/
-int vlc_mutex_init_recursive( vlc_mutex_t *p_mutex )
+void vlc_mutex_init_recursive( vlc_mutex_t *p_mutex )
{
pthread_mutexattr_t attr;
- int i_result;
pthread_mutexattr_init( &attr );
#if defined (__GLIBC__) && (__GLIBC_MINOR__ < 6)
#else
pthread_mutexattr_settype( &attr, PTHREAD_MUTEX_RECURSIVE );
#endif
- i_result = pthread_mutex_init( p_mutex, &attr );
+ if( pthread_mutex_init( p_mutex, &attr ) )
+ abort();
pthread_mutexattr_destroy( &attr );
- return( i_result );
}
/*****************************************************************************
* vlc_cond_init: initialize a condition variable
*****************************************************************************/
-int vlc_cond_init( vlc_cond_t *p_condvar )
+void vlc_cond_init( vlc_cond_t *p_condvar )
{
pthread_condattr_t attr;
- int ret;
-
- ret = pthread_condattr_init (&attr);
- if (ret)
- return ret;
+ if (pthread_condattr_init (&attr))
+ abort ();
#if !defined (_POSIX_CLOCK_SELECTION)
/* Fairly outdated POSIX support (that was defined in 2001) */
# define _POSIX_CLOCK_SELECTION (-1)
pthread_condattr_setclock (&attr, CLOCK_MONOTONIC);
#endif
- ret = pthread_cond_init (p_condvar, &attr);
+ if (pthread_cond_init (p_condvar, &attr))
+ abort ();
pthread_condattr_destroy (&attr);
- return ret;
}
/**
}
/*** Mutexes ***/
-int vlc_mutex_init( vlc_mutex_t *p_mutex )
+void vlc_mutex_init( vlc_mutex_t *p_mutex )
{
/* This creates a recursive mutex. This is OK as fast mutexes have
* no defined behavior in case of recursive locking. */
return 0;
}
-int vlc_mutex_init_recursive( vlc_mutex_t *p_mutex )
+void vlc_mutex_init_recursive( vlc_mutex_t *p_mutex )
{
InitializeCriticalSection( &p_mutex->mutex );
p_mutex->initialized = 1;
}
/*** Condition variables ***/
-int vlc_cond_init( vlc_cond_t *p_condvar )
+void vlc_cond_init( vlc_cond_t *p_condvar )
{
/* Create a manual-reset event (manual reset is needed for broadcast). */
*p_condvar = CreateEvent (NULL, TRUE, FALSE, NULL);
- return *p_condvar ? 0 : ENOMEM;
+ if (!*p_condvar)
+ abort();
}
void vlc_cond_destroy (vlc_cond_t *p_condvar)