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

vlc_savecancel, vlc_restorecancel: POSIX cancellation state management

parent cfb6c98d
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* This header provides portable declarations for mutexes & conditions * This header provides portable declarations for mutexes & conditions
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2002 the VideoLAN team * Copyright (C) 1999, 2002 the VideoLAN team
* $Id$ * Copyright © 2007-2008 Rémi Denis-Courmont
* *
* Authors: Jean-Marc Dressler <polux@via.ecp.fr> * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
* Samuel Hocevar <sam@via.ecp.fr> * Samuel Hocevar <sam@via.ecp.fr>
...@@ -588,6 +588,32 @@ static inline void barrier (void) ...@@ -588,6 +588,32 @@ static inline void barrier (void)
#endif #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 * 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