#include <switch.h>#include "private/switch_core_pvt.h"Include dependency graph for switch_core_rwlock.c:
Go to the source code of this file.
Functions | |
| switch_status_t | switch_core_session_io_read_lock (switch_core_session_t *session) |
| switch_status_t | switch_core_session_io_write_lock (switch_core_session_t *session) |
| switch_status_t | switch_core_session_io_rwunlock (switch_core_session_t *session) |
| switch_status_t | switch_core_session_read_lock (switch_core_session_t *session) |
| switch_status_t | switch_core_session_read_lock_hangup (switch_core_session_t *session) |
| void | switch_core_session_write_lock (switch_core_session_t *session) |
| void | switch_core_session_rwunlock (switch_core_session_t *session) |
| switch_status_t switch_core_session_read_lock | ( | switch_core_session_t * | session | ) |
Definition at line 82 of file switch_core_rwlock.c.
References CF_THREAD_SLEEPING, SSF_DESTROYED, switch_channel_down_nosig, switch_channel_get_name(), SWITCH_CHANNEL_ID_LOG, switch_channel_test_flag(), switch_core_session_get_uuid(), switch_core_session_wake_session_thread(), SWITCH_LOG_ERROR, switch_log_printf(), SWITCH_STATUS_FALSE, SWITCH_STATUS_SUCCESS, switch_test_flag, switch_thread_rwlock_tryrdlock(), and switch_thread_rwlock_unlock().
00084 { 00085 switch_status_t status = SWITCH_STATUS_FALSE; 00086 00087 if (session->rwlock) { 00088 if (switch_test_flag(session, SSF_DESTROYED) || switch_channel_down_nosig(session->channel)) { 00089 status = SWITCH_STATUS_FALSE; 00090 if (switch_thread_rwlock_tryrdlock(session->rwlock) == SWITCH_STATUS_SUCCESS) { 00091 if (switch_channel_test_flag(session->channel, CF_THREAD_SLEEPING)) { 00092 #ifdef SWITCH_DEBUG_RWLOCKS 00093 switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_core_session_get_uuid(session), SWITCH_LOG_ERROR, "%s %s Ping thread\n", 00094 switch_core_session_get_uuid(session), switch_channel_get_name(session->channel)); 00095 #endif 00096 switch_core_session_wake_session_thread(session); 00097 } 00098 switch_thread_rwlock_unlock(session->rwlock); 00099 } 00100 #ifdef SWITCH_DEBUG_RWLOCKS 00101 switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_core_session_get_uuid(session), SWITCH_LOG_ERROR, "%s %s Read lock FAIL\n", 00102 switch_core_session_get_uuid(session), switch_channel_get_name(session->channel)); 00103 #endif 00104 } else { 00105 status = (switch_status_t) switch_thread_rwlock_tryrdlock(session->rwlock); 00106 #ifdef SWITCH_DEBUG_RWLOCKS 00107 switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_core_session_get_uuid(session), SWITCH_LOG_ERROR, "%s %s Read lock ACQUIRED\n", 00108 switch_core_session_get_uuid(session), switch_channel_get_name(session->channel)); 00109 #endif 00110 } 00111 } 00112 00113 return status; 00114 }
| switch_status_t switch_core_session_read_lock_hangup | ( | switch_core_session_t * | session | ) |
Definition at line 120 of file switch_core_rwlock.c.
References CS_DESTROY, SSF_DESTROYED, switch_channel_get_name(), switch_channel_get_state(), SWITCH_CHANNEL_ID_LOG, switch_core_session_get_uuid(), SWITCH_LOG_ERROR, switch_log_printf(), SWITCH_STATUS_FALSE, switch_test_flag, and switch_thread_rwlock_tryrdlock().
00122 { 00123 switch_status_t status = SWITCH_STATUS_FALSE; 00124 00125 if (session->rwlock) { 00126 if (switch_test_flag(session, SSF_DESTROYED) || switch_channel_get_state(session->channel) >= CS_DESTROY) { 00127 status = SWITCH_STATUS_FALSE; 00128 #ifdef SWITCH_DEBUG_RWLOCKS 00129 switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_core_session_get_uuid(session), SWITCH_LOG_ERROR, "%s %s Read lock FAIL\n", 00130 switch_core_session_get_uuid(session), switch_channel_get_name(session->channel)); 00131 #endif 00132 } else { 00133 status = (switch_status_t) switch_thread_rwlock_tryrdlock(session->rwlock); 00134 #ifdef SWITCH_DEBUG_RWLOCKS 00135 switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_core_session_get_uuid(session), SWITCH_LOG_ERROR, "%s %s Read lock ACQUIRED\n", 00136 switch_core_session_get_uuid(session), switch_channel_get_name(session->channel)); 00137 #endif 00138 } 00139 } 00140 00141 return status; 00142 }
| void switch_core_session_rwunlock | ( | switch_core_session_t * | session | ) |
Definition at line 163 of file switch_core_rwlock.c.
References switch_thread_rwlock_unlock().
00164 { 00165 #endif 00166 switch_thread_rwlock_unlock(session->rwlock); 00167 00168 }
| void switch_core_session_write_lock | ( | switch_core_session_t * | session | ) |
Definition at line 151 of file switch_core_rwlock.c.
References switch_thread_rwlock_wrlock().
00152 { 00153 #endif 00154 switch_thread_rwlock_wrlock(session->rwlock); 00155 }
1.4.7