Commit a332d4e1 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont
Browse files

vlc_savecancel, vlc_restorecancel: POSIX cancellation state management

parent cfb6c98d
......@@ -3,7 +3,7 @@
* This header provides portable declarations for mutexes & conditions
*****************************************************************************
* Copyright (C) 1999, 2002 the VideoLAN team
* $Id$
* Copyright © 2007-2008 Rémi Denis-Courmont
*
* Authors: Jean-Marc Dressler <polux@via.ecp.fr>
* Samuel Hocevar <sam@via.ecp.fr>
......@@ -588,6 +588,32 @@ static inline void barrier (void)
#endif
}
/**
* Save the cancellation state and disable cancellation for the calling thread.
* This function must be called before entering a piece of code that is not
* cancellation-safe.
* @param p_state storage for the previous cancellation state
* @return Nothing, always succeeds.
*/
static inline void vlc_savecancel (int *p_state)
{
#if defined (LIBVLC_USE_PTHREAD)
(void) pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, p_state);
#endif
}
/**
* Restore the cancellation state for the calling thread.
* @param state previous state as returned by vlc_savecancel().
* @return Nothing, always succeeds.
*/
static inline void vlc_restorecancel (int state)
{
#if defined (LIBVLC_USE_PTHREAD)
(void) pthread_setcancelstate (state, NULL);
#endif
}
/*****************************************************************************
* vlc_thread_create: create a thread
*****************************************************************************/
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment