* to ease NT porting
*/
-extern pthread_mutex_t rx_stats_mutex;
-extern pthread_mutex_t rx_waiting_mutex;
-extern pthread_mutex_t rx_quota_mutex;
-extern pthread_mutex_t rx_pthread_mutex;
-extern pthread_mutex_t rx_packets_mutex;
-extern pthread_mutex_t des_init_mutex;
-extern pthread_mutex_t des_random_mutex;
-extern pthread_mutex_t rx_clock_mutex;
-extern pthread_mutex_t rxi_connCacheMutex;
-extern pthread_mutex_t rx_event_mutex;
-extern pthread_mutex_t osi_malloc_mutex;
-extern pthread_mutex_t event_handler_mutex;
-extern pthread_mutex_t listener_mutex;
-extern pthread_mutex_t rx_if_init_mutex;
-extern pthread_mutex_t rx_if_mutex;
-extern pthread_mutex_t rxkad_client_uid_mutex;
-extern pthread_mutex_t rxkad_random_mutex;
-
-extern pthread_cond_t rx_event_handler_cond;
-extern pthread_cond_t rx_listener_cond;
-
-static pthread_mutex_t epoch_mutex;
-static pthread_mutex_t rx_init_mutex;
-static pthread_mutex_t rx_debug_mutex;
-static pthread_mutex_t rx_rpc_stats;
+extern afs_kmutex_t rx_stats_mutex;
+extern afs_kmutex_t rx_waiting_mutex;
+extern afs_kmutex_t rx_quota_mutex;
+extern afs_kmutex_t rx_pthread_mutex;
+extern afs_kmutex_t rx_packets_mutex;
+extern afs_kmutex_t des_init_mutex;
+extern afs_kmutex_t des_random_mutex;
+extern afs_kmutex_t rx_clock_mutex;
+extern afs_kmutex_t rxi_connCacheMutex;
+extern afs_kmutex_t rx_event_mutex;
+extern afs_kmutex_t osi_malloc_mutex;
+extern afs_kmutex_t event_handler_mutex;
+extern afs_kmutex_t listener_mutex;
+extern afs_kmutex_t rx_if_init_mutex;
+extern afs_kmutex_t rx_if_mutex;
+extern afs_kmutex_t rxkad_client_uid_mutex;
+extern afs_kmutex_t rxkad_random_mutex;
+
+extern afs_kcondvar_t rx_event_handler_cond;
+extern afs_kcondvar_t rx_listener_cond;
+
+static afs_kmutex_t epoch_mutex;
+static afs_kmutex_t rx_init_mutex;
+static afs_kmutex_t rx_debug_mutex;
+static afs_kmutex_t rx_rpc_stats;
static void
rxi_InitPthread(void)
{
- assert(pthread_mutex_init(&rx_clock_mutex, (const pthread_mutexattr_t *)0)
- == 0);
- assert(pthread_mutex_init(&rx_stats_mutex, (const pthread_mutexattr_t *)0)
- == 0);
- assert(pthread_mutex_init(&rx_waiting_mutex, (const pthread_mutexattr_t *)0)
- == 0);
- assert(pthread_mutex_init(&rx_quota_mutex, (const pthread_mutexattr_t *)0)
- == 0);
- assert(pthread_mutex_init(&rx_pthread_mutex, (const pthread_mutexattr_t *)0)
- == 0);
- assert(pthread_mutex_init(&rx_packets_mutex, (const pthread_mutexattr_t *)0)
- == 0);
- assert(pthread_mutex_init
- (&rxi_connCacheMutex, (const pthread_mutexattr_t *)0) == 0);
- assert(pthread_mutex_init(&rx_init_mutex, (const pthread_mutexattr_t *)0)
- == 0);
- assert(pthread_mutex_init(&epoch_mutex, (const pthread_mutexattr_t *)0) ==
- 0);
- assert(pthread_mutex_init(&rx_event_mutex, (const pthread_mutexattr_t *)0)
- == 0);
- assert(pthread_mutex_init(&des_init_mutex, (const pthread_mutexattr_t *)0)
- == 0);
- assert(pthread_mutex_init
- (&des_random_mutex, (const pthread_mutexattr_t *)0) == 0);
- assert(pthread_mutex_init
- (&osi_malloc_mutex, (const pthread_mutexattr_t *)0) == 0);
- assert(pthread_mutex_init
- (&event_handler_mutex, (const pthread_mutexattr_t *)0) == 0);
- assert(pthread_mutex_init(&listener_mutex, (const pthread_mutexattr_t *)0)
- == 0);
- assert(pthread_mutex_init
- (&rx_if_init_mutex, (const pthread_mutexattr_t *)0) == 0);
- assert(pthread_mutex_init(&rx_if_mutex, (const pthread_mutexattr_t *)0) ==
- 0);
- assert(pthread_mutex_init
- (&rxkad_client_uid_mutex, (const pthread_mutexattr_t *)0) == 0);
- assert(pthread_mutex_init
- (&rxkad_random_mutex, (const pthread_mutexattr_t *)0) == 0);
- assert(pthread_mutex_init(&rx_debug_mutex, (const pthread_mutexattr_t *)0)
- == 0);
+ MUTEX_INIT(&rx_clock_mutex, "clock", MUTEX_DEFAULT, 0);
+ MUTEX_INIT(&rx_stats_mutex, "stats", MUTEX_DEFAULT, 0);
+ MUTEX_INIT(&rx_waiting_mutex, "waiting", MUTEX_DEFAULT, 0);
+ MUTEX_INIT(&rx_quota_mutex, "quota", MUTEX_DEFAULT, 0);
+ MUTEX_INIT(&rx_pthread_mutex, "pthread", MUTEX_DEFAULT, 0);
+ MUTEX_INIT(&rx_packets_mutex, "packets", MUTEX_DEFAULT, 0);
+ MUTEX_INIT(&epoch_mutex, "epoch", MUTEX_DEFAULT, 0);
+ MUTEX_INIT(&rx_init_mutex, "init", MUTEX_DEFAULT, 0);
+ MUTEX_INIT(&rx_event_mutex, "event", MUTEX_DEFAULT, 0);
+ MUTEX_INIT(&des_init_mutex, "des", MUTEX_DEFAULT, 0);
+ MUTEX_INIT(&des_random_mutex, "random", MUTEX_DEFAULT, 0);
+ MUTEX_INIT(&osi_malloc_mutex, "malloc", MUTEX_DEFAULT, 0);
+ MUTEX_INIT(&event_handler_mutex, "event handler", MUTEX_DEFAULT, 0);
+ MUTEX_INIT(&rxi_connCacheMutex, "conn cache", MUTEX_DEFAULT, 0);
+ MUTEX_INIT(&listener_mutex, "listener", MUTEX_DEFAULT, 0);
+ MUTEX_INIT(&rx_if_init_mutex, "if init", MUTEX_DEFAULT, 0);
+ MUTEX_INIT(&rx_if_mutex, "if", MUTEX_DEFAULT, 0);
+ MUTEX_INIT(&rxkad_client_uid_mutex, "uid", MUTEX_DEFAULT, 0);
+ MUTEX_INIT(&rxkad_random_mutex, "rxkad random", MUTEX_DEFAULT, 0);
+ MUTEX_INIT(&rx_debug_mutex, "debug", MUTEX_DEFAULT, 0);
assert(pthread_cond_init
(&rx_event_handler_cond, (const pthread_condattr_t *)0) == 0);
* rx_epoch
*/
-#define LOCK_EPOCH assert(pthread_mutex_lock(&epoch_mutex)==0)
-#define UNLOCK_EPOCH assert(pthread_mutex_unlock(&epoch_mutex)==0)
+#define LOCK_EPOCH MUTEX_ENTER(&epoch_mutex)
+#define UNLOCK_EPOCH MUTEX_EXIT(&epoch_mutex)
#else
#define LOCK_EPOCH
#define UNLOCK_EPOCH
* rxinit_status
*/
-#define LOCK_RX_INIT assert(pthread_mutex_lock(&rx_init_mutex)==0)
-#define UNLOCK_RX_INIT assert(pthread_mutex_unlock(&rx_init_mutex)==0)
+#define LOCK_RX_INIT MUTEX_ENTER(&rx_init_mutex)
+#define UNLOCK_RX_INIT MUTEX_EXIT(&rx_init_mutex)
#else
#define LOCK_RX_INIT
#define UNLOCK_RX_INIT
* counter
*/
-#define LOCK_RX_DEBUG assert(pthread_mutex_lock(&rx_debug_mutex)==0)
-#define UNLOCK_RX_DEBUG assert(pthread_mutex_unlock(&rx_debug_mutex)==0)
+#define LOCK_RX_DEBUG MUTEX_ENTER(&rx_debug_mutex)
+#define UNLOCK_RX_DEBUG MUTEX_EXIT(&rx_debug_mutex)
#else
#define LOCK_RX_DEBUG
#define UNLOCK_RX_DEBUG
* This thread is also responsible for keeping time.
*/
static pthread_t event_handler_thread;
-pthread_cond_t rx_event_handler_cond;
-pthread_mutex_t event_handler_mutex;
-pthread_cond_t rx_listener_cond;
-pthread_mutex_t listener_mutex;
+afs_kcondvar_t rx_event_handler_cond;
+afs_kmutex_t event_handler_mutex;
+afs_kcondvar_t rx_listener_cond;
+afs_kmutex_t listener_mutex;
static int listeners_started = 0;
-pthread_mutex_t rx_clock_mutex;
+afs_kmutex_t rx_clock_mutex;
struct clock rxi_clockNow;
/*
struct timespec rx_pthread_next_event_time = { 0, 0 };
int error;
- assert(pthread_mutex_lock(&event_handler_mutex) == 0);
+ MUTEX_ENTER(&event_handler_mutex);
for (;;) {
struct clock cv;
struct clock next;
- assert(pthread_mutex_unlock(&event_handler_mutex) == 0);
+ MUTEX_EXIT(&event_handler_mutex);
next.sec = 30; /* Time to sleep if there are no events scheduled */
next.usec = 0;
clock_GetTime(&cv);
rxevent_RaiseEvents(&next);
- assert(pthread_mutex_lock(&event_handler_mutex) == 0);
+ MUTEX_ENTER(&event_handler_mutex);
if (rx_pthread_event_rescheduled) {
rx_pthread_event_rescheduled = 0;
continue;
rx_pthread_next_event_time.tv_sec = cv.sec;
rx_pthread_next_event_time.tv_nsec = cv.usec * 1000;
rx_pthread_n_event_waits++;
- error = pthread_cond_timedwait
- (&rx_event_handler_cond, &event_handler_mutex,
- &rx_pthread_next_event_time);
+ error = CV_TIMEDWAIT(&rx_event_handler_cond, &event_handler_mutex, &rx_pthread_next_event_time);
if (error == 0) {
rx_pthread_n_event_woken++;
}
void
rxi_ReScheduleEvents(void)
{
- assert(pthread_mutex_lock(&event_handler_mutex) == 0);
- pthread_cond_signal(&rx_event_handler_cond);
+ MUTEX_ENTER(&event_handler_mutex);
+ CV_SIGNAL(&rx_event_handler_cond);
rx_pthread_event_rescheduled = 1;
- assert(pthread_mutex_unlock(&event_handler_mutex) == 0);
+ MUTEX_EXIT(&event_handler_mutex);
}
u_short port;
register struct rx_packet *p = (struct rx_packet *)0;
- assert(pthread_mutex_lock(&listener_mutex) == 0);
+ MUTEX_ENTER(&listener_mutex);
while (!listeners_started) {
- assert(pthread_cond_wait(&rx_listener_cond, &listener_mutex) == 0);
+ CV_WAIT(&rx_listener_cond, &listener_mutex);
}
- assert(pthread_mutex_unlock(&listener_mutex) == 0);
+ MUTEX_EXIT(&listener_mutex);
for (;;) {
/*
*/
MUTEX_ENTER(&rx_pthread_mutex);
threadID = ++rxi_pthread_hinum;
- MUTEX_EXIT(&rx_pthread_mutex);
if (rxi_fcfs_thread_num == 0 && rxi_fcfs_thread_num != threadID)
rxi_fcfs_thread_num = threadID;
+ MUTEX_EXIT(&rx_pthread_mutex);
++rxi_availProcs;
MUTEX_EXIT(&rx_quota_mutex);
MUTEX_EXIT(&rx_pthread_mutex);
AFS_SIGSET_RESTORE();
- assert(pthread_mutex_lock(&listener_mutex) == 0);
- assert(pthread_cond_broadcast(&rx_listener_cond) == 0);
+ MUTEX_ENTER(&listener_mutex);
+ CV_BROADCAST(&rx_listener_cond);
listeners_started = 1;
- assert(pthread_mutex_unlock(&listener_mutex) == 0);
+ MUTEX_EXIT(&listener_mutex);
}