diff --git a/Makefile b/Makefile
index 0c5359812a65d371d79dea9db415f04c505e2e97..960df721ae519ecb0adbb3fa641012abb5245224 100755
--- a/Makefile
+++ b/Makefile
@@ -50,7 +50,7 @@ DEBUG=-g #-pg
 OPTIONS += -DNEW_PRI_HANGUP
 
 # Optional debugging parameters
-DEBUG_THREADS = #-DDO_CRASH -DDEBUG_THREADS
+DEBUG_THREADS = #-DDEBUG_THREADS #-DDO_CRASH 
 
 # Uncomment next one to enable ast_frame tracing (for debugging)
 TRACE_FRAMES = #-DTRACE_FRAMES
diff --git a/apps/app_intercom.c b/apps/app_intercom.c
index bf139e0b9a9eb4062dd3724bcac927b33cbcb9ed..c4be328dd7a3a1dc3b15dcdf0e87e9ab4b83ce8a 100755
--- a/apps/app_intercom.c
+++ b/apps/app_intercom.c
@@ -52,26 +52,26 @@ STANDARD_LOCAL_USER;
 
 LOCAL_USER_DECL;
 
-static pthread_mutex_t sound_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t sound_lock = AST_MUTEX_INITIALIZER;
 static int sound = -1;
 
 static int write_audio(short *data, int len)
 {
 	int res;
 	struct audio_buf_info info;
-	ast_pthread_mutex_lock(&sound_lock);
+	ast_mutex_lock(&sound_lock);
 	if (sound < 0) {
 		ast_log(LOG_WARNING, "Sound device closed?\n");
-		ast_pthread_mutex_unlock(&sound_lock);
+		ast_mutex_unlock(&sound_lock);
 		return -1;
 	}
     if (ioctl(sound, SNDCTL_DSP_GETOSPACE, &info)) {
 		ast_log(LOG_WARNING, "Unable to read output space\n");
-		ast_pthread_mutex_unlock(&sound_lock);
+		ast_mutex_unlock(&sound_lock);
         return -1;
     }
 	res = write(sound, data, len);
-	ast_pthread_mutex_unlock(&sound_lock);
+	ast_mutex_unlock(&sound_lock);
 	return res;
 }
 
diff --git a/apps/app_macro.c b/apps/app_macro.c
index 331e55072fbd40313e3da04db2211474a0db4a4d..4ea0947bb447e979cdc75fe1a39217250a8657b3 100755
--- a/apps/app_macro.c
+++ b/apps/app_macro.c
@@ -59,7 +59,7 @@ static int macro_exec(struct ast_channel *chan, void *data)
   char varname[80];
   char *oldargs[MAX_ARGS + 1] = { NULL, };
   int argc, x;
-  int res;
+  int res=0;
   char oldexten[256]="";
   int oldpriority;
   char pc[80];
diff --git a/apps/app_meetme.c b/apps/app_meetme.c
index 12b0ce590e7808104c3f30389554aa68eb04df58..a26392d0246876b0310cc6a1a62a263013ad5d35 100755
--- a/apps/app_meetme.c
+++ b/apps/app_meetme.c
@@ -72,7 +72,7 @@ static struct conf {
 	struct conf *next;
 } *confs;
 
-static pthread_mutex_t conflock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t conflock = AST_MUTEX_INITIALIZER;
 
 #include "enter.h"
 #include "leave.h"
@@ -112,7 +112,7 @@ static void conf_play(struct conf *conf, int sound)
 {
 	unsigned char *data;
 	int len;
-	ast_pthread_mutex_lock(&conflock);
+	ast_mutex_lock(&conflock);
 	switch(sound) {
 	case ENTER:
 		data = enter;
@@ -128,14 +128,14 @@ static void conf_play(struct conf *conf, int sound)
 	}
 	if (data) 
 		careful_write(conf->fd, data, len);
-	pthread_mutex_unlock(&conflock);
+	ast_mutex_unlock(&conflock);
 }
 
 static struct conf *build_conf(char *confno, int make)
 {
 	struct conf *cnf;
 	struct zt_confinfo ztc;
-	ast_pthread_mutex_lock(&conflock);
+	ast_mutex_lock(&conflock);
 	cnf = confs;
 	while(cnf) {
 		if (!strcmp(confno, cnf->confno)) 
@@ -179,7 +179,7 @@ static struct conf *build_conf(char *confno, int make)
 cnfout:
 	if (cnf && make) 
 		cnf->users++;
-	ast_pthread_mutex_unlock(&conflock);
+	ast_mutex_unlock(&conflock);
 	return cnf;
 }
 
@@ -431,7 +431,7 @@ zapretry:
 
 outrun:
 
-	ast_pthread_mutex_lock(&conflock);
+	ast_mutex_lock(&conflock);
 	/* Clean up */
 	conf->users--;
 	if (!conf->users) {
@@ -453,7 +453,7 @@ outrun:
 		close(conf->fd);
 		free(conf);
 	}
-	pthread_mutex_unlock(&conflock);
+	ast_mutex_unlock(&conflock);
 	return ret;
 }
 
diff --git a/apps/app_queue.c b/apps/app_queue.c
index 8417833a903f59b23aaab7243da2159068837e4e..43440e435674053c6b8e847224e777f6df871843 100755
--- a/apps/app_queue.c
+++ b/apps/app_queue.c
@@ -145,7 +145,7 @@ struct member {
 };
 
 struct ast_call_queue {
-	pthread_mutex_t	lock;	
+	ast_mutex_t	lock;	
 	char name[80];			/* Name of the queue */
 	char moh[80];			/* Name of musiconhold to be used */
 	char announce[80];		/* Announcement to play */
@@ -170,7 +170,7 @@ struct ast_call_queue {
 };
 
 static struct ast_call_queue *queues = NULL;
-static pthread_mutex_t qlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t qlock = AST_MUTEX_INITIALIZER;
 
 static char *int2strat(int strategy)
 {
@@ -198,12 +198,12 @@ static int join_queue(char *queuename, struct queue_ent *qe)
 	struct queue_ent *cur, *prev = NULL;
 	int res = -1;
 	int pos = 0;
-	ast_pthread_mutex_lock(&qlock);
+	ast_mutex_lock(&qlock);
 	q = queues;
 	while(q) {
 		if (!strcasecmp(q->name, queuename)) {
 			/* This is our one */
-			ast_pthread_mutex_lock(&q->lock);
+			ast_mutex_lock(&q->lock);
 			if (q->members && (!q->maxlen || (q->count < q->maxlen))) {
 				/* There's space for us, put us at the end */
 				prev = NULL;
@@ -234,12 +234,12 @@ static int join_queue(char *queuename, struct queue_ent *qe)
 ast_log(LOG_NOTICE, "Queue '%s' Join, Channel '%s', Position '%d'\n", q->name, qe->chan->name, qe->pos );
 #endif
 			}
-			ast_pthread_mutex_unlock(&q->lock);
+			ast_mutex_unlock(&q->lock);
 			break;
 		}
 		q = q->next;
 	}
-	ast_pthread_mutex_unlock(&qlock);
+	ast_mutex_unlock(&qlock);
 	return res;
 }
 
@@ -258,7 +258,7 @@ static void free_members(struct ast_call_queue *q)
 static void destroy_queue(struct ast_call_queue *q)
 {
 	struct ast_call_queue *cur, *prev = NULL;
-	ast_pthread_mutex_lock(&qlock);
+	ast_mutex_lock(&qlock);
 	cur = queues;
 	while(cur) {
 		if (cur == q) {
@@ -271,7 +271,7 @@ static void destroy_queue(struct ast_call_queue *q)
 		}
 		cur = cur->next;
 	}
-	ast_pthread_mutex_unlock(&qlock);
+	ast_mutex_unlock(&qlock);
 	free_members(q);
 	free(q);
 }
@@ -284,7 +284,7 @@ static void leave_queue(struct queue_ent *qe)
 	q = qe->parent;
 	if (!q)
 		return;
-	ast_pthread_mutex_lock(&q->lock);
+	ast_mutex_lock(&q->lock);
 
 	prev = NULL;
 	cur = q->head;
@@ -310,7 +310,7 @@ ast_log(LOG_NOTICE, "Queue '%s' Leave, Channel '%s'\n", q->name, qe->chan->name
 		}
 		cur = cur->next;
 	}
-	ast_pthread_mutex_unlock(&q->lock);
+	ast_mutex_unlock(&q->lock);
 	if (q->dead && !q->count) {	
 		/* It's dead and nobody is in it, so kill it */
 		destroy_queue(q);
@@ -591,9 +591,9 @@ static int wait_our_turn(struct queue_ent *qe)
 	int res = 0;
 	for (;;) {
 		/* Atomically read the parent head */
-		pthread_mutex_lock(&qe->parent->lock);
+		ast_mutex_lock(&qe->parent->lock);
 		ch = qe->parent->head;
-		pthread_mutex_unlock(&qe->parent->lock);
+		ast_mutex_unlock(&qe->parent->lock);
 		/* If we are now at the top of the head, break out */
 		if (qe->parent->head == qe)
 			break;
@@ -610,7 +610,7 @@ static int update_queue(struct ast_call_queue *q, struct localuser *user)
 	struct member *cur;
 	/* Since a reload could have taken place, we have to traverse the list to
 		be sure it's still valid */
-	ast_pthread_mutex_lock(&q->lock);
+	ast_mutex_lock(&q->lock);
 	cur = q->members;
 	while(cur) {
 		if (user->member == cur) {
@@ -620,7 +620,7 @@ static int update_queue(struct ast_call_queue *q, struct localuser *user)
 		}
 		cur = cur->next;
 	}
-	ast_pthread_mutex_unlock(&q->lock);
+	ast_mutex_unlock(&q->lock);
 	return 0;
 }
 
@@ -692,7 +692,7 @@ static int try_calling(struct queue_ent *qe, char *options, char *announceoverri
 	char *announce = NULL;
 	char digit = 0;
 	/* Hold the lock while we setup the outgoing calls */
-	ast_pthread_mutex_lock(&qe->parent->lock);
+	ast_mutex_lock(&qe->parent->lock);
 	cur = qe->parent->members;
 	if (strlen(qe->announce))
 		announce = qe->announce;
@@ -759,7 +759,7 @@ static int try_calling(struct queue_ent *qe, char *options, char *announceoverri
 		to = -1;
 	if (qe->parent->strategy)
 		ring_one(qe, outgoing);
-	ast_pthread_mutex_unlock(&qe->parent->lock);
+	ast_mutex_unlock(&qe->parent->lock);
 	lpeer = wait_for_answer(qe, outgoing, &to, &allowredir_in, &allowredir_out, &allowdisconnect, &digit);
 	if (lpeer)
 		peer = lpeer->chan;
@@ -846,9 +846,9 @@ static int wait_a_bit(struct queue_ent *qe)
 {
 	int retrywait;
 	/* Hold the lock while we setup the outgoing calls */
-	ast_pthread_mutex_lock(&qe->parent->lock);
+	ast_mutex_lock(&qe->parent->lock);
 	retrywait = qe->parent->retry * 1000;
-	ast_pthread_mutex_unlock(&qe->parent->lock);
+	ast_mutex_unlock(&qe->parent->lock);
 	return ast_waitfordigit(qe->chan, retrywait);
 }
 
@@ -941,7 +941,7 @@ static int rqm_exec(struct ast_channel *chan, void *data)
 	{
 		while( q && ( res != 0 ) && (!found) ) 
 		{
-			ast_pthread_mutex_lock(&q->lock);
+			ast_mutex_lock(&q->lock);
 			if( strcmp( q->name, queuename) == 0 )
 			{
 				// found queue, try to remove  interface
@@ -977,7 +977,7 @@ static int rqm_exec(struct ast_channel *chan, void *data)
 						"Not there\n", interface, queuename);
 			}
 
-			ast_pthread_mutex_unlock(&q->lock);
+			ast_mutex_unlock(&q->lock);
 			q = q->next;
 		}
 	}
@@ -1026,7 +1026,7 @@ static int aqm_exec(struct ast_channel *chan, void *data)
 	{
 		while( q && ( res != 0 ) && (!found) ) 
 		{
-			ast_pthread_mutex_lock(&q->lock);
+			ast_mutex_lock(&q->lock);
 			if( strcmp( q->name, queuename) == 0 )
 			{
 				// found queue, try to enable interface
@@ -1050,7 +1050,7 @@ static int aqm_exec(struct ast_channel *chan, void *data)
 						"Already there\n", interface, queuename);
 			}
 
-			ast_pthread_mutex_unlock(&q->lock);
+			ast_mutex_unlock(&q->lock);
 			q = q->next;
 		}
 	}
@@ -1171,7 +1171,7 @@ static void reload_queues(void)
 		ast_log(LOG_NOTICE, "No call queueing config file, so no call queues\n");
 		return;
 	}
-	ast_pthread_mutex_lock(&qlock);
+	ast_mutex_lock(&qlock);
 	/* Mark all queues as dead for the moment */
 	q = queues;
 	while(q) {
@@ -1195,7 +1195,7 @@ static void reload_queues(void)
 				if (q) {
 					/* Initialize it */
 					memset(q, 0, sizeof(struct ast_call_queue));
-					ast_pthread_mutex_init(&q->lock);
+					ast_mutex_init(&q->lock);
 					strncpy(q->name, cat, sizeof(q->name));
 					new = 1;
 				} else new = 0;
@@ -1203,7 +1203,7 @@ static void reload_queues(void)
 					new = 0;
 			if (q) {
 				if (!new) 
-					ast_pthread_mutex_lock(&q->lock);
+					ast_mutex_lock(&q->lock);
 				/* Re-initialize the queue */
 				q->dead = 0;
 				q->retry = 0;
@@ -1274,7 +1274,7 @@ static void reload_queues(void)
 				if (q->maxlen < 0)
 					q->maxlen = 0;
 				if (!new) 
-					ast_pthread_mutex_unlock(&q->lock);
+					ast_mutex_unlock(&q->lock);
 				if (new) {
 					q->next = queues;
 					queues = q;
@@ -1301,7 +1301,7 @@ static void reload_queues(void)
 			ql = q;
 		q = qn;
 	}
-	ast_pthread_mutex_unlock(&qlock);
+	ast_mutex_unlock(&qlock);
 }
 
 static int queues_show(int fd, int argc, char **argv)
@@ -1323,7 +1323,7 @@ static int queues_show(int fd, int argc, char **argv)
 		return RESULT_SUCCESS;
 	}
 	while(q) {
-		ast_pthread_mutex_lock(&q->lock);
+		ast_mutex_lock(&q->lock);
 		if (q->maxlen)
 			snprintf(max, sizeof(max), "%d", q->maxlen);
 		else
@@ -1354,7 +1354,7 @@ static int queues_show(int fd, int argc, char **argv)
 		} else
 			ast_cli(fd, "   No Callers\n");
 		ast_cli(fd, "\n");
-		ast_pthread_mutex_unlock(&q->lock);
+		ast_mutex_unlock(&q->lock);
 		q = q->next;
 	}
 	return RESULT_SUCCESS;
@@ -1379,7 +1379,7 @@ static int manager_queues_status( struct mansession *s, struct message *m )
 	time(&now);
 	q = queues;
 	while(q) {
-		ast_pthread_mutex_lock(&q->lock);
+		ast_mutex_lock(&q->lock);
 		ast_cli(s->fd, "Event: QueueParams\r\n"
 					"Queue: %s\r\n"
 					"Max: %d\r\n"
@@ -1401,7 +1401,7 @@ static int manager_queues_status( struct mansession *s, struct message *m )
 				"Wait: %ld\r\n"
 				"\r\n", 
 					q->name, pos++, qe->chan->name, (qe->chan->callerid ? qe->chan->callerid : ""), now - qe->start);
-		ast_pthread_mutex_unlock(&q->lock);
+		ast_mutex_unlock(&q->lock);
 		q = q->next;
 	}
 	return RESULT_SUCCESS;
diff --git a/apps/app_voicemail2.c b/apps/app_voicemail2.c
index a955fe32e33dbf6a5503dc2572131430738a191f..2dd8d07471c644c26e03dfbe3f488fded4ff5176 100755
--- a/apps/app_voicemail2.c
+++ b/apps/app_voicemail2.c
@@ -133,7 +133,7 @@ static char *app = "VoiceMail2";
 /* Check mail, control, etc */
 static char *app2 = "VoiceMailMain2";
 
-static pthread_mutex_t vmlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t vmlock = AST_MUTEX_INITIALIZER;
 struct ast_vm_user *users;
 struct ast_vm_user *usersl;
 struct vm_zone *zones = NULL;
@@ -183,7 +183,7 @@ static void apply_options(struct ast_vm_user *vmu, char *options)
 
 #ifdef USEMYSQLVM
 MYSQL *dbhandler=NULL;
-pthread_mutex_t mysqllock;
+ast_mutex_t mysqllock;
 char dbuser[80];
 char dbpass[80];
 char dbname[80];
@@ -241,7 +241,7 @@ static struct ast_vm_user *find_user(struct ast_vm_user *ivm, char *context, cha
 		} else {
 			sprintf(query, "SELECT password,fullname,email,pager,options FROM users WHERE mailbox='%s'", mailbox);
 		}
-		pthread_mutex_lock(&mysqllock);
+		ast_mutex_lock(&mysqllock);
 		mysql_query(dbhandler, query);
 		if ((result=mysql_store_result(dbhandler))!=NULL) {
 			if ((rowval=mysql_fetch_row(result))!=NULL) {
@@ -264,16 +264,16 @@ static struct ast_vm_user *find_user(struct ast_vm_user *ivm, char *context, cha
 					}
 				}
 				mysql_free_result(result);
-				pthread_mutex_unlock(&mysqllock);
+				ast_mutex_unlock(&mysqllock);
 				return(retval);
 			} else {
 				mysql_free_result(result);
-				pthread_mutex_unlock(&mysqllock);
+				ast_mutex_unlock(&mysqllock);
 				free(retval);
 				return(NULL);
 			}
 		}
-		pthread_mutex_unlock(&mysqllock);
+		ast_mutex_unlock(&mysqllock);
 		free(retval);
 	}
 	return(NULL);
@@ -288,10 +288,10 @@ static void vm_change_password(struct ast_vm_user *vmu, char *password)
 	} else {
 		sprintf(query, "UPDATE users SET password='%s' WHERE mailbox='%s' AND password='%s'", password, vmu->mailbox, vmu->password);
 	}
-	pthread_mutex_lock(&mysqllock);
+	ast_mutex_lock(&mysqllock);
 	mysql_query(dbhandler, query);
 	strcpy(vmu->password, password);
-	pthread_mutex_unlock(&mysqllock);
+	ast_mutex_unlock(&mysqllock);
 }
 
 static void reset_user_pw(char *context, char *mailbox, char *password)
@@ -303,9 +303,9 @@ static void reset_user_pw(char *context, char *mailbox, char *password)
 	} else {
 		sprintf(query, "UPDATE users SET password='%s' WHERE mailbox='%s'", password, mailbox);
 	}
-	pthread_mutex_lock(&mysqllock);
+	ast_mutex_lock(&mysqllock);
 	mysql_query(dbhandler, query);
-	pthread_mutex_unlock(&mysqllock);
+	ast_mutex_unlock(&mysqllock);
 }
 #else
 
@@ -313,7 +313,7 @@ static struct ast_vm_user *find_user(struct ast_vm_user *ivm, char *context, cha
 {
 	/* This function could be made to generate one from a database, too */
 	struct ast_vm_user *vmu=NULL, *cur;
-	ast_pthread_mutex_lock(&vmlock);
+	ast_mutex_lock(&vmlock);
 	cur = users;
 	while(cur) {
 		if ((!context || !strcasecmp(context, cur->context)) &&
@@ -336,7 +336,7 @@ static struct ast_vm_user *find_user(struct ast_vm_user *ivm, char *context, cha
 			vmu->next = NULL;
 		}
 	}
-	ast_pthread_mutex_unlock(&vmlock);
+	ast_mutex_unlock(&vmlock);
 	return vmu;
 }
 
@@ -345,7 +345,7 @@ static int reset_user_pw(char *context, char *mailbox, char *newpass)
 	/* This function could be made to generate one from a database, too */
 	struct ast_vm_user *cur;
 	int res = -1;
-	ast_pthread_mutex_lock(&vmlock);
+	ast_mutex_lock(&vmlock);
 	cur = users;
 	while(cur) {
 		if ((!context || !strcasecmp(context, cur->context)) &&
@@ -357,7 +357,7 @@ static int reset_user_pw(char *context, char *mailbox, char *newpass)
 		strncpy(cur->password, newpass, sizeof(cur->password) - 1);
 		res = 0;
 	}
-	ast_pthread_mutex_unlock(&vmlock);
+	ast_mutex_unlock(&vmlock);
 	return res;
 }
 
@@ -2876,7 +2876,7 @@ static int load_config(void)
 	int x;
 
 	cfg = ast_load(VOICEMAIL_CONFIG);
-	ast_pthread_mutex_lock(&vmlock);
+	ast_mutex_lock(&vmlock);
 	cur = users;
 	while(cur) {
 		l = cur;
@@ -3054,10 +3054,10 @@ static int load_config(void)
 			}
 		}
 		ast_destroy(cfg);
-		ast_pthread_mutex_unlock(&vmlock);
+		ast_mutex_unlock(&vmlock);
 		return 0;
 	} else {
-		ast_pthread_mutex_unlock(&vmlock);
+		ast_mutex_unlock(&vmlock);
 		ast_log(LOG_WARNING, "Error reading voicemail config\n");
 		return -1;
 	}
diff --git a/asterisk.c b/asterisk.c
index ccc38457477aac18234e13195b86d9835e246e76..8813c072277a1559529c91a873e5f11aacd56bf4 100755
--- a/asterisk.c
+++ b/asterisk.c
@@ -75,7 +75,7 @@ static struct ast_atexit {
 	void (*func)(void);
 	struct ast_atexit *next;
 } *atexits = NULL;
-static pthread_mutex_t atexitslock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t atexitslock = AST_MUTEX_INITIALIZER;
 
 time_t ast_startuptime;
 time_t ast_lastreloadtime;
@@ -111,7 +111,7 @@ int ast_register_atexit(void (*func)(void))
 	struct ast_atexit *ae;
 	ast_unregister_atexit(func);
 	ae = malloc(sizeof(struct ast_atexit));
-	ast_pthread_mutex_lock(&atexitslock);
+	ast_mutex_lock(&atexitslock);
 	if (ae) {
 		memset(ae, 0, sizeof(struct ast_atexit));
 		ae->next = atexits;
@@ -119,14 +119,14 @@ int ast_register_atexit(void (*func)(void))
 		atexits = ae;
 		res = 0;
 	}
-	ast_pthread_mutex_unlock(&atexitslock);
+	ast_mutex_unlock(&atexitslock);
 	return res;
 }
 
 void ast_unregister_atexit(void (*func)(void))
 {
 	struct ast_atexit *ae, *prev = NULL;
-	ast_pthread_mutex_lock(&atexitslock);
+	ast_mutex_lock(&atexitslock);
 	ae = atexits;
 	while(ae) {
 		if (ae->func == func) {
@@ -139,7 +139,7 @@ void ast_unregister_atexit(void (*func)(void))
 		prev = ae;
 		ae = ae->next;
 	}
-	ast_pthread_mutex_unlock(&atexitslock);
+	ast_mutex_unlock(&atexitslock);
 }
 
 static int fdprint(int fd, const char *s)
@@ -402,14 +402,14 @@ static int shuttingdown = 0;
 static void ast_run_atexits(void)
 {
 	struct ast_atexit *ae;
-	ast_pthread_mutex_lock(&atexitslock);
+	ast_mutex_lock(&atexitslock);
 	ae = atexits;
 	while(ae) {
 		if (ae->func) 
 			ae->func();
 		ae = ae->next;
 	}
-	ast_pthread_mutex_unlock(&atexitslock);
+	ast_mutex_unlock(&atexitslock);
 }
 
 static void quit_handler(int num, int nice, int safeshutdown, int restart)
diff --git a/astmm.c b/astmm.c
index 94e4555b5f557a2071e2ef01a98d7f963cfeaaeb..ebc6fc1e0e4cc8f629c8ce9a28d8e4a372f69c83 100755
--- a/astmm.c
+++ b/astmm.c
@@ -55,7 +55,7 @@ static struct ast_region {
 #define HASH(a) \
 	(((unsigned long)(a)) % SOME_PRIME)
 	
-static pthread_mutex_t reglock = PTHREAD_MUTEX_INITIALIZER;
+static ast_mutex_t reglock = PTHREAD_MUTEX_INITIALIZER;
 
 static inline void *__ast_alloc_region(size_t size, int which, const char *file, int lineno, const char *func)
 {
@@ -63,7 +63,7 @@ static inline void *__ast_alloc_region(size_t size, int which, const char *file,
 	void *ptr=NULL;
 	int hash;
 	reg = malloc(size + sizeof(struct ast_region));
-	pthread_mutex_lock(&reglock);
+	ast_mutex_lock(&reglock);
 	if (reg) {
 		strncpy(reg->file, file, sizeof(reg->file) - 1);
 		reg->file[sizeof(reg->file) - 1] = '\0';
@@ -77,7 +77,7 @@ static inline void *__ast_alloc_region(size_t size, int which, const char *file,
 		reg->next = regions[hash];
 		regions[hash] = reg;
 	}
-	pthread_mutex_unlock(&reglock);
+	ast_mutex_unlock(&reglock);
 	if (!reg) {
 		fprintf(stderr, "Out of memory :(\n");
 		if (mmlog) {
@@ -94,7 +94,7 @@ static inline size_t __ast_sizeof_region(void *ptr)
 	struct ast_region *reg;
 	size_t len = 0;
 	
-	pthread_mutex_lock(&reglock);
+	ast_mutex_lock(&reglock);
 	reg = regions[hash];
 	while(reg) {
 		if (reg->data == ptr) {
@@ -103,7 +103,7 @@ static inline size_t __ast_sizeof_region(void *ptr)
 		}
 		reg = reg->next;
 	}
-	pthread_mutex_unlock(&reglock);
+	ast_mutex_unlock(&reglock);
 	return len;
 }
 
@@ -111,7 +111,7 @@ static void __ast_free_region(void *ptr, const char *file, int lineno, const cha
 {
 	int hash = HASH(ptr);
 	struct ast_region *reg, *prev = NULL;
-	pthread_mutex_lock(&reglock);
+	ast_mutex_lock(&reglock);
 	reg = regions[hash];
 	while(reg) {
 		if (reg->data == ptr) {
@@ -125,7 +125,7 @@ static void __ast_free_region(void *ptr, const char *file, int lineno, const cha
 		prev = reg;
 		reg = reg->next;
 	}
-	pthread_mutex_unlock(&reglock);
+	ast_mutex_unlock(&reglock);
 	if (reg) {
 		free(reg);
 	} else {
@@ -226,7 +226,7 @@ static int handle_show_memory(int fd, int argc, char *argv[])
 		fn = argv[3];
 
 	/* try to lock applications list ... */
-	pthread_mutex_lock(&reglock);
+	ast_mutex_lock(&reglock);
 
 	for (x=0;x<SOME_PRIME;x++) {
 		reg = regions[x];
@@ -240,7 +240,7 @@ static int handle_show_memory(int fd, int argc, char *argv[])
 		}
 	}
 	ast_cli(fd, "%d bytes allocated %d units total\n", len, count);
-	pthread_mutex_unlock(&reglock);
+	ast_mutex_unlock(&reglock);
 	return RESULT_SUCCESS;
 }
 
@@ -264,7 +264,7 @@ static int handle_show_memory_summary(int fd, int argc, char *argv[])
 		fn = argv[3];
 
 	/* try to lock applications list ... */
-	pthread_mutex_lock(&reglock);
+	ast_mutex_lock(&reglock);
 
 	for (x=0;x<SOME_PRIME;x++) {
 		reg = regions[x];
@@ -289,7 +289,7 @@ static int handle_show_memory_summary(int fd, int argc, char *argv[])
 			reg = reg->next;
 		}
 	}
-	pthread_mutex_unlock(&reglock);
+	ast_mutex_unlock(&reglock);
 	
 	/* Dump the whole list */
 	while(list) {
diff --git a/autoservice.c b/autoservice.c
index 5f15c244c8fdca2a7fb554304987433ca73237b4..fc81c483b5e9439f955927c0517e7316cfecbf15 100755
--- a/autoservice.c
+++ b/autoservice.c
@@ -36,7 +36,7 @@
 
 #define MAX_AUTOMONS 256
 
-static pthread_mutex_t autolock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t autolock = AST_MUTEX_INITIALIZER;
 
 struct asent {
 	struct ast_channel *chan;
@@ -56,7 +56,7 @@ static void *autoservice_run(void *ign)
 	struct ast_frame *f;
 	for(;;) {
 		x = 0;
-		ast_pthread_mutex_lock(&autolock);
+		ast_mutex_lock(&autolock);
 		as = aslist;
 		while(as) {
 			if (!as->chan->_softhangup) {
@@ -67,7 +67,7 @@ static void *autoservice_run(void *ign)
 			}
 			as = as->next;
 		}
-		ast_pthread_mutex_unlock(&autolock);
+		ast_mutex_unlock(&autolock);
 
 /* 		if (!aslist)
 			break; */
@@ -89,7 +89,7 @@ int ast_autoservice_start(struct ast_channel *chan)
 	int res = -1;
 	struct asent *as;
 	int needstart;
-	ast_pthread_mutex_lock(&autolock);
+	ast_mutex_lock(&autolock);
 	needstart = (asthread == -1) ? 1 : 0 /* aslist ? 0 : 1 */;
 	as = aslist;
 	while(as) {
@@ -116,7 +116,7 @@ int ast_autoservice_start(struct ast_channel *chan)
 			}
 		}
 	}
-	ast_pthread_mutex_unlock(&autolock);
+	ast_mutex_unlock(&autolock);
 	return res;
 }
 
@@ -124,7 +124,7 @@ int ast_autoservice_stop(struct ast_channel *chan)
 {
 	int res = -1;
 	struct asent *as, *prev;
-	ast_pthread_mutex_lock(&autolock);
+	ast_mutex_lock(&autolock);
 	as = aslist;
 	prev = NULL;
 	while(as) {
@@ -144,7 +144,7 @@ int ast_autoservice_stop(struct ast_channel *chan)
 	}
 	if (asthread != -1) 
 		pthread_kill(asthread, SIGURG);
-	ast_pthread_mutex_unlock(&autolock);
+	ast_mutex_unlock(&autolock);
 	/* Wait for it to un-block */
 	while(chan->blocking)
 		usleep(1000);
diff --git a/cdr.c b/cdr.c
index 6be19f2609dd98e46d6817dc582d00c695db53ea..20b3e2cfaaad5b89bb23d4e45dba2cd1aa67f801 100755
--- a/cdr.c
+++ b/cdr.c
@@ -27,7 +27,7 @@
 int ast_default_amaflags = AST_CDR_DOCUMENTATION;
 char ast_default_accountcode[20] = "";
 
-static pthread_mutex_t cdrlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t cdrlock = AST_MUTEX_INITIALIZER;
 
 static struct ast_cdr_beitem {
 	char name[20];
@@ -52,14 +52,14 @@ int ast_cdr_register(char *name, char *desc, ast_cdrbe be)
 		ast_log(LOG_WARNING, "CDR engine '%s' lacks backend\n", name);
 		return -1;
 	}
-	ast_pthread_mutex_lock(&cdrlock);
+	ast_mutex_lock(&cdrlock);
 	i = bes;
 	while(i) {
 		if (!strcasecmp(name, i->name))
 			break;
 		i = i->next;
 	}
-	ast_pthread_mutex_unlock(&cdrlock);
+	ast_mutex_unlock(&cdrlock);
 	if (i) {
 		ast_log(LOG_WARNING, "Already have a CDR backend called '%s'\n", name);
 		return -1;
@@ -71,17 +71,17 @@ int ast_cdr_register(char *name, char *desc, ast_cdrbe be)
 	strncpy(i->name, name, sizeof(i->name) - 1);
 	strncpy(i->desc, desc, sizeof(i->desc) - 1);
 	i->be = be;
-	ast_pthread_mutex_lock(&cdrlock);
+	ast_mutex_lock(&cdrlock);
 	i->next = bes;
 	bes = i;
-	ast_pthread_mutex_unlock(&cdrlock);
+	ast_mutex_unlock(&cdrlock);
 	return 0;
 }
 
 void ast_cdr_unregister(char *name)
 {
 	struct ast_cdr_beitem *i, *prev = NULL;
-	ast_pthread_mutex_lock(&cdrlock);
+	ast_mutex_lock(&cdrlock);
 	i = bes;
 	while(i) {
 		if (!strcasecmp(name, i->name)) {
@@ -93,7 +93,7 @@ void ast_cdr_unregister(char *name)
 		}
 		i = i->next;
 	}
-	ast_pthread_mutex_unlock(&cdrlock);
+	ast_mutex_unlock(&cdrlock);
 	if (i) 
 		free(i);
 }
@@ -367,13 +367,13 @@ void ast_cdr_post(struct ast_cdr *cdr)
 		} else
 			cdr->billsec = 0;
 		cdr->posted = 1;
-		ast_pthread_mutex_lock(&cdrlock);
+		ast_mutex_lock(&cdrlock);
 		i = bes;
 		while(i) {
 			i->be(cdr);
 			i = i->next;
 		}
-		ast_pthread_mutex_unlock(&cdrlock);
+		ast_mutex_unlock(&cdrlock);
 	}
 }
 
diff --git a/cdr/cdr_mysql.c b/cdr/cdr_mysql.c
index b8127cf0d0efbd8456ddb3c3a07d4a4e0d7d0f51..a2632eacc960ed5e236ffd8fdd09039016535f43 100755
--- a/cdr/cdr_mysql.c
+++ b/cdr/cdr_mysql.c
@@ -37,7 +37,7 @@ static char *config = "cdr_mysql.conf";
 static char *hostname = NULL, *dbname = NULL, *dbuser = NULL, *password = NULL;
 static int connected = 0;
 
-static pthread_mutex_t mysql_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t mysql_lock = AST_MUTEX_INITIALIZER;
 
 static MYSQL mysql;
 
@@ -48,7 +48,7 @@ static int mysql_log(struct ast_cdr *cdr)
 	char sqlcmd[2048], timestr[128];
 	time_t t;
 
-	ast_pthread_mutex_lock(&mysql_lock);
+	ast_mutex_lock(&mysql_lock);
 
 	memset(sqlcmd,0,2048);
 
@@ -91,11 +91,11 @@ static int mysql_log(struct ast_cdr *cdr)
 	
 		if (mysql_real_query(&mysql,sqlcmd,strlen(sqlcmd))) {
 			ast_log(LOG_ERROR,"Failed to insert into database.");
-			ast_pthread_mutex_unlock(&mysql_lock);
+			ast_mutex_unlock(&mysql_lock);
 			return -1;
 		}
 	}
-	ast_pthread_mutex_unlock(&mysql_lock);
+	ast_mutex_unlock(&mysql_lock);
 	return 0;
 }
 
diff --git a/channel.c b/channel.c
index 89a6db7c64e35fe85ada212217ddc270dc5650e2..c393631795b8a4279a65b49d71285cafda104790 100755
--- a/channel.c
+++ b/channel.c
@@ -45,25 +45,6 @@ static int uniqueint = 0;
 
 /* XXX Lock appropriately in more functions XXX */
 
-#ifdef DEBUG_MUTEX
-/* Convenient mutex debugging functions */
-#define PTHREAD_MUTEX_LOCK(a) __PTHREAD_MUTEX_LOCK(__FUNCTION__, a)
-#define PTHREAD_MUTEX_UNLOCK(a) __PTHREAD_MUTEX_UNLOCK(__FUNCTION__, a)
-
-static int __PTHREAD_MUTEX_LOCK(char *f, pthread_mutex_t *a) {
-	ast_log(LOG_DEBUG, "Locking %p (%s)\n", a, f); 
-	return ast_pthread_mutex_lock(a);
-}
-
-static int __PTHREAD_MUTEX_UNLOCK(char *f, pthread_mutex_t *a) {
-	ast_log(LOG_DEBUG, "Unlocking %p (%s)\n", a, f); 
-	return ast_pthread_mutex_unlock(a);
-}
-#else
-#define PTHREAD_MUTEX_LOCK(a) ast_pthread_mutex_lock(a)
-#define PTHREAD_MUTEX_UNLOCK(a) ast_pthread_mutex_unlock(a)
-#endif
-
 struct chanlist {
 	char type[80];
 	char description[80];
@@ -77,7 +58,7 @@ struct ast_channel *channels = NULL;
 /* Protect the channel list (highly unlikely that two things would change
    it at the same time, but still! */
    
-static pthread_mutex_t chlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t chlock = AST_MUTEX_INITIALIZER;
 
 int ast_check_hangup(struct ast_channel *chan)
 {
@@ -99,9 +80,9 @@ time_t	myt;
 static int ast_check_hangup_locked(struct ast_channel *chan)
 {
 	int res;
-	ast_pthread_mutex_lock(&chan->lock);
+	ast_mutex_lock(&chan->lock);
 	res = ast_check_hangup(chan);
-	ast_pthread_mutex_unlock(&chan->lock);
+	ast_mutex_unlock(&chan->lock);
 	return res;
 }
 
@@ -110,13 +91,13 @@ void ast_begin_shutdown(int hangup)
 	struct ast_channel *c;
 	shutting_down = 1;
 	if (hangup) {
-		PTHREAD_MUTEX_LOCK(&chlock);
+		ast_mutex_lock(&chlock);
 		c = channels;
 		while(c) {
 			ast_softhangup(c, AST_SOFTHANGUP_SHUTDOWN);
 			c = c->next;
 		}
-		PTHREAD_MUTEX_UNLOCK(&chlock);
+		ast_mutex_unlock(&chlock);
 	}
 }
 
@@ -124,13 +105,13 @@ int ast_active_channels(void)
 {
 	struct ast_channel *c;
 	int cnt = 0;
-	PTHREAD_MUTEX_LOCK(&chlock);
+	ast_mutex_lock(&chlock);
 	c = channels;
 	while(c) {
 		cnt++;
 		c = c->next;
 	}
-	PTHREAD_MUTEX_UNLOCK(&chlock);
+	ast_mutex_unlock(&chlock);
 	return cnt;
 }
 
@@ -167,7 +148,7 @@ int ast_channel_register_ex(char *type, char *description, int capabilities,
 		int (*devicestate)(void *data))
 {
 	struct chanlist *chan, *last=NULL;
-	if (PTHREAD_MUTEX_LOCK(&chlock)) {
+	if (ast_mutex_lock(&chlock)) {
 		ast_log(LOG_WARNING, "Unable to lock channel list\n");
 		return -1;
 	}
@@ -175,7 +156,7 @@ int ast_channel_register_ex(char *type, char *description, int capabilities,
 	while(chan) {
 		if (!strcasecmp(type, chan->type)) {
 			ast_log(LOG_WARNING, "Already have a handler for type '%s'\n", type);
-			PTHREAD_MUTEX_UNLOCK(&chlock);
+			ast_mutex_unlock(&chlock);
 			return -1;
 		}
 		last = chan;
@@ -184,7 +165,7 @@ int ast_channel_register_ex(char *type, char *description, int capabilities,
 	chan = malloc(sizeof(struct chanlist));
 	if (!chan) {
 		ast_log(LOG_WARNING, "Out of memory\n");
-		PTHREAD_MUTEX_UNLOCK(&chlock);
+		ast_mutex_unlock(&chlock);
 		return -1;
 	}
 	strncpy(chan->type, type, sizeof(chan->type)-1);
@@ -201,7 +182,7 @@ int ast_channel_register_ex(char *type, char *description, int capabilities,
 		ast_log(LOG_DEBUG, "Registered handler for '%s' (%s)\n", chan->type, chan->description);
 	else if (option_verbose > 1)
 		ast_verbose( VERBOSE_PREFIX_2 "Registered channel type '%s' (%s)\n", chan->type, chan->description);
-	PTHREAD_MUTEX_UNLOCK(&chlock);
+	ast_mutex_unlock(&chlock);
 	return 0;
 }
 
@@ -286,7 +267,7 @@ struct ast_channel *ast_channel_alloc(int needqueue)
 	/* If shutting down, don't allocate any new channels */
 	if (shutting_down)
 		return NULL;
-	PTHREAD_MUTEX_LOCK(&chlock);
+	ast_mutex_lock(&chlock);
 	tmp = malloc(sizeof(struct ast_channel));
 	if (tmp) {
 		memset(tmp, 0, sizeof(struct ast_channel));
@@ -334,7 +315,7 @@ struct ast_channel *ast_channel_alloc(int needqueue)
 					tmp->fout = 0;
 					snprintf(tmp->uniqueid, sizeof(tmp->uniqueid), "%li.%d", time(NULL), uniqueint++);
 					headp=&tmp->varshead;
-					ast_pthread_mutex_init(&tmp->lock);
+					ast_mutex_init(&tmp->lock);
 				        AST_LIST_HEAD_INIT(headp);
 					tmp->vars=ast_var_assign("tempvar","tempval");
 					AST_LIST_INSERT_HEAD(headp,tmp->vars,entries);
@@ -359,7 +340,7 @@ struct ast_channel *ast_channel_alloc(int needqueue)
 		}
 	} else 
 		ast_log(LOG_WARNING, "Out of memory\n");
-	PTHREAD_MUTEX_UNLOCK(&chlock);
+	ast_mutex_unlock(&chlock);
 	return tmp;
 }
 
@@ -376,7 +357,7 @@ int ast_queue_frame(struct ast_channel *chan, struct ast_frame *fin, int lock)
 		return -1;
 	}
 	if (lock)
-		ast_pthread_mutex_lock(&chan->lock);
+		ast_mutex_lock(&chan->lock);
 	prev = NULL;
 	cur = chan->pvt->readq;
 	while(cur) {
@@ -393,7 +374,7 @@ int ast_queue_frame(struct ast_channel *chan, struct ast_frame *fin, int lock)
 			ast_log(LOG_DEBUG, "Dropping voice to exceptionally long queue on %s\n", chan->name);
 			ast_frfree(f);
 			if (lock)
-				ast_pthread_mutex_unlock(&chan->lock);
+				ast_mutex_unlock(&chan->lock);
 			return 0;
 		}
 	}
@@ -409,7 +390,7 @@ int ast_queue_frame(struct ast_channel *chan, struct ast_frame *fin, int lock)
 		pthread_kill(chan->blocker, SIGURG);
 	}
 	if (lock)
-		ast_pthread_mutex_unlock(&chan->lock);
+		ast_mutex_unlock(&chan->lock);
 	return 0;
 }
 
@@ -446,10 +427,10 @@ void ast_channel_undefer_dtmf(struct ast_channel *chan)
 struct ast_channel *ast_channel_walk(struct ast_channel *prev)
 {
 	struct ast_channel *l, *ret=NULL;
-	PTHREAD_MUTEX_LOCK(&chlock);
+	ast_mutex_lock(&chlock);
 	l = channels;
 	if (!prev) {
-		PTHREAD_MUTEX_UNLOCK(&chlock);
+		ast_mutex_unlock(&chlock);
 		return l;
 	}
 	while(l) {
@@ -457,7 +438,7 @@ struct ast_channel *ast_channel_walk(struct ast_channel *prev)
 			ret = l->next;
 		l = l->next;
 	}
-	PTHREAD_MUTEX_UNLOCK(&chlock);
+	ast_mutex_unlock(&chlock);
 	return ret;
 	
 }
@@ -511,7 +492,7 @@ void ast_channel_free(struct ast_channel *chan)
 	
 	headp=&chan->varshead;
 	
-	PTHREAD_MUTEX_LOCK(&chlock);
+	ast_mutex_lock(&chlock);
 	cur = channels;
 	while(cur) {
 		if (cur == chan) {
@@ -551,7 +532,7 @@ void ast_channel_free(struct ast_channel *chan)
 		free(chan->ani);
 	if (chan->rdnis)
 		free(chan->rdnis);
-	pthread_mutex_destroy(&chan->lock);
+	ast_mutex_destroy(&chan->lock);
 	/* Close pipes if appropriate */
 	if ((fd = chan->pvt->alertpipe[0]) > -1)
 		close(fd);
@@ -581,7 +562,7 @@ void ast_channel_free(struct ast_channel *chan)
 	free(chan->pvt);
 	chan->pvt = NULL;
 	free(chan);
-	PTHREAD_MUTEX_UNLOCK(&chlock);
+	ast_mutex_unlock(&chlock);
 
 	ast_device_state_changed(name);
 }
@@ -604,9 +585,9 @@ int ast_softhangup_nolock(struct ast_channel *chan, int cause)
 int ast_softhangup(struct ast_channel *chan, int cause)
 {
 	int res;
-	ast_pthread_mutex_lock(&chan->lock);
+	ast_mutex_lock(&chan->lock);
 	res = ast_softhangup_nolock(chan, cause);
-	ast_pthread_mutex_unlock(&chan->lock);
+	ast_mutex_unlock(&chan->lock);
 	return res;
 }
 
@@ -629,7 +610,7 @@ int ast_hangup(struct ast_channel *chan)
 	int res = 0;
 	/* Don't actually hang up a channel that will masquerade as someone else, or
 	   if someone is going to masquerade as us */
-	ast_pthread_mutex_lock(&chan->lock);
+	ast_mutex_lock(&chan->lock);
 	if (chan->masq) {
 		if (ast_do_masquerade(chan)) 
 			ast_log(LOG_WARNING, "Failed to perform masquerade\n");
@@ -637,13 +618,13 @@ int ast_hangup(struct ast_channel *chan)
 
 	if (chan->masq) {
 		ast_log(LOG_WARNING, "%s getting hung up, but someone is trying to masq into us?!?\n", chan->name);
-		ast_pthread_mutex_unlock(&chan->lock);
+		ast_mutex_unlock(&chan->lock);
 		return 0;
 	}
 	/* If this channel is one which will be masqueraded into something, 
 	   mark it as a zombie already, so we know to free it later */
 	if (chan->masqr) {
-		ast_pthread_mutex_unlock(&chan->lock);
+		ast_mutex_unlock(&chan->lock);
 		chan->zombie=1;
 		return 0;
 	}
@@ -679,7 +660,7 @@ int ast_hangup(struct ast_channel *chan)
 		if (option_debug)
 			ast_log(LOG_DEBUG, "Hanging up zombie '%s'\n", chan->name);
 			
-	ast_pthread_mutex_unlock(&chan->lock);
+	ast_mutex_unlock(&chan->lock);
 	manager_event(EVENT_FLAG_CALL, "Hangup", 
 			"Channel: %s\r\n"
 			"Uniqueid: %s\r\n",
@@ -693,7 +674,7 @@ void ast_channel_unregister(char *type)
 	struct chanlist *chan, *last=NULL;
 	if (option_debug)
 		ast_log(LOG_DEBUG, "Unregistering channel type '%s'\n", type);
-	if (PTHREAD_MUTEX_LOCK(&chlock)) {
+	if (ast_mutex_lock(&chlock)) {
 		ast_log(LOG_WARNING, "Unable to lock channel list\n");
 		return;
 	}
@@ -705,13 +686,13 @@ void ast_channel_unregister(char *type)
 			else
 				backends = backends->next;
 			free(chan);
-			PTHREAD_MUTEX_UNLOCK(&chlock);
+			ast_mutex_unlock(&chlock);
 			return;
 		}
 		last = chan;
 		chan = chan->next;
 	}
-	PTHREAD_MUTEX_UNLOCK(&chlock);
+	ast_mutex_unlock(&chlock);
 }
 
 int ast_answer(struct ast_channel *chan)
@@ -825,16 +806,16 @@ struct ast_channel *ast_waitfor_nandfds(struct ast_channel **c, int n, int *fds,
 	
 	/* Perform any pending masquerades */
 	for (x=0;x<n;x++) {
-		ast_pthread_mutex_lock(&c[x]->lock);
+		ast_mutex_lock(&c[x]->lock);
 		if (c[x]->masq) {
 			if (ast_do_masquerade(c[x])) {
 				ast_log(LOG_WARNING, "Masquerade failed\n");
 				*ms = -1;
-				ast_pthread_mutex_unlock(&c[x]->lock);
+				ast_mutex_unlock(&c[x]->lock);
 				return NULL;
 			}
 		}
-		ast_pthread_mutex_unlock(&c[x]->lock);
+		ast_mutex_unlock(&c[x]->lock);
 	}
 	
 	tv.tv_sec = *ms / 1000;
@@ -1012,14 +993,14 @@ struct ast_frame *ast_read(struct ast_channel *chan)
 		AST_FRAME_NULL,
 	};
 	
-	ast_pthread_mutex_lock(&chan->lock);
+	ast_mutex_lock(&chan->lock);
 	if (chan->masq) {
 		if (ast_do_masquerade(chan)) {
 			ast_log(LOG_WARNING, "Failed to perform masquerade\n");
 			f = NULL;
 		} else
 			f =  &null_frame;
-		pthread_mutex_unlock(&chan->lock);
+		ast_mutex_unlock(&chan->lock);
 		return f;
 	}
 
@@ -1027,7 +1008,7 @@ struct ast_frame *ast_read(struct ast_channel *chan)
 	if (chan->zombie || ast_check_hangup(chan)) {
 		if (chan->generator)
 			ast_deactivate_generator(chan);
-		pthread_mutex_unlock(&chan->lock);
+		ast_mutex_unlock(&chan->lock);
 		return NULL;
 	}
 
@@ -1037,7 +1018,7 @@ struct ast_frame *ast_read(struct ast_channel *chan)
 		chan->dtmff.subclass = chan->dtmfq[0];
 		/* Drop first digit */
 		memmove(chan->dtmfq, chan->dtmfq + 1, sizeof(chan->dtmfq) - 1);
-		pthread_mutex_unlock(&chan->lock);
+		ast_mutex_unlock(&chan->lock);
 		return &chan->dtmff;
 	}
 	
@@ -1053,7 +1034,7 @@ struct ast_frame *ast_read(struct ast_channel *chan)
 		ioctl(chan->timingfd, ZT_TIMERACK, &blah);
 		func = chan->timingfunc;
 		data = chan->timingdata;
-		pthread_mutex_unlock(&chan->lock);
+		ast_mutex_unlock(&chan->lock);
 		if (func) {
 #if 0
 			ast_log(LOG_DEBUG, "Calling private function\n");
@@ -1061,10 +1042,10 @@ struct ast_frame *ast_read(struct ast_channel *chan)
 			func(data);
 		} else {
 			blah = 0;
-			pthread_mutex_lock(&chan->lock);
+			ast_mutex_lock(&chan->lock);
 			ioctl(chan->timingfd, ZT_TIMERCONFIG, &blah);
 			chan->timingdata = NULL;
-			pthread_mutex_unlock(&chan->lock);
+			ast_mutex_unlock(&chan->lock);
 		}
 		f =  &null_frame;
 		return f;
@@ -1136,7 +1117,7 @@ struct ast_frame *ast_read(struct ast_channel *chan)
 		ast_setstate(chan, AST_STATE_UP);
 		ast_cdr_answer(chan->cdr);
 	} 
-	pthread_mutex_unlock(&chan->lock);
+	ast_mutex_unlock(&chan->lock);
 
 	/* Run any generator sitting on the line */
 	if (f && (f->frametype == AST_FRAME_VOICE) && chan->generatordata) {
@@ -1321,28 +1302,28 @@ int ast_write(struct ast_channel *chan, struct ast_frame *fr)
 	int res = -1;
 	struct ast_frame *f = NULL;
 	/* Stop if we're a zombie or need a soft hangup */
-	ast_pthread_mutex_lock(&chan->lock);
+	ast_mutex_lock(&chan->lock);
 	if (chan->zombie || ast_check_hangup(chan))  {
-		ast_pthread_mutex_unlock(&chan->lock);
+		ast_mutex_unlock(&chan->lock);
 		return -1;
 	}
 	/* Handle any pending masquerades */
 	if (chan->masq) {
 		if (ast_do_masquerade(chan)) {
 			ast_log(LOG_WARNING, "Failed to perform masquerade\n");
-			ast_pthread_mutex_unlock(&chan->lock);
+			ast_mutex_unlock(&chan->lock);
 			return -1;
 		}
 	}
 	if (chan->masqr) {
-		ast_pthread_mutex_unlock(&chan->lock);
+		ast_mutex_unlock(&chan->lock);
 		return 0;
 	}
 	if (chan->generatordata) {
 		if (chan->writeinterrupt)
 			ast_deactivate_generator(chan);
 		else {
-			ast_pthread_mutex_unlock(&chan->lock);
+			ast_mutex_unlock(&chan->lock);
 			return 0;
 		}
 	}
@@ -1402,7 +1383,7 @@ int ast_write(struct ast_channel *chan, struct ast_frame *fr)
 			chan->fout++;
 		chan->fout++;
 	}
-	ast_pthread_mutex_unlock(&chan->lock);
+	ast_mutex_unlock(&chan->lock);
 	return res;
 }
 
@@ -1534,7 +1515,7 @@ struct ast_channel *ast_request(char *type, int format, void *data)
 	int capabilities;
 	int fmt;
 	int res;
-	if (PTHREAD_MUTEX_LOCK(&chlock)) {
+	if (ast_mutex_lock(&chlock)) {
 		ast_log(LOG_WARNING, "Unable to lock channel list\n");
 		return NULL;
 	}
@@ -1546,10 +1527,10 @@ struct ast_channel *ast_request(char *type, int format, void *data)
 			res = ast_translator_best_choice(&fmt, &capabilities);
 			if (res < 0) {
 				ast_log(LOG_WARNING, "No translator path exists for channel type %s (native %d) to %d\n", type, chan->capabilities, format);
-				PTHREAD_MUTEX_UNLOCK(&chlock);
+				ast_mutex_unlock(&chlock);
 				return NULL;
 			}
-			PTHREAD_MUTEX_UNLOCK(&chlock);
+			ast_mutex_unlock(&chlock);
 			if (chan->requester)
 				c = chan->requester(type, capabilities, data);
 			if (c) {
@@ -1567,7 +1548,7 @@ struct ast_channel *ast_request(char *type, int format, void *data)
 	}
 	if (!chan)
 		ast_log(LOG_WARNING, "No channel type registered for '%s'\n", type);
-	PTHREAD_MUTEX_UNLOCK(&chlock);
+	ast_mutex_unlock(&chlock);
 	return c;
 }
 
@@ -1605,14 +1586,14 @@ int ast_device_state(char *device)
 	*number = 0;
 	number++;
 		
-	if (PTHREAD_MUTEX_LOCK(&chlock)) {
+	if (ast_mutex_lock(&chlock)) {
 		ast_log(LOG_WARNING, "Unable to lock channel list\n");
 		return -1;
 	}
 	chanls = backends;
 	while(chanls) {
 		if (!strcasecmp(tech, chanls->type)) {
-			PTHREAD_MUTEX_UNLOCK(&chlock);
+			ast_mutex_unlock(&chlock);
 			if (!chanls->devicestate) 
 				return ast_parse_device_state(device);
 			else {
@@ -1625,7 +1606,7 @@ int ast_device_state(char *device)
 		}
 		chanls = chanls->next;
 	}
-	PTHREAD_MUTEX_UNLOCK(&chlock);
+	ast_mutex_unlock(&chlock);
 	return AST_DEVICE_INVALID;
 }
 
@@ -1636,11 +1617,11 @@ int ast_call(struct ast_channel *chan, char *addr, int timeout)
 	   return anyway.  */
 	int res = -1;
 	/* Stop if we're a zombie or need a soft hangup */
-	ast_pthread_mutex_lock(&chan->lock);
+	ast_mutex_lock(&chan->lock);
 	if (!chan->zombie && !ast_check_hangup(chan)) 
 		if (chan->pvt->call)
 			res = chan->pvt->call(chan, addr, timeout);
-	pthread_mutex_unlock(&chan->lock);
+	ast_mutex_unlock(&chan->lock);
 	return res;
 }
 
@@ -1651,7 +1632,7 @@ int ast_transfer(struct ast_channel *chan, char *dest)
 	   return anyway.  */
 	int res = -1;
 	/* Stop if we're a zombie or need a soft hangup */
-	ast_pthread_mutex_lock(&chan->lock);
+	ast_mutex_lock(&chan->lock);
 	if (!chan->zombie && !ast_check_hangup(chan)) {
 		if (chan->pvt->transfer) {
 			res = chan->pvt->transfer(chan, dest);
@@ -1660,7 +1641,7 @@ int ast_transfer(struct ast_channel *chan, char *dest)
 		} else
 			res = 0;
 	}
-	pthread_mutex_unlock(&chan->lock);
+	ast_mutex_unlock(&chan->lock);
 	return res;
 }
 
@@ -1871,7 +1852,7 @@ static int ast_do_masquerade(struct ast_channel *original)
 	   while the features are nice, the cost is very high in terms of pure nastiness. XXX */
 
 	/* We need the clone's lock, too */
-	ast_pthread_mutex_lock(&clone->lock);
+	ast_mutex_lock(&clone->lock);
 
 	ast_log(LOG_DEBUG, "Got clone lock on '%s' at %p\n", clone->name, &clone->lock);
 
@@ -1921,7 +1902,7 @@ static int ast_do_masquerade(struct ast_channel *original)
 		res = clone->pvt->hangup(clone);
 	if (res) {
 		ast_log(LOG_WARNING, "Hangup failed!  Strange things may happen!\n");
-		pthread_mutex_unlock(&clone->lock);
+		ast_mutex_unlock(&clone->lock);
 		return -1;
 	}
 	
@@ -1984,13 +1965,13 @@ static int ast_do_masquerade(struct ast_channel *original)
 	   zombie, then free it now (since it already is considered invalid). */
 	if (clone->zombie) {
 		ast_log(LOG_DEBUG, "Destroying clone '%s'\n", clone->name);
-		pthread_mutex_unlock(&clone->lock);
+		ast_mutex_unlock(&clone->lock);
 		ast_channel_free(clone);
 		manager_event(EVENT_FLAG_CALL, "Hangup", "Channel: %s\r\n", zombn);
 	} else {
 		ast_log(LOG_DEBUG, "Released clone lock on '%s'\n", clone->name);
 		clone->zombie=1;
-		pthread_mutex_unlock(&clone->lock);
+		ast_mutex_unlock(&clone->lock);
 	}
 	/* Set the write format */
 	ast_set_write_format(original, wformat);
diff --git a/channels/chan_agent.c b/channels/chan_agent.c
index 53dd4e7e95277304e12f75092d7edfa572bc474d..74155d0a80fd9ee87b900fa148e1ce5b9904eb41 100755
--- a/channels/chan_agent.c
+++ b/channels/chan_agent.c
@@ -81,13 +81,13 @@ static int wrapuptime;
 static int ackcall;
 
 static int usecnt =0;
-static pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
 
 /* Protect the interface list (of sip_pvt's) */
-static pthread_mutex_t agentlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t agentlock = AST_MUTEX_INITIALIZER;
 
 static struct agent_pvt {
-	pthread_mutex_t lock;				/* Channel private lock */
+	ast_mutex_t lock;				/* Channel private lock */
 	int dead;							/* Poised for destruction? */
 	int pending;						/* Not a real agent -- just pending a match */
 	int abouttograb;					/* About to grab */
@@ -102,7 +102,7 @@ static struct agent_pvt {
 	char agent[AST_MAX_AGENT];			/* Agent ID */
 	char password[AST_MAX_AGENT];		/* Password for Agent login */
 	char name[AST_MAX_AGENT];
-	pthread_mutex_t app_lock;			/* Synchronization between owning applications */
+	ast_mutex_t app_lock;			/* Synchronization between owning applications */
 	volatile pthread_t owning_app;		/* Owning application thread id */
 	volatile int app_sleep_cond;		/* Sleep condition for the login app */
 	struct ast_channel *owner;			/* Agent */
@@ -168,8 +168,8 @@ static struct agent_pvt *add_agent(char *agent, int pending)
 		if (p) {
 			memset(p, 0, sizeof(struct agent_pvt));
 			strncpy(p->agent, tmp, sizeof(p->agent) -1);
-			ast_pthread_mutex_init( &p->lock );
-			ast_pthread_mutex_init( &p->app_lock );
+			ast_mutex_init( &p->lock );
+			ast_mutex_init( &p->app_lock );
 			p->owning_app = -1;
 			p->app_sleep_cond = 1;
 			p->group = group;
@@ -204,7 +204,7 @@ static int agent_cleanup(struct agent_pvt *p)
 	chan->pvt->pvt = NULL;
 	p->app_sleep_cond = 1;
 	/* Release ownership of the agent to other threads (presumably running the login app). */
-	ast_pthread_mutex_unlock(&p->app_lock);
+	ast_mutex_unlock(&p->app_lock);
 	if (chan)
 		ast_channel_free(chan);
 	if (p->dead)
@@ -226,7 +226,7 @@ static struct ast_frame  *agent_read(struct ast_channel *ast)
 	struct ast_frame *f = NULL;
 	static struct ast_frame null_frame = { AST_FRAME_NULL, };
 	static struct ast_frame answer_frame = { AST_FRAME_CONTROL, AST_CONTROL_ANSWER };
-	ast_pthread_mutex_lock(&p->lock); 
+	ast_mutex_lock(&p->lock); 
 	if (p->chan) {
 		p->chan->pvt->rawreadformat = ast->pvt->rawreadformat;
 		f = ast_read(p->chan);
@@ -270,7 +270,7 @@ static struct ast_frame  *agent_read(struct ast_channel *ast)
 		f = NULL;
 	}
 	CLEANUP(ast,p);
-	ast_pthread_mutex_unlock(&p->lock);
+	ast_mutex_unlock(&p->lock);
 	return f;
 }
 
@@ -278,28 +278,28 @@ static int agent_write(struct ast_channel *ast, struct ast_frame *f)
 {
 	struct agent_pvt *p = ast->pvt->pvt;
 	int res = -1;
-	ast_pthread_mutex_lock(&p->lock);
+	ast_mutex_lock(&p->lock);
 	if (p->chan) {
 		p->chan->pvt->rawwriteformat = ast->pvt->rawwriteformat;
 		res = ast_write(p->chan, f);
 	} else
 		res = 0;
 	CLEANUP(ast, p);
-	ast_pthread_mutex_unlock(&p->lock);
+	ast_mutex_unlock(&p->lock);
 	return res;
 }
 
 static int agent_fixup(struct ast_channel *oldchan, struct ast_channel *newchan)
 {
 	struct agent_pvt *p = newchan->pvt->pvt;
-	ast_pthread_mutex_lock(&p->lock);
+	ast_mutex_lock(&p->lock);
 	if (p->owner != oldchan) {
 		ast_log(LOG_WARNING, "old channel wasn't %p but was %p\n", oldchan, p->owner);
-		ast_pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return -1;
 	}
 	p->owner = newchan;
-	ast_pthread_mutex_unlock(&p->lock);
+	ast_mutex_unlock(&p->lock);
 	return 0;
 }
 
@@ -307,12 +307,12 @@ static int agent_indicate(struct ast_channel *ast, int condition)
 {
 	struct agent_pvt *p = ast->pvt->pvt;
 	int res = -1;
-	ast_pthread_mutex_lock(&p->lock);
+	ast_mutex_lock(&p->lock);
 	if (p->chan)
 		res = ast_indicate(p->chan, condition);
 	else
 		res = 0;
-	ast_pthread_mutex_unlock(&p->lock);
+	ast_mutex_unlock(&p->lock);
 	return res;
 }
 
@@ -320,12 +320,12 @@ static int agent_digit(struct ast_channel *ast, char digit)
 {
 	struct agent_pvt *p = ast->pvt->pvt;
 	int res = -1;
-	ast_pthread_mutex_lock(&p->lock);
+	ast_mutex_lock(&p->lock);
 	if (p->chan)
 		res = p->chan->pvt->send_digit(p->chan, digit);
 	else
 		res = 0;
-	ast_pthread_mutex_unlock(&p->lock);
+	ast_mutex_unlock(&p->lock);
 	return res;
 }
 
@@ -333,7 +333,7 @@ static int agent_call(struct ast_channel *ast, char *dest, int timeout)
 {
 	struct agent_pvt *p = ast->pvt->pvt;
 	int res = -1;
-	ast_pthread_mutex_lock(&p->lock);
+	ast_mutex_lock(&p->lock);
 	if (!p->chan) {
 		if (p->pending) {
 			ast_log(LOG_DEBUG, "Pretending to dial on pending agent\n");
@@ -343,7 +343,7 @@ static int agent_call(struct ast_channel *ast, char *dest, int timeout)
 			ast_log(LOG_NOTICE, "Whoa, they hung up between alloc and call...  what are the odds of that?\n");
 			res = -1;
 		}
-		ast_pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return res;
 	} else if (strlen(p->loginchan)) {
 		time(&p->start);
@@ -352,7 +352,7 @@ static int agent_call(struct ast_channel *ast, char *dest, int timeout)
 			ast_verbose(VERBOSE_PREFIX_3 "outgoing agentcall, to agent '%s', on '%s'\n", p->agent, p->chan->name);
 		res = ast_call(p->chan, p->loginchan, 0);
 		CLEANUP(ast,p);
-		ast_pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return res;
 	}
 	ast_verbose( VERBOSE_PREFIX_3 "agent_call, call to agent '%s' call on '%s'\n", p->agent, p->chan->name);
@@ -385,7 +385,7 @@ static int agent_call(struct ast_channel *ast, char *dest, int timeout)
 		ast_setstate(ast, AST_STATE_UP);
 	}
 	CLEANUP(ast,p);
-	ast_pthread_mutex_unlock(&p->lock);
+	ast_mutex_unlock(&p->lock);
 	return res;
 }
 
@@ -393,7 +393,7 @@ static int agent_hangup(struct ast_channel *ast)
 {
 	struct agent_pvt *p = ast->pvt->pvt;
 	int howlong = 0;
-	ast_pthread_mutex_lock(&p->lock);
+	ast_mutex_lock(&p->lock);
 	p->owner = NULL;
 	ast->pvt->pvt = NULL;
 	p->app_sleep_cond = 1;
@@ -415,38 +415,38 @@ static int agent_hangup(struct ast_channel *ast)
 				strcpy(p->loginchan, "");
 			}
 		} else if (p->dead) {
-			ast_pthread_mutex_lock(&p->chan->lock);
+			ast_mutex_lock(&p->chan->lock);
 			ast_softhangup(p->chan, AST_SOFTHANGUP_EXPLICIT);
-			ast_pthread_mutex_unlock(&p->chan->lock);
+			ast_mutex_unlock(&p->chan->lock);
 		} else {
-			ast_pthread_mutex_lock(&p->chan->lock);
+			ast_mutex_lock(&p->chan->lock);
 			ast_moh_start(p->chan, p->moh);
-			ast_pthread_mutex_unlock(&p->chan->lock);
+			ast_mutex_unlock(&p->chan->lock);
 		}
 	}
 #if 0
-		ast_pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		/* Release ownership of the agent to other threads (presumably running the login app). */
-		ast_pthread_mutex_unlock(&p->app_lock);
+		ast_mutex_unlock(&p->app_lock);
 	} else if (p->dead) {
 		/* Go ahead and lose it */
-		ast_pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		/* Release ownership of the agent to other threads (presumably running the login app). */
-		ast_pthread_mutex_unlock(&p->app_lock);
+		ast_mutex_unlock(&p->app_lock);
 	} else {
-		ast_pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		/* Release ownership of the agent to other threads (presumably running the login app). */
-		ast_pthread_mutex_unlock(&p->app_lock);
+		ast_mutex_unlock(&p->app_lock);
 	}
 #endif	
-	ast_pthread_mutex_unlock(&p->lock);
+	ast_mutex_unlock(&p->lock);
 	/* Release ownership of the agent to other threads (presumably running the login app). */
-	ast_pthread_mutex_unlock(&p->app_lock);
+	ast_mutex_unlock(&p->app_lock);
 
 	if (p->pending) {
-		ast_pthread_mutex_lock(&agentlock);
+		ast_mutex_lock(&agentlock);
 		agent_unlink(p);
-		ast_pthread_mutex_unlock(&agentlock);
+		ast_mutex_unlock(&agentlock);
 	}
 	if (p->abouttograb) {
 		/* Let the "about to grab" thread know this isn't valid anymore, and let it
@@ -456,11 +456,11 @@ static int agent_hangup(struct ast_channel *ast)
 		free(p);
 	} else if (p->chan) {
 		/* Not dead -- check availability now */
-		ast_pthread_mutex_lock(&p->lock);
+		ast_mutex_lock(&p->lock);
 		/* check_availability(p, 1); */
 		/* Store last disconnect time */
 		gettimeofday(&p->lastdisc, NULL);
-		ast_pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 	}
 	return 0;
 }
@@ -473,7 +473,7 @@ static int agent_cont_sleep( void *data )
 
 	p = (struct agent_pvt *)data;
 
-	ast_pthread_mutex_lock(&p->lock);
+	ast_mutex_lock(&p->lock);
 	res = p->app_sleep_cond;
 	if (p->lastdisc.tv_sec) {
 		gettimeofday(&tv, NULL);
@@ -481,7 +481,7 @@ static int agent_cont_sleep( void *data )
 			(tv.tv_usec - p->lastdisc.tv_usec) / 1000 > p->wrapuptime) 
 			res = 1;
 	}
-	ast_pthread_mutex_unlock(&p->lock);
+	ast_mutex_unlock(&p->lock);
 #if 0
 	if( !res )
 		ast_log( LOG_DEBUG, "agent_cont_sleep() returning %d\n", res );
@@ -534,9 +534,9 @@ static struct ast_channel *agent_new(struct agent_pvt *p, int state)
 		tmp->pvt->indicate = agent_indicate;
 		tmp->pvt->fixup = agent_fixup;
 		p->owner = tmp;
-		ast_pthread_mutex_lock(&usecnt_lock);
+		ast_mutex_lock(&usecnt_lock);
 		usecnt++;
-		ast_pthread_mutex_unlock(&usecnt_lock);
+		ast_mutex_unlock(&usecnt_lock);
 		ast_update_use_count();
 		tmp->priority = 1;
 		/* Wake up and wait for other applications (by definition the login app)
@@ -547,13 +547,13 @@ static struct ast_channel *agent_new(struct agent_pvt *p, int state)
 		 * implemented in the kernel for this.
 		 */
 		p->app_sleep_cond = 0;
-		if( pthread_mutex_trylock(&p->app_lock) )
+		if( ast_mutex_trylock(&p->app_lock) )
 		{
 			if (p->chan) {
 				ast_queue_frame(p->chan, &null_frame, 1);
-				ast_pthread_mutex_unlock(&p->lock);	/* For other thread to read the condition. */
-				ast_pthread_mutex_lock(&p->app_lock);
-				ast_pthread_mutex_lock(&p->lock);
+				ast_mutex_unlock(&p->lock);	/* For other thread to read the condition. */
+				ast_mutex_lock(&p->app_lock);
+				ast_mutex_lock(&p->lock);
 			}
 			if( !p->chan )
 			{
@@ -562,8 +562,8 @@ static struct ast_channel *agent_new(struct agent_pvt *p, int state)
 				tmp->pvt->pvt = NULL;
 				p->app_sleep_cond = 1;
 				ast_channel_free( tmp );
-				ast_pthread_mutex_unlock(&p->lock);	/* For other thread to read the condition. */
-				ast_pthread_mutex_unlock(&p->app_lock);
+				ast_mutex_unlock(&p->lock);	/* For other thread to read the condition. */
+				ast_mutex_unlock(&p->app_lock);
 				return NULL;
 			}
 		}
@@ -596,7 +596,7 @@ static int read_agent_config(void)
 		ast_log(LOG_NOTICE, "No agent configuration found -- agent support disabled\n");
 		return 0;
 	}
-	ast_pthread_mutex_lock(&agentlock);
+	ast_mutex_lock(&agentlock);
 	p = agents;
 	while(p) {
 		p->dead = 1;
@@ -648,7 +648,7 @@ static int read_agent_config(void)
 			pl = p;
 		p = pn;
 	}
-	ast_pthread_mutex_unlock(&agentlock);
+	ast_mutex_unlock(&agentlock);
 	ast_destroy(cfg);
 	return 0;
 }
@@ -660,28 +660,28 @@ static int check_availability(struct agent_pvt *newlyavailable, int needlock)
 	int res;
 	ast_log(LOG_DEBUG, "Checking availability of '%s'\n", newlyavailable->agent);
 	if (needlock)
-		ast_pthread_mutex_lock(&agentlock);
+		ast_mutex_lock(&agentlock);
 	p = agents;
 	while(p) {
 		if (p == newlyavailable) {
 			p = p->next;
 			continue;
 		}
-		ast_pthread_mutex_lock(&p->lock);
+		ast_mutex_lock(&p->lock);
 		if (!p->abouttograb && p->pending && ((p->group && (newlyavailable->group & p->group)) || !strcmp(p->agent, newlyavailable->agent))) {
 			ast_log(LOG_DEBUG, "Call '%s' looks like a winner for agent '%s'\n", p->owner->name, newlyavailable->agent);
 			/* We found a pending call, time to merge */
 			chan = agent_new(newlyavailable, AST_STATE_DOWN);
 			parent = p->owner;
 			p->abouttograb = 1;
-			ast_pthread_mutex_unlock(&p->lock);
+			ast_mutex_unlock(&p->lock);
 			break;
 		}
-		ast_pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		p = p->next;
 	}
 	if (needlock)
-		ast_pthread_mutex_unlock(&agentlock);
+		ast_mutex_unlock(&agentlock);
 	if (parent && chan)  {
 		ast_log( LOG_DEBUG, "Playing beep, lang '%s'\n", newlyavailable->chan->language);
 		res = ast_streamfile(newlyavailable->chan, "beep", newlyavailable->chan->language);
@@ -697,10 +697,10 @@ static int check_availability(struct agent_pvt *newlyavailable, int needlock)
 				ast_setstate(chan, AST_STATE_UP);
 				/* Go ahead and mark the channel as a zombie so that masquerade will
 				   destroy it for us, and we need not call ast_hangup */
-				ast_pthread_mutex_lock(&parent->lock);
+				ast_mutex_lock(&parent->lock);
 				chan->zombie = 1;
 				ast_channel_masquerade(parent, chan);
-				ast_pthread_mutex_unlock(&parent->lock);
+				ast_mutex_unlock(&parent->lock);
 				p->abouttograb = 0;
 			} else {
 				ast_log(LOG_DEBUG, "Sneaky, parent disappeared in the mean time...\n");
@@ -732,10 +732,10 @@ static struct ast_channel *agent_request(char *type, int format, void *data)
 	}
 
 	/* Check actual logged in agents first */
-	ast_pthread_mutex_lock(&agentlock);
+	ast_mutex_lock(&agentlock);
 	p = agents;
 	while(p) {
-		ast_pthread_mutex_lock(&p->lock);
+		ast_mutex_lock(&p->lock);
 		if (!p->pending && ((groupmatch && (p->group & groupmatch)) || !strcmp(data, p->agent)) &&
 				!p->lastdisc.tv_sec && !strlen(p->loginchan)) {
 			/* Agent must be registered, but not have any active call, and not be in a waiting state */
@@ -749,17 +749,17 @@ static struct ast_channel *agent_request(char *type, int format, void *data)
 					chan = agent_new(p, AST_STATE_DOWN);
 			}
 			if (chan) {
-				ast_pthread_mutex_unlock(&p->lock);
+				ast_mutex_unlock(&p->lock);
 				break;
 			}
 		}
-		ast_pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		p = p->next;
 	}
 	if (!p) {
 		p = agents;
 		while(p) {
-			ast_pthread_mutex_lock(&p->lock);
+			ast_mutex_lock(&p->lock);
 			if (!p->pending && ((groupmatch && (p->group & groupmatch)) || !strcmp(data, p->agent)) &&
 					!p->lastdisc.tv_sec) {
 				/* Agent must be registered, but not have any active call, and not be in a waiting state */
@@ -773,11 +773,11 @@ static struct ast_channel *agent_request(char *type, int format, void *data)
 						chan = agent_new(p, AST_STATE_DOWN);
 				}
 				if (chan) {
-					ast_pthread_mutex_unlock(&p->lock);
+					ast_mutex_unlock(&p->lock);
 					break;
 				}
 			}
-			ast_pthread_mutex_unlock(&p->lock);
+			ast_mutex_unlock(&p->lock);
 			p = p->next;
 		}
 	}
@@ -793,7 +793,7 @@ static struct ast_channel *agent_request(char *type, int format, void *data)
 			ast_log(LOG_WARNING, "Weird...  Fix this to drop the unused pending agent\n");
 		}
 	}
-	ast_pthread_mutex_unlock(&agentlock);
+	ast_mutex_unlock(&agentlock);
 	return chan;
 }
 
@@ -816,10 +816,10 @@ static int agents_show(int fd, int argc, char **argv)
 
 	if (argc != 2)
 		return RESULT_SHOWUSAGE;
-	ast_pthread_mutex_lock(&agentlock);
+	ast_mutex_lock(&agentlock);
 	p = agents;
 	while(p) {
-		ast_pthread_mutex_lock(&p->lock);
+		ast_mutex_lock(&p->lock);
 		if (p->pending) {
 			if (p->group)
 				ast_cli(fd, "-- Pending call to group %d\n", powerof(p->group));
@@ -851,10 +851,10 @@ static int agents_show(int fd, int argc, char **argv)
 			ast_cli(fd, "%-12.12s %s%s%s%s\n", p->agent, 
 					username, location, talkingto, moh);
 		}
-		ast_pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		p = p->next;
 	}
-	ast_pthread_mutex_unlock(&agentlock);
+	ast_mutex_unlock(&agentlock);
 	return RESULT_SUCCESS;
 }
 
@@ -917,14 +917,14 @@ static int __login_exec(struct ast_channel *chan, void *data, int callbackmode)
 	}
 	while (!res && (tries < 3)) {
 		/* Check for password */
-		ast_pthread_mutex_lock(&agentlock);
+		ast_mutex_lock(&agentlock);
 		p = agents;
 		while(p) {
 			if (!strcmp(p->agent, user) && !p->pending)
 				strncpy(xpass, p->password, sizeof(xpass) - 1);
 			p = p->next;
 		}
-		ast_pthread_mutex_unlock(&agentlock);
+		ast_mutex_unlock(&agentlock);
 		if (!res) {
 			if (strlen(xpass))
 				res = ast_app_getdata(chan, "agent-pass", pass, sizeof(pass) - 1, 0);
@@ -938,10 +938,10 @@ static int __login_exec(struct ast_channel *chan, void *data, int callbackmode)
 #endif		
 
 		/* Check again for accuracy */
-		ast_pthread_mutex_lock(&agentlock);
+		ast_mutex_lock(&agentlock);
 		p = agents;
 		while(p) {
-			ast_pthread_mutex_lock(&p->lock);
+			ast_mutex_lock(&p->lock);
 			if (!strcmp(p->agent, user) &&
 				!strcmp(p->password, pass) && !p->pending) {
 					if (!p->chan) {
@@ -992,8 +992,8 @@ static int __login_exec(struct ast_channel *chan, void *data, int callbackmode)
 								res = ast_waitstream(chan, "");
 							if (!res)
 								res = ast_safe_sleep(chan, 1000);
-							ast_pthread_mutex_unlock(&p->lock);
-							ast_pthread_mutex_unlock(&agentlock);
+							ast_mutex_unlock(&p->lock);
+							ast_mutex_unlock(&agentlock);
 						} else if (!res) {
 							/* check if the moh class was changed with setmusiconhold */
 							if (*(chan->musicclass))
@@ -1011,19 +1011,19 @@ static int __login_exec(struct ast_channel *chan, void *data, int callbackmode)
 							p->chan = chan;
 							p->acknowledged = 1;
 							check_availability(p, 0);
-							ast_pthread_mutex_unlock(&p->lock);
-							ast_pthread_mutex_unlock(&agentlock);
+							ast_mutex_unlock(&p->lock);
+							ast_mutex_unlock(&agentlock);
 							while (res >= 0) {
-								ast_pthread_mutex_lock(&p->lock);
+								ast_mutex_lock(&p->lock);
 								if (p->chan != chan)
 									res = -1;
-								ast_pthread_mutex_unlock(&p->lock);
+								ast_mutex_unlock(&p->lock);
 								/* Yield here so other interested threads can kick in. */
 								sched_yield();
 								if (res)
 									break;
 
-								ast_pthread_mutex_lock(&p->lock);
+								ast_mutex_lock(&p->lock);
 								if (p->lastdisc.tv_sec) {
 									gettimeofday(&tv, NULL);
 									if ((tv.tv_sec - p->lastdisc.tv_sec) * 1000 + 
@@ -1033,25 +1033,25 @@ static int __login_exec(struct ast_channel *chan, void *data, int callbackmode)
 										check_availability(p, 1);
 									}
 								}
-								ast_pthread_mutex_unlock(&p->lock);
+								ast_mutex_unlock(&p->lock);
 								/*	Synchronize channel ownership between call to agent and itself. */
-								pthread_mutex_lock( &p->app_lock );
-								ast_pthread_mutex_lock(&p->lock);
+								ast_mutex_lock( &p->app_lock );
+								ast_mutex_lock(&p->lock);
 								p->owning_app = pthread_self();
-								ast_pthread_mutex_unlock(&p->lock);
+								ast_mutex_unlock(&p->lock);
 								res = ast_safe_sleep_conditional( chan, 1000,
 														agent_cont_sleep, p );
-								pthread_mutex_unlock( &p->app_lock );
+								ast_mutex_unlock( &p->app_lock );
 								sched_yield();
 							}
-							ast_pthread_mutex_lock(&p->lock);
+							ast_mutex_lock(&p->lock);
 							if (res && p->owner) 
 								ast_log(LOG_WARNING, "Huh?  We broke out when there was still an owner?\n");
 							/* Log us off if appropriate */
 							if (p->chan == chan)
 								p->chan = NULL;
 							p->acknowledged = 0;
-							ast_pthread_mutex_unlock(&p->lock);
+							ast_mutex_unlock(&p->lock);
 							if (option_verbose > 2)
 								ast_verbose(VERBOSE_PREFIX_3 "Agent '%s' logged out\n", p->agent);
 							manager_event(EVENT_FLAG_AGENT, "Agentlogoff",
@@ -1062,22 +1062,22 @@ static int __login_exec(struct ast_channel *chan, void *data, int callbackmode)
 								free(p);
 						}
 						else {
-							ast_pthread_mutex_unlock(&p->lock);
+							ast_mutex_unlock(&p->lock);
 							p = NULL;
 						}
 						res = -1;
 					} else {
-						ast_pthread_mutex_unlock(&p->lock);
+						ast_mutex_unlock(&p->lock);
 						errmsg = "agent-alreadyon";
 						p = NULL;
 					}
 					break;
 			}
-			ast_pthread_mutex_unlock(&p->lock);
+			ast_mutex_unlock(&p->lock);
 			p = p->next;
 		}
 		if (!p)
-			ast_pthread_mutex_unlock(&agentlock);
+			ast_mutex_unlock(&agentlock);
 
 		if (!res)
 			res = ast_app_getdata(chan, errmsg, user, sizeof(user) - 1, 0);
@@ -1127,7 +1127,7 @@ int unload_module()
 	ast_unregister_application(app);
 	ast_unregister_application(app2);
 	ast_channel_unregister(type);
-	if (!ast_pthread_mutex_lock(&agentlock)) {
+	if (!ast_mutex_lock(&agentlock)) {
 		/* Hangup all interfaces if they have an owner */
 		p = agents;
 		while(p) {
@@ -1136,7 +1136,7 @@ int unload_module()
 			p = p->next;
 		}
 		agents = NULL;
-		ast_pthread_mutex_unlock(&agentlock);
+		ast_mutex_unlock(&agentlock);
 	} else {
 		ast_log(LOG_WARNING, "Unable to lock the monitor\n");
 		return -1;
@@ -1147,9 +1147,9 @@ int unload_module()
 int usecount()
 {
 	int res;
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	res = usecnt;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	return res;
 }
 
diff --git a/channels/chan_alsa.c b/channels/chan_alsa.c
index dfbce5722e57e6b9cbc94c811b2ff4de1e0abd3c..e7ec368b42aa657dfee9ee9bacfd3cd2e0658420 100755
--- a/channels/chan_alsa.c
+++ b/channels/chan_alsa.c
@@ -71,7 +71,7 @@ static int silencethreshold = 1000;
 static char digits[80] = "";
 static char text2send[80] = "";
 
-static pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
 
 static char *type = "Console";
 static char *desc = "ALSA Console Channel Driver";
@@ -518,9 +518,9 @@ static int alsa_hangup(struct ast_channel *c)
 	c->pvt->pvt = NULL;
 	alsa.owner = NULL;
 	ast_verbose( " << Hangup on console >> \n");
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	usecnt--;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	needhangup = 0;
 	needanswer = 0;
 	if (hookstate) {
@@ -807,9 +807,9 @@ static struct ast_channel *alsa_new(struct chan_alsa_pvt *p, int state)
 			strncpy(tmp->language, language, sizeof(tmp->language)-1);
 		p->owner = tmp;
 		ast_setstate(tmp, state);
-		ast_pthread_mutex_lock(&usecnt_lock);
+		ast_mutex_lock(&usecnt_lock);
 		usecnt++;
-		ast_pthread_mutex_unlock(&usecnt_lock);
+		ast_mutex_unlock(&usecnt_lock);
 		ast_update_use_count();
 		if (state != AST_STATE_DOWN) {
 			if (ast_pbx_start(tmp)) {
@@ -1103,9 +1103,9 @@ char *description()
 int usecount()
 {
 	int res;
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	res = usecnt;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	return res;
 }
 
diff --git a/channels/chan_iax.c b/channels/chan_iax.c
index b9869916ab027f9784786c0fb05a2d1f6009ae7f..1d1c354bbfb14afe4e917711812dd972df2b74c7 100755
--- a/channels/chan_iax.c
+++ b/channels/chan_iax.c
@@ -91,7 +91,7 @@ static int tos = 0;
 static int expirey = AST_DEFAULT_REG_EXPIRE;
 
 static int usecnt;
-static pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
 
 int (*iax_regfunk)(char *username, int onoff) = NULL;
 
@@ -384,17 +384,17 @@ static struct ast_iax_queue {
 	struct ast_iax_frame *head;
 	struct ast_iax_frame *tail;
 	int count;
-	pthread_mutex_t lock;
+	ast_mutex_t lock;
 } iaxq;
 
 static struct ast_user_list {
 	struct iax_user *users;
-	pthread_mutex_t lock;
+	ast_mutex_t lock;
 } userl;
 
 static struct ast_peer_list {
 	struct iax_peer *peers;
-	pthread_mutex_t lock;
+	ast_mutex_t lock;
 } peerl;
 
 /* Extension exists */
@@ -426,7 +426,7 @@ static struct iax_dpcache {
 	struct iax_dpcache *peer;	/* For linking in peers */
 } *dpcache;
 
-static pthread_mutex_t dpcache_lock;
+static ast_mutex_t dpcache_lock;
 
 #ifdef DEBUG_SUPPORT
 static void showframe(struct ast_iax_frame *f, struct ast_iax_full_hdr *fhi, int rx, struct sockaddr_in *sin)
@@ -541,7 +541,7 @@ static void showframe(struct ast_iax_frame *f, struct ast_iax_full_hdr *fhi, int
 
 /* XXX We probably should use a mutex when working with this XXX */
 static struct chan_iax_pvt *iaxs[AST_IAX_MAX_CALLS];
-static pthread_mutex_t iaxsl[AST_IAX_MAX_CALLS];
+static ast_mutex_t iaxsl[AST_IAX_MAX_CALLS];
 
 static int send_command(struct chan_iax_pvt *, char, int, unsigned int, char *, int, int);
 static int send_command_immediate(struct chan_iax_pvt *, char, int, unsigned int, char *, int, int);
@@ -767,14 +767,14 @@ static int find_callno(short callno, short dcallno ,struct sockaddr_in *sin, int
 	if (new <= NEW_ALLOW) {
 		/* Look for an existing connection first */
 		for (x=0;(res < 0) && (x<AST_IAX_MAX_CALLS);x++) {
-			ast_pthread_mutex_lock(&iaxsl[x]);
+			ast_mutex_lock(&iaxsl[x]);
 			if (iaxs[x]) {
 				/* Look for an exact match */
 				if (match(sin, callno, dcallno, iaxs[x])) {
 					res = x;
 				}
 			}
-			ast_pthread_mutex_unlock(&iaxsl[x]);
+			ast_mutex_unlock(&iaxsl[x]);
 		}
 	}
 	if ((res < 0) && (new >= NEW_ALLOW)) {
@@ -785,9 +785,9 @@ static int find_callno(short callno, short dcallno ,struct sockaddr_in *sin, int
 			ast_log(LOG_WARNING, "Unable to accept more calls\n");
 			return -1;
 		}
-		ast_pthread_mutex_lock(&iaxsl[x]);
+		ast_mutex_lock(&iaxsl[x]);
 		iaxs[x] = new_iax();
-		ast_pthread_mutex_unlock(&iaxsl[x]);
+		ast_mutex_unlock(&iaxsl[x]);
 		if (iaxs[x]) {
 			if (option_debug)
 				ast_log(LOG_DEBUG, "Creating new call structure %d\n", x);
@@ -818,19 +818,19 @@ static int iax_queue_frame(int callno, struct ast_frame *f)
 	/* Assumes lock for callno is already held... */
 	for (;;) {
 		pass++;
-		if (!pthread_mutex_trylock(&iaxsl[callno])) {
+		if (!ast_mutex_trylock(&iaxsl[callno])) {
 			ast_log(LOG_WARNING, "Lock is not held on pass %d of iax_queue_frame\n", pass);
 			CRASH;
 		}
 		if (iaxs[callno] && iaxs[callno]->owner) {
-			if (pthread_mutex_trylock(&iaxs[callno]->owner->lock)) {
+			if (ast_mutex_trylock(&iaxs[callno]->owner->lock)) {
 				/* Avoid deadlock by pausing and trying again */
-				ast_pthread_mutex_unlock(&iaxsl[callno]);
+				ast_mutex_unlock(&iaxsl[callno]);
 				usleep(1);
-				ast_pthread_mutex_lock(&iaxsl[callno]);
+				ast_mutex_lock(&iaxsl[callno]);
 			} else {
 				ast_queue_frame(iaxs[callno]->owner, f, 0);
-				ast_pthread_mutex_unlock(&iaxs[callno]->owner->lock);
+				ast_mutex_unlock(&iaxs[callno]->owner->lock);
 				break;
 			}
 		} else
@@ -879,9 +879,9 @@ static int do_deliver(void *data)
 	struct ast_iax_frame *fr = data;
 	int callno = fr->callno;
 	int res;
-	ast_pthread_mutex_lock(&iaxsl[callno]);
+	ast_mutex_lock(&iaxsl[callno]);
 	res = __do_deliver(data);
-	ast_pthread_mutex_unlock(&iaxsl[callno]);
+	ast_mutex_unlock(&iaxsl[callno]);
 	return res;
 }
 
@@ -963,10 +963,10 @@ static int iax_predestroy(int callno)
 {
 	struct ast_channel *c;
 	struct chan_iax_pvt *pvt;
-	ast_pthread_mutex_lock(&iaxsl[callno]);
+	ast_mutex_lock(&iaxsl[callno]);
 	pvt = iaxs[callno];
 	if (!pvt) {
-		ast_pthread_mutex_unlock(&iaxsl[callno]);
+		ast_mutex_unlock(&iaxsl[callno]);
 		return -1;
 	}
 	if (!pvt->alreadygone) {
@@ -990,23 +990,23 @@ static int iax_predestroy(int callno)
 		c->_softhangup |= AST_SOFTHANGUP_DEV;
 		c->pvt->pvt = NULL;
 		pvt->owner = NULL;
-		ast_pthread_mutex_lock(&usecnt_lock);
+		ast_mutex_lock(&usecnt_lock);
 		usecnt--;
 		if (usecnt < 0) 
 			ast_log(LOG_WARNING, "Usecnt < 0???\n");
-		ast_pthread_mutex_unlock(&usecnt_lock);
+		ast_mutex_unlock(&usecnt_lock);
 		ast_update_use_count();
 	}
-	ast_pthread_mutex_unlock(&iaxsl[callno]);
+	ast_mutex_unlock(&iaxsl[callno]);
 	return 0;
 }
 
 static int iax_predestroy_nolock(int callno)
 {
 	int res;
-	ast_pthread_mutex_unlock(&iaxsl[callno]);
+	ast_mutex_unlock(&iaxsl[callno]);
 	res = iax_predestroy(callno);
-	ast_pthread_mutex_lock(&iaxsl[callno]);
+	ast_mutex_lock(&iaxsl[callno]);
 	return res;
 }
 
@@ -1017,7 +1017,7 @@ static void iax_destroy(int callno)
 	struct ast_channel *owner;
 
 retry:
-	ast_pthread_mutex_lock(&iaxsl[callno]);
+	ast_mutex_lock(&iaxsl[callno]);
 	pvt = iaxs[callno];
 	iaxs[callno] = NULL;
 
@@ -1026,9 +1026,9 @@ retry:
 	else
 		owner = NULL;
 	if (owner) {
-		if (pthread_mutex_trylock(&owner->lock)) {
+		if (ast_mutex_trylock(&owner->lock)) {
 			ast_log(LOG_NOTICE, "Avoiding IAX destroy deadlock\n");
-			ast_pthread_mutex_unlock(&iaxsl[callno]);
+			ast_mutex_unlock(&iaxsl[callno]);
 			usleep(1);
 			goto retry;
 		}
@@ -1070,16 +1070,16 @@ retry:
 		free(pvt);
 	}
 	if (owner) {
-		ast_pthread_mutex_unlock(&owner->lock);
+		ast_mutex_unlock(&owner->lock);
 	}
-	ast_pthread_mutex_unlock(&iaxsl[callno]);
+	ast_mutex_unlock(&iaxsl[callno]);
 }
 static void iax_destroy_nolock(int callno)
 {	
 	/* Actually it's easier to unlock, kill it, and relock */
-	ast_pthread_mutex_unlock(&iaxsl[callno]);
+	ast_mutex_unlock(&iaxsl[callno]);
 	iax_destroy(callno);
-	ast_pthread_mutex_lock(&iaxsl[callno]);
+	ast_mutex_lock(&iaxsl[callno]);
 }
 
 
@@ -1093,7 +1093,7 @@ static int attempt_transmit(void *data)
 	int callno = f->callno;
 	/* Make sure this call is still active */
 	if (callno > -1) 
-		ast_pthread_mutex_lock(&iaxsl[callno]);
+		ast_mutex_lock(&iaxsl[callno]);
 	if ((f->callno > -1) && iaxs[f->callno]) {
 		if ((f->retries < 0) /* Already ACK'd */ ||
 		    (f->retries >= max_retries) /* Too many attempts */) {
@@ -1146,11 +1146,11 @@ static int attempt_transmit(void *data)
 		freeme++;
 	}
 	if (callno > -1)
-		ast_pthread_mutex_unlock(&iaxsl[callno]);
+		ast_mutex_unlock(&iaxsl[callno]);
 	/* Do not try again */
 	if (freeme) {
 		/* Don't attempt delivery, just remove it from the queue */
-		ast_pthread_mutex_lock(&iaxq.lock);
+		ast_mutex_lock(&iaxq.lock);
 		if (f->prev) 
 			f->prev->next = f->next;
 		else
@@ -1160,7 +1160,7 @@ static int attempt_transmit(void *data)
 		else
 			iaxq.tail = f->prev;
 		iaxq.count--;
-		ast_pthread_mutex_unlock(&iaxq.lock);
+		ast_mutex_unlock(&iaxq.lock);
 		/* Free the frame */
 		ast_frfree(f->f);
 		f->retrans = -1;
@@ -1228,7 +1228,7 @@ static int iax_show_cache(int fd, int argc, char *argv[])
 	int x,y;
 	struct timeval tv;
 	gettimeofday(&tv, NULL);
-	ast_pthread_mutex_lock(&dpcache_lock);
+	ast_mutex_lock(&dpcache_lock);
 	dp = dpcache;
 	ast_cli(fd, "%-20.20s %-12.12s %-9.9s %-8.8s %s\n", "Peer/Context", "Exten", "Exp.", "Wait.", "Flags");
 	while(dp) {
@@ -1270,7 +1270,7 @@ static int iax_show_cache(int fd, int argc, char *argv[])
 			ast_cli(fd, "%-20.20s %-12.12s %-9.9s %-8d %s\n", pc, dp->exten, "(expired)", y, tmp);
 		dp = dp->next;
 	}
-	ast_pthread_mutex_unlock(&dpcache_lock);
+	ast_mutex_unlock(&dpcache_lock);
 	return RESULT_SUCCESS;
 }
 
@@ -1453,7 +1453,7 @@ static int iax_transmit(struct ast_iax_frame *fr)
 	/* By setting this to 0, the network thread will send it for us, and
 	   queue retransmission if necessary */
 	fr->sentyet = 0;
-	ast_pthread_mutex_lock(&iaxq.lock);
+	ast_mutex_lock(&iaxq.lock);
 	if (!iaxq.head) {
 		/* Empty queue */
 		iaxq.head = fr;
@@ -1465,7 +1465,7 @@ static int iax_transmit(struct ast_iax_frame *fr)
 		iaxq.tail = fr;
 	}
 	iaxq.count++;
-	ast_pthread_mutex_unlock(&iaxq.lock);
+	ast_mutex_unlock(&iaxq.lock);
 	/* Wake up the network thread */
 	pthread_kill(netthreadid, SIGURG);
 	return 0;
@@ -1512,7 +1512,7 @@ static int create_addr(struct sockaddr_in *sin, int *capability, int *sendani, i
 	if (maxtime)
 		*maxtime = 0;
 	sin->sin_family = AF_INET;
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	p = peerl.peers;
 	while(p) {
 		if (!strcasecmp(p->name, peer)) {
@@ -1539,7 +1539,7 @@ static int create_addr(struct sockaddr_in *sin, int *capability, int *sendani, i
 		}
 		p = p->next;
 	}
-	ast_pthread_mutex_unlock(&peerl.lock);
+	ast_mutex_unlock(&peerl.lock);
 	if (!p && !found) {
 		hp = gethostbyname(peer);
 		if (hp) {
@@ -1560,13 +1560,13 @@ static int auto_congest(void *nothing)
 {
 	int callno = (int)(long)(nothing);
 	struct ast_frame f = { AST_FRAME_CONTROL, AST_CONTROL_CONGESTION };
-	ast_pthread_mutex_lock(&iaxsl[callno]);
+	ast_mutex_lock(&iaxsl[callno]);
 	if (iaxs[callno]) {
 		iaxs[callno]->initid = -1;
 		iax_queue_frame(callno, &f);
 		ast_log(LOG_NOTICE, "Auto-congesting call due to slow response\n");
 	}
-	ast_pthread_mutex_unlock(&iaxsl[callno]);
+	ast_mutex_unlock(&iaxsl[callno]);
 	return 0;
 }
 
@@ -1683,7 +1683,7 @@ static int iax_hangup(struct ast_channel *c)
 	int callno;
 	if (pvt) {
 		callno = pvt->callno;
-		ast_pthread_mutex_lock(&iaxsl[callno]);
+		ast_mutex_lock(&iaxsl[callno]);
 		ast_log(LOG_DEBUG, "We're hanging up %s now...\n", c->name);
 		alreadygone = pvt->alreadygone;
 		/* Send the hangup unless we have had a transmission error or are already gone */
@@ -1696,7 +1696,7 @@ static int iax_hangup(struct ast_channel *c)
 			ast_log(LOG_DEBUG, "Really destroying %s now...\n", c->name);
 			iax_destroy_nolock(callno);
 		}
-		ast_pthread_mutex_unlock(&iaxsl[callno]);
+		ast_mutex_unlock(&iaxsl[callno]);
 	}
 	if (option_verbose > 2) 
 		ast_verbose(VERBOSE_PREFIX_3 "Hungup '%s'\n", c->name);
@@ -1886,7 +1886,7 @@ static int iax_getpeername(struct sockaddr_in sin, char *host, int len)
 {
 	struct iax_peer *peer;
 	int res = 0;
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	peer = peerl.peers;
 	while(peer) {
 		if ((peer->addr.sin_addr.s_addr == sin.sin_addr.s_addr) &&
@@ -1897,7 +1897,7 @@ static int iax_getpeername(struct sockaddr_in sin, char *host, int len)
 		}
 		peer = peer->next;
 	}
-	ast_pthread_mutex_unlock(&peerl.lock);
+	ast_mutex_unlock(&peerl.lock);
 	return res;
 }
 
@@ -1950,9 +1950,9 @@ static struct ast_channel *ast_iax_new(struct chan_iax_pvt *i, int state, int ca
 		i->owner = tmp;
 		i->capability = capability;
 		ast_setstate(tmp, state);
-		ast_pthread_mutex_lock(&usecnt_lock);
+		ast_mutex_lock(&usecnt_lock);
 		usecnt++;
-		ast_pthread_mutex_unlock(&usecnt_lock);
+		ast_mutex_unlock(&usecnt_lock);
 		ast_update_use_count();
 		if (state != AST_STATE_DOWN) {
 			if (ast_pbx_start(tmp)) {
@@ -2142,14 +2142,14 @@ static int iax_show_users(int fd, int argc, char *argv[])
 	struct iax_user *user;
 	if (argc != 3) 
 		return RESULT_SHOWUSAGE;
-	ast_pthread_mutex_lock(&userl.lock);
+	ast_mutex_lock(&userl.lock);
 	ast_cli(fd, FORMAT, "Username", "Secret", "Authen", "Def.Context", "A/C");
 	for(user=userl.users;user;user=user->next) {
 		ast_cli(fd, FORMAT, user->name, user->secret, user->methods, 
 				user->contexts ? user->contexts->context : context,
 				user->ha ? "Yes" : "No");
 	}
-	ast_pthread_mutex_unlock(&userl.lock);
+	ast_mutex_unlock(&userl.lock);
 	return RESULT_SUCCESS;
 #undef FORMAT
 }
@@ -2162,7 +2162,7 @@ static int iax_show_peers(int fd, int argc, char *argv[])
 	char name[256] = "";
 	if (argc != 3)
 		return RESULT_SHOWUSAGE;
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	ast_cli(fd, FORMAT2, "Name/Username", "Host", "   ", "Mask", "Port", "Status");
 	for (peer = peerl.peers;peer;peer = peer->next) {
 		char nm[20];
@@ -2189,7 +2189,7 @@ static int iax_show_peers(int fd, int argc, char *argv[])
 					nm,
 					ntohs(peer->addr.sin_port), status);
 	}
-	ast_pthread_mutex_unlock(&peerl.lock);
+	ast_mutex_unlock(&peerl.lock);
 	return RESULT_SUCCESS;
 #undef FORMAT
 #undef FORMAT2
@@ -2236,7 +2236,7 @@ static int iax_show_registry(int fd, int argc, char *argv[])
 	char perceived[80];
 	if (argc != 3)
 		return RESULT_SHOWUSAGE;
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	ast_cli(fd, FORMAT2, "Host", "Username", "Perceived", "Refresh", "State");
 	for (reg = registrations;reg;reg = reg->next) {
 		snprintf(host, sizeof(host), "%s:%d", inet_ntoa(reg->addr.sin_addr), ntohs(reg->addr.sin_port));
@@ -2247,7 +2247,7 @@ static int iax_show_registry(int fd, int argc, char *argv[])
 		ast_cli(fd, FORMAT, host, 
 					reg->username, perceived, reg->refresh, regstate2str(reg->regstate));
 	}
-	ast_pthread_mutex_unlock(&peerl.lock);
+	ast_mutex_unlock(&peerl.lock);
 	return RESULT_SUCCESS;
 #undef FORMAT
 #undef FORMAT2
@@ -2263,7 +2263,7 @@ static int iax_show_channels(int fd, int argc, char *argv[])
 		return RESULT_SHOWUSAGE;
 	ast_cli(fd, FORMAT2, "Peer", "Username", "ID (Lo/Rem)", "Seq (Tx/Rx)", "Lag", "Jitter", "Format");
 	for (x=0;x<AST_IAX_MAX_CALLS;x++) {
-		ast_pthread_mutex_lock(&iaxsl[x]);
+		ast_mutex_lock(&iaxsl[x]);
 		if (iaxs[x]) {
 			ast_cli(fd, FORMAT, inet_ntoa(iaxs[x]->addr.sin_addr), 
 						strlen(iaxs[x]->username) ? iaxs[x]->username : "(None)", 
@@ -2274,7 +2274,7 @@ static int iax_show_channels(int fd, int argc, char *argv[])
 						iaxs[x]->voiceformat);
 			numchans++;
 		}
-		ast_pthread_mutex_unlock(&iaxsl[x]);
+		ast_mutex_unlock(&iaxsl[x]);
 	}
 	ast_cli(fd, "%d active IAX channel(s)\n", numchans);
 	return RESULT_SUCCESS;
@@ -2499,7 +2499,7 @@ static int check_access(int callno, struct sockaddr_in *sin, char *orequest, int
 			inet_ntoa(sin->sin_addr), version);
 		return res;
 	}
-	ast_pthread_mutex_lock(&userl.lock);
+	ast_mutex_lock(&userl.lock);
 	/* Search the userlist for a compatible entry, and fill in the rest */
 	user = userl.users;
 	while(user) {
@@ -2541,7 +2541,7 @@ static int check_access(int callno, struct sockaddr_in *sin, char *orequest, int
 		}
 		user = user->next;	
 	}
-	ast_pthread_mutex_unlock(&userl.lock);
+	ast_mutex_unlock(&userl.lock);
 	return res;
 }
 
@@ -2860,7 +2860,7 @@ static int authenticate_reply(struct chan_iax_pvt *p, struct sockaddr_in *sin, c
 		/* Normal password authentication */
 		res = authenticate(p->challenge, override, okey, methods, requeststr, sizeof(requeststr), sin);
 	} else {
-		ast_pthread_mutex_lock(&peerl.lock);
+		ast_mutex_lock(&peerl.lock);
 		peer = peerl.peers;
 		while(peer) {
 			if ((!strlen(p->peer) || !strcmp(p->peer, peer->name)) 
@@ -2876,7 +2876,7 @@ static int authenticate_reply(struct chan_iax_pvt *p, struct sockaddr_in *sin, c
 			}
 			peer = peer->next;
 		}
-		ast_pthread_mutex_unlock(&peerl.lock);
+		ast_mutex_unlock(&peerl.lock);
 	}
 	if (strlen(requeststr))
 		requeststr[strlen(requeststr)-1] = '\0';
@@ -2983,7 +2983,7 @@ static int complete_dpreply(struct chan_iax_pvt *pvt, char *orequest)
 		}
 		var = strsep(&stringp, ";");
 	}
-	ast_pthread_mutex_lock(&dpcache_lock);
+	ast_mutex_lock(&dpcache_lock);
 	prev = NULL;
 	dp = pvt->dpentries;
 	while(dp) {
@@ -3009,7 +3009,7 @@ static int complete_dpreply(struct chan_iax_pvt *pvt, char *orequest)
 		prev = dp;
 		dp = dp->peer;
 	}
-	ast_pthread_mutex_unlock(&dpcache_lock);
+	ast_mutex_unlock(&dpcache_lock);
 	return 0;
 }
 
@@ -3063,7 +3063,7 @@ static int complete_transfer(int callno, char *orequest)
 	pvt->last = 0;
 	pvt->lastsent = 0;
 	pvt->pingtime = DEFAULT_RETRY_TIME;
-	ast_pthread_mutex_lock(&iaxq.lock);
+	ast_mutex_lock(&iaxq.lock);
 	for (cur = iaxq.head; cur ; cur = cur->next) {
 		/* We must cancel any packets that would have been transmitted
 		   because now we're talking to someone new.  It's okay, they
@@ -3071,7 +3071,7 @@ static int complete_transfer(int callno, char *orequest)
 		if (callno == cur->callno) 
 			cur->retries = -1;
 	}
-	ast_pthread_mutex_unlock(&iaxq.lock);
+	ast_mutex_unlock(&iaxq.lock);
 	return 0; 
 }
 
@@ -3353,12 +3353,12 @@ static int auto_hangup(void *nothing)
 {
 	/* Called from IAX thread only, without iaxs lock */
 	int callno = (int)(long)(nothing);
-	ast_pthread_mutex_lock(&iaxsl[callno]);
+	ast_mutex_lock(&iaxsl[callno]);
 	if (iaxs[callno]) {
 		iaxs[callno]->autoid = -1;
 		send_command_final(iaxs[callno], AST_FRAME_IAX, AST_IAX_COMMAND_HANGUP, 0, "Timeout", strlen("Timeout") + 1, -1);
 	}
-	ast_pthread_mutex_unlock(&iaxsl[callno]);
+	ast_mutex_unlock(&iaxsl[callno]);
 	return 0;
 }
 
@@ -3380,7 +3380,7 @@ static int iax_vnak(int callno)
 static void vnak_retransmit(int callno, int last)
 {
 	struct ast_iax_frame *f;
-	ast_pthread_mutex_lock(&iaxq.lock);
+	ast_mutex_lock(&iaxq.lock);
 	f = iaxq.head;
 	while(f) {
 		/* Send a copy immediately */
@@ -3390,7 +3390,7 @@ static void vnak_retransmit(int callno, int last)
 		}
 		f = f->next;
 	}
-	ast_pthread_mutex_unlock(&iaxq.lock);
+	ast_mutex_unlock(&iaxq.lock);
 }
 
 static int iax_poke_peer_s(void *data)
@@ -3460,7 +3460,7 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 	fr.callno = find_callno(ntohs(mh->callno) & ~AST_FLAG_FULL, dcallno, &sin, new);
 
 	if (fr.callno > 0) 
-		ast_pthread_mutex_lock(&iaxsl[fr.callno]);
+		ast_mutex_lock(&iaxsl[fr.callno]);
 
 	if ((fr.callno < 0) || !iaxs[fr.callno]) {
 		/* A call arrived for a non-existant destination.  Unless it's an "inval"
@@ -3475,7 +3475,7 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 				);
 		}
 		if (fr.callno > 0) 
-			ast_pthread_mutex_unlock(&iaxsl[fr.callno]);
+			ast_mutex_unlock(&iaxsl[fr.callno]);
 		return 1;
 	}
 	if (((f.subclass != AST_IAX_COMMAND_TXCNT) &&
@@ -3515,7 +3515,7 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 					/* Send a VNAK requesting retransmission */
 					iax_vnak(fr.callno);
 				}
-				ast_pthread_mutex_unlock(&iaxsl[fr.callno]);
+				ast_mutex_unlock(&iaxsl[fr.callno]);
 				return 1;
 			}
 		} else {
@@ -3531,7 +3531,7 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 		/* A full frame */
 		if (res < sizeof(struct ast_iax_full_hdr)) {
 			ast_log(LOG_WARNING, "midget packet received (%d of %d min)\n", res, sizeof(struct ast_iax_full_hdr));
-			ast_pthread_mutex_unlock(&iaxsl[fr.callno]);
+			ast_mutex_unlock(&iaxsl[fr.callno]);
 			return 1;
 		}
 		f.datalen = res - sizeof(struct ast_iax_full_hdr);
@@ -3553,13 +3553,13 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 					ast_log(LOG_DEBUG, "Ooh, voice format changed to %d\n", f.subclass);
 					if (iaxs[fr.callno]->owner) {
 						int orignative;
-						ast_pthread_mutex_lock(&iaxs[fr.callno]->owner->lock);
+						ast_mutex_lock(&iaxs[fr.callno]->owner->lock);
 						orignative = iaxs[fr.callno]->owner->nativeformats;
 						iaxs[fr.callno]->owner->nativeformats = f.subclass;
 						if (iaxs[fr.callno]->owner->readformat)
 							ast_set_read_format(iaxs[fr.callno]->owner, iaxs[fr.callno]->owner->readformat);
 						iaxs[fr.callno]->owner->nativeformats = orignative;
-						ast_pthread_mutex_unlock(&iaxs[fr.callno]->owner->lock);
+						ast_mutex_unlock(&iaxs[fr.callno]->owner->lock);
 					}
 			}
 		}
@@ -3579,7 +3579,7 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 			switch(f.subclass) {
 			case AST_IAX_COMMAND_ACK:
 				/* Ack the packet with the given timestamp */
-				ast_pthread_mutex_lock(&iaxq.lock);
+				ast_mutex_lock(&iaxq.lock);
 				for (cur = iaxq.head; cur ; cur = cur->next) {
 					/* If it's our call, and our timestamp, mark -1 retries */
 					if ((fr.callno == cur->callno) && (fr.seqno == cur->seqno)) {
@@ -3592,7 +3592,7 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 						}
 					}
 				}
-				ast_pthread_mutex_unlock(&iaxq.lock);
+				ast_mutex_unlock(&iaxq.lock);
 				break;
 			case AST_IAX_COMMAND_QUELCH:
 				if (iaxs[fr.callno]->state & IAX_STATE_STARTED)
@@ -3605,13 +3605,13 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 			case AST_IAX_COMMAND_TXACC:
 				if (iaxs[fr.callno]->transferring == TRANSFER_BEGIN) {
 					/* Ack the packet with the given timestamp */
-					ast_pthread_mutex_lock(&iaxq.lock);
+					ast_mutex_lock(&iaxq.lock);
 					for (cur = iaxq.head; cur ; cur = cur->next) {
 						/* Cancel any outstanding txcnt's */
 						if ((fr.callno == cur->callno) && (cur->transfer))
 							cur->retries = -1;
 					}
-					ast_pthread_mutex_unlock(&iaxq.lock);
+					ast_mutex_unlock(&iaxq.lock);
 					snprintf(rel1, sizeof(rel1), "callno=%d;", iaxs[fr.callno]->callno);
 					send_command(iaxs[fr.callno], AST_FRAME_IAX, AST_IAX_COMMAND_TXREADY, 0, rel1, strlen(rel1) + 1, -1);
 					iaxs[fr.callno]->transferring = TRANSFER_READY;
@@ -3745,7 +3745,7 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 							ast_set_read_format(iaxs[fr.callno]->owner, iaxs[fr.callno]->owner->readformat);	
 					}
 				}
-				ast_pthread_mutex_lock(&dpcache_lock);
+				ast_mutex_lock(&dpcache_lock);
 				dp = iaxs[fr.callno]->dpentries;
 				while(dp) {
 					if (!(dp->flags & CACHE_FLAG_TRANSMITTED)) {
@@ -3753,7 +3753,7 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 					}
 					dp = dp->peer;
 				}
-				ast_pthread_mutex_unlock(&dpcache_lock);
+				ast_mutex_unlock(&dpcache_lock);
 				break;
 			case AST_IAX_COMMAND_POKE:
 				/* Send back a pong packet with the original timestamp */
@@ -4030,7 +4030,7 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 				ast_log(LOG_DEBUG, "Unknown IAX command %d on %d/%d\n", f.subclass, fr.callno, iaxs[fr.callno]->peercallno);
 			}
 			/* Don't actually pass these frames along */
-			ast_pthread_mutex_unlock(&iaxsl[fr.callno]);
+			ast_mutex_unlock(&iaxsl[fr.callno]);
 			return 1;
 		}
 	} else {
@@ -4041,13 +4041,13 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 		else {
 			ast_log(LOG_WARNING, "Received mini frame before first full voice frame\n ");
 			iax_vnak(fr.callno);
-			ast_pthread_mutex_unlock(&iaxsl[fr.callno]);
+			ast_mutex_unlock(&iaxsl[fr.callno]);
 			return 1;
 		}
 		f.datalen = res - sizeof(struct ast_iax_mini_hdr);
 		if (f.datalen < 0) {
 			ast_log(LOG_WARNING, "Datalen < 0?\n");
-			ast_pthread_mutex_unlock(&iaxsl[fr.callno]);
+			ast_mutex_unlock(&iaxsl[fr.callno]);
 			return 1;
 		}
 		if (f.datalen)
@@ -4058,7 +4058,7 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 	}
 	/* Don't pass any packets until we're started */
 	if (!(iaxs[fr.callno]->state & IAX_STATE_STARTED)) {
-		ast_pthread_mutex_unlock(&iaxsl[fr.callno]);
+		ast_mutex_unlock(&iaxsl[fr.callno]);
 		return 1;
 	}
 	/* Common things */
@@ -4090,7 +4090,7 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 	schedule_delivery(iaxfrdup2(&fr, 0), 1);
 #endif
 	/* Always run again */
-	ast_pthread_mutex_unlock(&iaxsl[fr.callno]);
+	ast_mutex_unlock(&iaxsl[fr.callno]);
 	return 1;
 }
 
@@ -4209,12 +4209,12 @@ static struct ast_channel *iax_request(char *type, int format, void *data)
 		ast_log(LOG_WARNING, "Unable to create call\n");
 		return NULL;
 	}
-	ast_pthread_mutex_lock(&iaxsl[callno]);
+	ast_mutex_lock(&iaxsl[callno]);
 	/* Keep track of sendani flag */
 	iaxs[callno]->sendani = sendani;
 	iaxs[callno]->maxtime = maxtime;
 	c = ast_iax_new(iaxs[callno], AST_STATE_DOWN, capability);
-	ast_pthread_mutex_unlock(&iaxsl[callno]);
+	ast_mutex_unlock(&iaxsl[callno]);
 	if (c) {
 		/* Choose a format we can live with */
 		if (c->nativeformats & format)
@@ -4245,7 +4245,7 @@ static void *network_thread(void *ignore)
 	for(;;) {
 		/* Go through the queue, sending messages which have not yet been
 		   sent, and scheduling retransmissions if appropriate */
-		ast_pthread_mutex_lock(&iaxq.lock);
+		ast_mutex_lock(&iaxq.lock);
 		f = iaxq.head;
 		while(f) {
 			freeme = NULL;
@@ -4281,7 +4281,7 @@ static void *network_thread(void *ignore)
 			if (freeme)
 				ast_iax_frame_free(freeme);
 		}
-		ast_pthread_mutex_unlock(&iaxq.lock);
+		ast_mutex_unlock(&iaxq.lock);
 		res = ast_sched_wait(sched);
 		if ((res > 1000) || (res < 0))
 			res = 1000;
@@ -4316,7 +4316,7 @@ static struct iax_peer *build_peer(char *name, struct ast_variable *v)
 	int format;
 	int found=0;
 	prev = NULL;
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	peer = peerl.peers;
 	while(peer) {
 		if (!strcasecmp(peer->name, name)) {	
@@ -4333,9 +4333,9 @@ static struct iax_peer *build_peer(char *name, struct ast_variable *v)
 		} else {
 			peerl.peers = peer->next;
 		}
-		ast_pthread_mutex_unlock(&peerl.lock);
+		ast_mutex_unlock(&peerl.lock);
  	} else {
-		ast_pthread_mutex_unlock(&peerl.lock);
+		ast_mutex_unlock(&peerl.lock);
 		peer = malloc(sizeof(struct iax_peer));
 		memset(peer, 0, sizeof(struct iax_peer));
 		peer->expire = -1;
@@ -4507,7 +4507,7 @@ static void delete_users(void){
 	struct iax_registry *reg, *regl;
 
 	/* Delete all users */
-	ast_pthread_mutex_lock(&userl.lock);
+	ast_mutex_lock(&userl.lock);
 	for (user=userl.users;user;) {
 		ast_free_ha(user->ha);
 		free_context(user->contexts);
@@ -4516,7 +4516,7 @@ static void delete_users(void){
 		free(userlast);
 	}
 	userl.users=NULL;
-	ast_pthread_mutex_unlock(&userl.lock);
+	ast_mutex_unlock(&userl.lock);
 
 	for (reg = registrations;reg;) {
 		regl = reg;
@@ -4526,30 +4526,30 @@ static void delete_users(void){
 		free(regl);
 	}
 	registrations = NULL;
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	for (peer=peerl.peers;peer;) {
 		/* Assume all will be deleted, and we'll find out for sure later */
 		peer->delme = 1;
 		peer = peer->next;
 	}
-	ast_pthread_mutex_unlock(&peerl.lock);
+	ast_mutex_unlock(&peerl.lock);
 }
 
 static void prune_peers(void){
 	/* Prune peers who still are supposed to be deleted */
 	struct iax_peer *peer, *peerlast, *peernext;
 	int x;
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	peerlast = NULL;
 	for (peer=peerl.peers;peer;) {
 		peernext = peer->next;
 		if (peer->delme) {
 			for (x=0;x<AST_IAX_MAX_CALLS;x++) {
-				ast_pthread_mutex_lock(&iaxsl[x]);
+				ast_mutex_lock(&iaxsl[x]);
 				if (iaxs[x] && (iaxs[x]->peerpoke == peer)) {
 					iax_destroy(x);
 				}
-				ast_pthread_mutex_unlock(&iaxsl[x]);
+				ast_mutex_unlock(&iaxsl[x]);
 			}
 			/* Delete it, it needs to disappear */
 			if (peer->expire > -1)
@@ -4567,7 +4567,7 @@ static void prune_peers(void){
 			peerlast = peer;
 		peer=peernext;
 	}
-	ast_pthread_mutex_unlock(&peerl.lock);
+	ast_mutex_unlock(&peerl.lock);
 }
 
 
@@ -4675,19 +4675,19 @@ static int set_config(char *config_file, struct sockaddr_in* sin){
 				if (!strcasecmp(utype, "user") || !strcasecmp(utype, "friend")) {
 					user = build_user(cat, ast_variable_browse(cfg, cat));
 					if (user) {
-						ast_pthread_mutex_lock(&userl.lock);
+						ast_mutex_lock(&userl.lock);
 						user->next = userl.users;
 						userl.users = user;
-						ast_pthread_mutex_unlock(&userl.lock);
+						ast_mutex_unlock(&userl.lock);
 					}
 				}
 				if (!strcasecmp(utype, "peer") || !strcasecmp(utype, "friend")) {
 					peer = build_peer(cat, ast_variable_browse(cfg, cat));
 					if (peer) {
-						ast_pthread_mutex_lock(&peerl.lock);
+						ast_mutex_lock(&peerl.lock);
 						peer->next = peerl.peers;
 						peerl.peers = peer;
-						ast_pthread_mutex_unlock(&peerl.lock);
+						ast_mutex_unlock(&peerl.lock);
 					}
 				} else if (strcasecmp(utype, "user")) {
 					ast_log(LOG_WARNING, "Unknown type '%s' for '%s' in %s\n", utype, cat, config_file);
@@ -4736,12 +4736,12 @@ static int cache_get_callno(char *data)
 	for (x=0;x<AST_IAX_MAX_CALLS; x++) {
 		/* Look for an *exact match* call.  Once a call is negotiated, it can only
 		   look up entries for a single context */
-		if (!pthread_mutex_trylock(&iaxsl[x])) {
+		if (!ast_mutex_trylock(&iaxsl[x])) {
 			if (iaxs[x] && !strcasecmp(data, iaxs[x]->dproot)) {
-				ast_pthread_mutex_unlock(&iaxsl[x]);
+				ast_mutex_unlock(&iaxsl[x]);
 				return x;
 			}
-			ast_pthread_mutex_unlock(&iaxsl[x]);
+			ast_mutex_unlock(&iaxsl[x]);
 		}
 	}
 	/* No match found, we need to create a new one */
@@ -4779,7 +4779,7 @@ static int cache_get_callno(char *data)
 		ast_log(LOG_WARNING, "Unable to create call\n");
 		return -1;
 	}
-	ast_pthread_mutex_lock(&iaxsl[callno]);
+	ast_mutex_lock(&iaxsl[callno]);
 	strncpy(iaxs[callno]->dproot, data, sizeof(iaxs[callno]->dproot)-1);
 	iaxs[callno]->capability = IAX_CAPABILITY_FULLBANDWIDTH;
 	MYSNPRINTF "exten=TBD;");
@@ -4800,7 +4800,7 @@ static int cache_get_callno(char *data)
 		ast_verbose(VERBOSE_PREFIX_3 "Calling TBD using options '%s'\n", requeststr);
 	/* Start the call going */
 	send_command(iaxs[callno], AST_FRAME_IAX, AST_IAX_COMMAND_NEW, 0, requeststr, strlen(requeststr) + 1, -1);
-	ast_pthread_mutex_unlock(&iaxsl[callno]);
+	ast_mutex_unlock(&iaxsl[callno]);
 	return callno;
 }
 
@@ -4895,7 +4895,7 @@ static struct iax_dpcache *find_cache(struct ast_channel *chan, char *data, char
 		/* Okay, now we wait */
 		timeout = iaxdefaulttimeout * 1000;
 		/* Temporarily unlock */
-		ast_pthread_mutex_unlock(&dpcache_lock);
+		ast_mutex_unlock(&dpcache_lock);
 		/* Defer any dtmf */
 		if (chan)
 			old = ast_channel_defer_dtmf(chan);
@@ -4919,7 +4919,7 @@ static struct iax_dpcache *find_cache(struct ast_channel *chan, char *data, char
 		if (!timeout) {
 			ast_log(LOG_WARNING, "Timeout waiting for %s exten %s\n", data, exten);
 		}
-		ast_pthread_mutex_lock(&dpcache_lock);
+		ast_mutex_lock(&dpcache_lock);
 		dp->waiters[x] = -1;
 		close(com[1]);
 		close(com[0]);
@@ -4961,13 +4961,13 @@ static int iax_exists(struct ast_channel *chan, char *context, char *exten, int
 #endif
 	if (priority != 1)
 		return 0;
-	ast_pthread_mutex_lock(&dpcache_lock);
+	ast_mutex_lock(&dpcache_lock);
 	dp = find_cache(chan, data, context, exten, priority);
 	if (dp) {
 		if (dp->flags & CACHE_FLAG_EXISTS)
 			res= 1;
 	}
-	ast_pthread_mutex_unlock(&dpcache_lock);
+	ast_mutex_unlock(&dpcache_lock);
 	if (!dp) {
 		ast_log(LOG_WARNING, "Unable to make DP cache\n");
 	}
@@ -4983,13 +4983,13 @@ static int iax_canmatch(struct ast_channel *chan, char *context, char *exten, in
 #endif
 	if (priority != 1)
 		return 0;
-	ast_pthread_mutex_lock(&dpcache_lock);
+	ast_mutex_lock(&dpcache_lock);
 	dp = find_cache(chan, data, context, exten, priority);
 	if (dp) {
 		if (dp->flags & CACHE_FLAG_CANEXIST)
 			res= 1;
 	}
-	ast_pthread_mutex_unlock(&dpcache_lock);
+	ast_mutex_unlock(&dpcache_lock);
 	if (!dp) {
 		ast_log(LOG_WARNING, "Unable to make DP cache\n");
 	}
@@ -5005,13 +5005,13 @@ static int iax_matchmore(struct ast_channel *chan, char *context, char *exten, i
 #endif
 	if (priority != 1)
 		return 0;
-	ast_pthread_mutex_lock(&dpcache_lock);
+	ast_mutex_lock(&dpcache_lock);
 	dp = find_cache(chan, data, context, exten, priority);
 	if (dp) {
 		if (dp->flags & CACHE_FLAG_MATCHMORE)
 			res= 1;
 	}
-	ast_pthread_mutex_unlock(&dpcache_lock);
+	ast_mutex_unlock(&dpcache_lock);
 	if (!dp) {
 		ast_log(LOG_WARNING, "Unable to make DP cache\n");
 	}
@@ -5030,7 +5030,7 @@ static int iax_exec(struct ast_channel *chan, char *context, char *exten, int pr
 #endif
 	if (priority != 1)
 		return -1;
-	ast_pthread_mutex_lock(&dpcache_lock);
+	ast_mutex_lock(&dpcache_lock);
 	dp = find_cache(chan, data, context, exten, priority);
 	if (dp) {
 		if (dp->flags & CACHE_FLAG_EXISTS) {
@@ -5046,12 +5046,12 @@ static int iax_exec(struct ast_channel *chan, char *context, char *exten, int pr
 			if (option_verbose > 2)
 				ast_verbose(VERBOSE_PREFIX_3 "Executing Dial('%s')\n", req);
 		} else {
-			ast_pthread_mutex_unlock(&dpcache_lock);
+			ast_mutex_unlock(&dpcache_lock);
 			ast_log(LOG_WARNING, "Can't execute non-existant extension '%s[@%s]' in data '%s'\n", exten, context, data);
 			return -1;
 		}
 	}
-	ast_pthread_mutex_unlock(&dpcache_lock);
+	ast_mutex_unlock(&dpcache_lock);
 	dial = pbx_findapp("Dial");
 	if (dial) {
 		pbx_exec(chan, dial, req, newstack);
@@ -5089,7 +5089,7 @@ int load_module(void)
 	sin.sin_addr.s_addr = INADDR_ANY;
 
 	for (x=0;x<AST_IAX_MAX_CALLS;x++)
-		ast_pthread_mutex_init(&iaxsl[x]);
+		ast_mutex_init(&iaxsl[x]);
 	
 	io = io_context_create();
 	sched = sched_context_create();
@@ -5099,10 +5099,10 @@ int load_module(void)
 		return -1;
 	}
 
-	ast_pthread_mutex_init(&iaxq.lock);
-	ast_pthread_mutex_init(&userl.lock);
-	ast_pthread_mutex_init(&peerl.lock);
-	ast_pthread_mutex_init(&dpcache_lock);
+	ast_mutex_init(&iaxq.lock);
+	ast_mutex_init(&userl.lock);
+	ast_mutex_init(&peerl.lock);
+	ast_mutex_init(&dpcache_lock);
 
 	ast_cli_register(&cli_show_users);
 	ast_cli_register(&cli_show_channels);
@@ -5155,10 +5155,10 @@ int load_module(void)
 	}
 	for (reg = registrations; reg; reg = reg->next)
 		iax_do_register(reg);
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	for (peer = peerl.peers; peer; peer = peer->next)
 		iax_poke_peer(peer);
-	ast_pthread_mutex_unlock(&peerl.lock);
+	ast_mutex_unlock(&peerl.lock);
 	return res;
 }
 
@@ -5192,9 +5192,9 @@ int unload_module()
 int usecount()
 {
 	int res;
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	res = usecnt;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	return res;
 }
 
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index 83f4723af45ff878bf4677883ec3e581872b5e33..b6feec094ada14a153a8ff27367d95442979d1d1 100755
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -107,7 +107,7 @@ static int expirey = IAX_DEFAULT_REG_EXPIRE;
 static int timingfd = -1;				/* Timing file descriptor */
 
 static int usecnt;
-static pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
 
 int (*iax2_regfunk)(char *username, int onoff) = NULL;
 
@@ -397,17 +397,17 @@ static struct ast_iax2_queue {
 	struct iax_frame *head;
 	struct iax_frame *tail;
 	int count;
-	pthread_mutex_t lock;
+	ast_mutex_t lock;
 } iaxq;
 
 static struct ast_user_list {
 	struct iax2_user *users;
-	pthread_mutex_t lock;
+	ast_mutex_t lock;
 } userl;
 
 static struct ast_peer_list {
 	struct iax2_peer *peers;
-	pthread_mutex_t lock;
+	ast_mutex_t lock;
 } peerl;
 
 /* Extension exists */
@@ -439,7 +439,7 @@ static struct iax2_dpcache {
 	struct iax2_dpcache *peer;	/* For linking in peers */
 } *dpcache;
 
-static pthread_mutex_t dpcache_lock;
+static ast_mutex_t dpcache_lock;
 
 static void iax_debug_output(const char *data)
 {
@@ -453,7 +453,7 @@ static void iax_error_output(const char *data)
 
 /* XXX We probably should use a mutex when working with this XXX */
 static struct chan_iax2_pvt *iaxs[IAX_MAX_CALLS];
-static pthread_mutex_t iaxsl[IAX_MAX_CALLS];
+static ast_mutex_t iaxsl[IAX_MAX_CALLS];
 static struct timeval lastused[IAX_MAX_CALLS];
 
 
@@ -531,7 +531,7 @@ static int iax2_getpeername(struct sockaddr_in sin, char *host, int len, int loc
 	struct iax2_peer *peer;
 	int res = 0;
 	if (lockpeer)
-		ast_pthread_mutex_lock(&peerl.lock);
+		ast_mutex_lock(&peerl.lock);
 	peer = peerl.peers;
 	while(peer) {
 		if ((peer->addr.sin_addr.s_addr == sin.sin_addr.s_addr) &&
@@ -543,7 +543,7 @@ static int iax2_getpeername(struct sockaddr_in sin, char *host, int len, int loc
 		peer = peer->next;
 	}
 	if (lockpeer)
-		ast_pthread_mutex_unlock(&peerl.lock);
+		ast_mutex_unlock(&peerl.lock);
 	return res;
 }
 
@@ -692,7 +692,7 @@ static int make_trunk(unsigned short callno, int locked)
 	}
 	gettimeofday(&now, NULL);
 	for (x=TRUNK_CALL_START;x<IAX_MAX_CALLS - 1; x++) {
-		ast_pthread_mutex_lock(&iaxsl[x]);
+		ast_mutex_lock(&iaxsl[x]);
 		if (!iaxs[x] && ((now.tv_sec - lastused[x].tv_sec) > MIN_REUSE_TIME)) {
 			iaxs[x] = iaxs[callno];
 			iaxs[x]->callno = x;
@@ -705,13 +705,13 @@ static int make_trunk(unsigned short callno, int locked)
 			iaxs[x]->pingid = ast_sched_add(sched, ping_time * 1000, send_ping, (void *)x);
 			iaxs[x]->lagid = ast_sched_add(sched, lagrq_time * 1000, send_lagrq, (void *)x);
 			if (locked)
-				ast_pthread_mutex_unlock(&iaxsl[callno]);
+				ast_mutex_unlock(&iaxsl[callno]);
 			res = x;
 			if (!locked)
-				ast_pthread_mutex_unlock(&iaxsl[x]);
+				ast_mutex_unlock(&iaxsl[x]);
 			break;
 		}
-		ast_pthread_mutex_unlock(&iaxsl[x]);
+		ast_mutex_unlock(&iaxsl[x]);
 	}
 	if (x >= IAX_MAX_CALLS - 1) {
 		ast_log(LOG_WARNING, "Unable to trunk call: Insufficient space\n");
@@ -732,33 +732,33 @@ static int find_callno(unsigned short callno, unsigned short dcallno, struct soc
 	if (new <= NEW_ALLOW) {
 		/* Look for an existing connection first */
 		for (x=1;(res < 1) && (x<maxnontrunkcall);x++) {
-			ast_pthread_mutex_lock(&iaxsl[x]);
+			ast_mutex_lock(&iaxsl[x]);
 			if (iaxs[x]) {
 				/* Look for an exact match */
 				if (match(sin, callno, dcallno, iaxs[x])) {
 					res = x;
 				}
 			}
-			ast_pthread_mutex_unlock(&iaxsl[x]);
+			ast_mutex_unlock(&iaxsl[x]);
 		}
 		for (x=TRUNK_CALL_START;(res < 1) && (x<maxtrunkcall);x++) {
-			ast_pthread_mutex_lock(&iaxsl[x]);
+			ast_mutex_lock(&iaxsl[x]);
 			if (iaxs[x]) {
 				/* Look for an exact match */
 				if (match(sin, callno, dcallno, iaxs[x])) {
 					res = x;
 				}
 			}
-			ast_pthread_mutex_unlock(&iaxsl[x]);
+			ast_mutex_unlock(&iaxsl[x]);
 		}
 	}
 	if ((res < 1) && (new >= NEW_ALLOW)) {
 		gettimeofday(&now, NULL);
 		for (x=1;x<TRUNK_CALL_START;x++) {
 			/* Find first unused call number that hasn't been used in a while */
-			ast_pthread_mutex_lock(&iaxsl[x]);
+			ast_mutex_lock(&iaxsl[x]);
 			if (!iaxs[x] && ((now.tv_sec - lastused[x].tv_sec) > MIN_REUSE_TIME)) break;
-			ast_pthread_mutex_unlock(&iaxsl[x]);
+			ast_mutex_unlock(&iaxsl[x]);
 		}
 		/* We've still got lock held if we found a spot */
 		if (x >= TRUNK_CALL_START) {
@@ -766,7 +766,7 @@ static int find_callno(unsigned short callno, unsigned short dcallno, struct soc
 			return -1;
 		}
 		iaxs[x] = new_iax(sin, lockpeer);
-		ast_pthread_mutex_unlock(&iaxsl[x]);
+		ast_mutex_unlock(&iaxsl[x]);
 		update_max_nontrunk();
 		if (iaxs[x]) {
 			if (option_debug)
@@ -805,19 +805,19 @@ static int iax2_queue_frame(int callno, struct ast_frame *f)
 	/* Assumes lock for callno is already held... */
 	for (;;) {
 		pass++;
-		if (!pthread_mutex_trylock(&iaxsl[callno])) {
+		if (!ast_mutex_trylock(&iaxsl[callno])) {
 			ast_log(LOG_WARNING, "Lock is not held on pass %d of iax2_queue_frame\n", pass);
 			CRASH;
 		}
 		if (iaxs[callno] && iaxs[callno]->owner) {
-			if (pthread_mutex_trylock(&iaxs[callno]->owner->lock)) {
+			if (ast_mutex_trylock(&iaxs[callno]->owner->lock)) {
 				/* Avoid deadlock by pausing and trying again */
-				ast_pthread_mutex_unlock(&iaxsl[callno]);
+				ast_mutex_unlock(&iaxsl[callno]);
 				usleep(1);
-				ast_pthread_mutex_lock(&iaxsl[callno]);
+				ast_mutex_lock(&iaxsl[callno]);
 			} else {
 				ast_queue_frame(iaxs[callno]->owner, f, 0);
-				ast_pthread_mutex_unlock(&iaxs[callno]->owner->lock);
+				ast_mutex_unlock(&iaxs[callno]->owner->lock);
 				break;
 			}
 		} else
@@ -864,9 +864,9 @@ static int do_deliver(void *data)
 	struct iax_frame *fr = data;
 	int callno = fr->callno;
 	int res;
-	ast_pthread_mutex_lock(&iaxsl[callno]);
+	ast_mutex_lock(&iaxsl[callno]);
 	res = __do_deliver(data);
-	ast_pthread_mutex_unlock(&iaxsl[callno]);
+	ast_mutex_unlock(&iaxsl[callno]);
 	return res;
 }
 
@@ -944,10 +944,10 @@ static int iax2_predestroy(int callno)
 {
 	struct ast_channel *c;
 	struct chan_iax2_pvt *pvt;
-	ast_pthread_mutex_lock(&iaxsl[callno]);
+	ast_mutex_lock(&iaxsl[callno]);
 	pvt = iaxs[callno];
 	if (!pvt) {
-		ast_pthread_mutex_unlock(&iaxsl[callno]);
+		ast_mutex_unlock(&iaxsl[callno]);
 		return -1;
 	}
 	if (!pvt->alreadygone) {
@@ -972,23 +972,23 @@ static int iax2_predestroy(int callno)
 		c->pvt->pvt = NULL;
 		ast_queue_hangup(c, 0);
 		pvt->owner = NULL;
-		ast_pthread_mutex_lock(&usecnt_lock);
+		ast_mutex_lock(&usecnt_lock);
 		usecnt--;
 		if (usecnt < 0) 
 			ast_log(LOG_WARNING, "Usecnt < 0???\n");
-		ast_pthread_mutex_unlock(&usecnt_lock);
+		ast_mutex_unlock(&usecnt_lock);
 		ast_update_use_count();
 	}
-	ast_pthread_mutex_unlock(&iaxsl[callno]);
+	ast_mutex_unlock(&iaxsl[callno]);
 	return 0;
 }
 
 static int iax2_predestroy_nolock(int callno)
 {
 	int res;
-	ast_pthread_mutex_unlock(&iaxsl[callno]);
+	ast_mutex_unlock(&iaxsl[callno]);
 	res = iax2_predestroy(callno);
-	ast_pthread_mutex_lock(&iaxsl[callno]);
+	ast_mutex_lock(&iaxsl[callno]);
 	return res;
 }
 
@@ -999,7 +999,7 @@ static void iax2_destroy(int callno)
 	struct ast_channel *owner;
 
 retry:
-	ast_pthread_mutex_lock(&iaxsl[callno]);
+	ast_mutex_lock(&iaxsl[callno]);
 	pvt = iaxs[callno];
 	gettimeofday(&lastused[callno], NULL);
 
@@ -1008,9 +1008,9 @@ retry:
 	else
 		owner = NULL;
 	if (owner) {
-		if (pthread_mutex_trylock(&owner->lock)) {
+		if (ast_mutex_trylock(&owner->lock)) {
 			ast_log(LOG_NOTICE, "Avoiding IAX destroy deadlock\n");
-			ast_pthread_mutex_unlock(&iaxsl[callno]);
+			ast_mutex_unlock(&iaxsl[callno]);
 			usleep(1);
 			goto retry;
 		}
@@ -1053,18 +1053,18 @@ retry:
 		free(pvt);
 	}
 	if (owner) {
-		ast_pthread_mutex_unlock(&owner->lock);
+		ast_mutex_unlock(&owner->lock);
 	}
-	ast_pthread_mutex_unlock(&iaxsl[callno]);
+	ast_mutex_unlock(&iaxsl[callno]);
 	if (callno & 0x4000)
 		update_max_trunk();
 }
 static void iax2_destroy_nolock(int callno)
 {	
 	/* Actually it's easier to unlock, kill it, and relock */
-	ast_pthread_mutex_unlock(&iaxsl[callno]);
+	ast_mutex_unlock(&iaxsl[callno]);
 	iax2_destroy(callno);
-	ast_pthread_mutex_lock(&iaxsl[callno]);
+	ast_mutex_lock(&iaxsl[callno]);
 }
 
 static int update_packet(struct iax_frame *f)
@@ -1088,7 +1088,7 @@ static int attempt_transmit(void *data)
 	int callno = f->callno;
 	/* Make sure this call is still active */
 	if (callno) 
-		ast_pthread_mutex_lock(&iaxsl[callno]);
+		ast_mutex_lock(&iaxsl[callno]);
 	if ((f->callno) && iaxs[f->callno]) {
 		if ((f->retries < 0) /* Already ACK'd */ ||
 		    (f->retries >= max_retries) /* Too many attempts */) {
@@ -1143,11 +1143,11 @@ static int attempt_transmit(void *data)
 		freeme++;
 	}
 	if (callno)
-		ast_pthread_mutex_unlock(&iaxsl[callno]);
+		ast_mutex_unlock(&iaxsl[callno]);
 	/* Do not try again */
 	if (freeme) {
 		/* Don't attempt delivery, just remove it from the queue */
-		ast_pthread_mutex_lock(&iaxq.lock);
+		ast_mutex_lock(&iaxq.lock);
 		if (f->prev) 
 			f->prev->next = f->next;
 		else
@@ -1157,7 +1157,7 @@ static int attempt_transmit(void *data)
 		else
 			iaxq.tail = f->prev;
 		iaxq.count--;
-		ast_pthread_mutex_unlock(&iaxq.lock);
+		ast_mutex_unlock(&iaxq.lock);
 		f->retrans = -1;
 		/* Free the IAX frame */
 		iax2_frame_free(f);
@@ -1224,7 +1224,7 @@ static int iax2_show_cache(int fd, int argc, char *argv[])
 	int x,y;
 	struct timeval tv;
 	gettimeofday(&tv, NULL);
-	ast_pthread_mutex_lock(&dpcache_lock);
+	ast_mutex_lock(&dpcache_lock);
 	dp = dpcache;
 	ast_cli(fd, "%-20.20s %-12.12s %-9.9s %-8.8s %s\n", "Peer/Context", "Exten", "Exp.", "Wait.", "Flags");
 	while(dp) {
@@ -1266,7 +1266,7 @@ static int iax2_show_cache(int fd, int argc, char *argv[])
 			ast_cli(fd, "%-20.20s %-12.12s %-9.9s %-8d %s\n", pc, dp->exten, "(expired)", y, tmp);
 		dp = dp->next;
 	}
-	ast_pthread_mutex_unlock(&dpcache_lock);
+	ast_mutex_unlock(&dpcache_lock);
 	return RESULT_SUCCESS;
 }
 
@@ -1449,7 +1449,7 @@ static int iax2_transmit(struct iax_frame *fr)
 	/* By setting this to 0, the network thread will send it for us, and
 	   queue retransmission if necessary */
 	fr->sentyet = 0;
-	ast_pthread_mutex_lock(&iaxq.lock);
+	ast_mutex_lock(&iaxq.lock);
 	if (!iaxq.head) {
 		/* Empty queue */
 		iaxq.head = fr;
@@ -1461,7 +1461,7 @@ static int iax2_transmit(struct iax_frame *fr)
 		iaxq.tail = fr;
 	}
 	iaxq.count++;
-	ast_pthread_mutex_unlock(&iaxq.lock);
+	ast_mutex_unlock(&iaxq.lock);
 	/* Wake up the network thread */
 	pthread_kill(netthreadid, SIGURG);
 	return 0;
@@ -1510,7 +1510,7 @@ static int create_addr(struct sockaddr_in *sin, int *capability, int *sendani, i
 	if (trunk)
 		*trunk = 0;
 	sin->sin_family = AF_INET;
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	p = peerl.peers;
 	while(p) {
 		if (!strcasecmp(p->name, peer)) {
@@ -1543,7 +1543,7 @@ static int create_addr(struct sockaddr_in *sin, int *capability, int *sendani, i
 		}
 		p = p->next;
 	}
-	ast_pthread_mutex_unlock(&peerl.lock);
+	ast_mutex_unlock(&peerl.lock);
 	if (!p && !found) {
 		hp = gethostbyname(peer);
 		if (hp) {
@@ -1564,13 +1564,13 @@ static int auto_congest(void *nothing)
 {
 	int callno = (int)(long)(nothing);
 	struct ast_frame f = { AST_FRAME_CONTROL, AST_CONTROL_CONGESTION };
-	ast_pthread_mutex_lock(&iaxsl[callno]);
+	ast_mutex_lock(&iaxsl[callno]);
 	if (iaxs[callno]) {
 		iaxs[callno]->initid = -1;
 		iax2_queue_frame(callno, &f);
 		ast_log(LOG_NOTICE, "Auto-congesting call due to slow response\n");
 	}
-	ast_pthread_mutex_unlock(&iaxsl[callno]);
+	ast_mutex_unlock(&iaxsl[callno]);
 	return 0;
 }
 
@@ -1718,7 +1718,7 @@ static int iax2_hangup(struct ast_channel *c)
 	int callno;
 	if (pvt) {
 		callno = pvt->callno;
-		ast_pthread_mutex_lock(&iaxsl[callno]);
+		ast_mutex_lock(&iaxsl[callno]);
 		ast_log(LOG_DEBUG, "We're hanging up %s now...\n", c->name);
 		alreadygone = pvt->alreadygone;
 		/* Send the hangup unless we have had a transmission error or are already gone */
@@ -1731,7 +1731,7 @@ static int iax2_hangup(struct ast_channel *c)
 			ast_log(LOG_DEBUG, "Really destroying %s now...\n", c->name);
 			iax2_destroy_nolock(callno);
 		}
-		ast_pthread_mutex_unlock(&iaxsl[callno]);
+		ast_mutex_unlock(&iaxsl[callno]);
 	}
 	if (option_verbose > 2) 
 		ast_verbose(VERBOSE_PREFIX_3 "Hungup '%s'\n", c->name);
@@ -1965,7 +1965,7 @@ static int iax2_getpeertrunk(struct sockaddr_in sin)
 {
 	struct iax2_peer *peer;
 	int res = 0;
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	peer = peerl.peers;
 	while(peer) {
 		if ((peer->addr.sin_addr.s_addr == sin.sin_addr.s_addr) &&
@@ -1975,7 +1975,7 @@ static int iax2_getpeertrunk(struct sockaddr_in sin)
 		}
 		peer = peer->next;
 	}
-	ast_pthread_mutex_unlock(&peerl.lock);
+	ast_mutex_unlock(&peerl.lock);
 	return res;
 }
 
@@ -2027,9 +2027,9 @@ static struct ast_channel *ast_iax2_new(struct chan_iax2_pvt *i, int state, int
 		i->owner = tmp;
 		i->capability = capability;
 		ast_setstate(tmp, state);
-		ast_pthread_mutex_lock(&usecnt_lock);
+		ast_mutex_lock(&usecnt_lock);
 		usecnt++;
-		ast_pthread_mutex_unlock(&usecnt_lock);
+		ast_mutex_unlock(&usecnt_lock);
 		ast_update_use_count();
 		if (state != AST_STATE_DOWN) {
 			if (ast_pbx_start(tmp)) {
@@ -2309,14 +2309,14 @@ static int iax2_show_users(int fd, int argc, char *argv[])
 	struct iax2_user *user;
 	if (argc != 3) 
 		return RESULT_SHOWUSAGE;
-	ast_pthread_mutex_lock(&userl.lock);
+	ast_mutex_lock(&userl.lock);
 	ast_cli(fd, FORMAT, "Username", "Secret", "Authen", "Def.Context", "A/C");
 	for(user=userl.users;user;user=user->next) {
 		ast_cli(fd, FORMAT2, user->name, user->secret, user->authmethods, 
 				user->contexts ? user->contexts->context : context,
 				user->ha ? "Yes" : "No");
 	}
-	ast_pthread_mutex_unlock(&userl.lock);
+	ast_mutex_unlock(&userl.lock);
 	return RESULT_SUCCESS;
 #undef FORMAT
 #undef FORMAT2
@@ -2337,7 +2337,7 @@ static int iax2_show_peers(int fd, int argc, char *argv[])
 		} else
 			return RESULT_SHOWUSAGE;
  	}
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	ast_cli(fd, FORMAT2, "Name/Username", "Host", "   ", "Mask", "Port", "Status");
 	for (peer = peerl.peers;peer;peer = peer->next) {
 		char nm[20];
@@ -2366,7 +2366,7 @@ static int iax2_show_peers(int fd, int argc, char *argv[])
 					nm,
 					ntohs(peer->addr.sin_port), peer->trunk ? "(T)" : "   ", status);
 	}
-	ast_pthread_mutex_unlock(&peerl.lock);
+	ast_mutex_unlock(&peerl.lock);
 	return RESULT_SUCCESS;
 #undef FORMAT
 #undef FORMAT2
@@ -2413,7 +2413,7 @@ static int iax2_show_registry(int fd, int argc, char *argv[])
 	char perceived[80];
 	if (argc != 3)
 		return RESULT_SHOWUSAGE;
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	ast_cli(fd, FORMAT2, "Host", "Username", "Perceived", "Refresh", "State");
 	for (reg = registrations;reg;reg = reg->next) {
 		snprintf(host, sizeof(host), "%s:%d", inet_ntoa(reg->addr.sin_addr), ntohs(reg->addr.sin_port));
@@ -2424,7 +2424,7 @@ static int iax2_show_registry(int fd, int argc, char *argv[])
 		ast_cli(fd, FORMAT, host, 
 					reg->username, perceived, reg->refresh, regstate2str(reg->regstate));
 	}
-	ast_pthread_mutex_unlock(&peerl.lock);
+	ast_mutex_unlock(&peerl.lock);
 	return RESULT_SUCCESS;
 #undef FORMAT
 #undef FORMAT2
@@ -2440,7 +2440,7 @@ static int iax2_show_channels(int fd, int argc, char *argv[])
 		return RESULT_SHOWUSAGE;
 	ast_cli(fd, FORMAT2, "Peer", "Username", "ID (Lo/Rem)", "Seq (Tx/Rx)", "Lag", "Jitter", "Format");
 	for (x=0;x<IAX_MAX_CALLS;x++) {
-		ast_pthread_mutex_lock(&iaxsl[x]);
+		ast_mutex_lock(&iaxsl[x]);
 		if (iaxs[x]) {
 			ast_cli(fd, FORMAT, inet_ntoa(iaxs[x]->addr.sin_addr), 
 						strlen(iaxs[x]->username) ? iaxs[x]->username : "(None)", 
@@ -2451,7 +2451,7 @@ static int iax2_show_channels(int fd, int argc, char *argv[])
 						iaxs[x]->voiceformat);
 			numchans++;
 		}
-		ast_pthread_mutex_unlock(&iaxsl[x]);
+		ast_mutex_unlock(&iaxsl[x]);
 	}
 	ast_cli(fd, "%d active IAX channel(s)\n", numchans);
 	return RESULT_SUCCESS;
@@ -2654,7 +2654,7 @@ static int check_access(int callno, struct sockaddr_in *sin, struct iax_ies *ies
 			inet_ntoa(sin->sin_addr), version);
 		return res;
 	}
-	ast_pthread_mutex_lock(&userl.lock);
+	ast_mutex_lock(&userl.lock);
 	/* Search the userlist for a compatible entry, and fill in the rest */
 	user = userl.users;
 	while(user) {
@@ -2699,7 +2699,7 @@ static int check_access(int callno, struct sockaddr_in *sin, struct iax_ies *ies
 		}
 		user = user->next;	
 	}
-	ast_pthread_mutex_unlock(&userl.lock);
+	ast_mutex_unlock(&userl.lock);
 	iaxs[callno]->trunk = iax2_getpeertrunk(*sin);
 	return res;
 }
@@ -2970,7 +2970,7 @@ static int authenticate_reply(struct chan_iax2_pvt *p, struct sockaddr_in *sin,
 		/* Normal password authentication */
 		res = authenticate(p->challenge, override, okey, authmethods, &ied, sin);
 	} else {
-		ast_pthread_mutex_lock(&peerl.lock);
+		ast_mutex_lock(&peerl.lock);
 		peer = peerl.peers;
 		while(peer) {
 			if ((!strlen(p->peer) || !strcmp(p->peer, peer->name)) 
@@ -2986,7 +2986,7 @@ static int authenticate_reply(struct chan_iax2_pvt *p, struct sockaddr_in *sin,
 			}
 			peer = peer->next;
 		}
-		ast_pthread_mutex_unlock(&peerl.lock);
+		ast_mutex_unlock(&peerl.lock);
 	}
 	if (!res)
 		res = send_command(p, AST_FRAME_IAX, IAX_COMMAND_AUTHREP, 0, ied.buf, ied.pos, -1);
@@ -3058,7 +3058,7 @@ static int complete_dpreply(struct chan_iax2_pvt *pvt, struct iax_ies *ies)
 		expirey = ies->refresh;
 	if (ies->dpstatus & IAX_DPSTATUS_MATCHMORE)
 		matchmore = CACHE_FLAG_MATCHMORE;
-	ast_pthread_mutex_lock(&dpcache_lock);
+	ast_mutex_lock(&dpcache_lock);
 	prev = NULL;
 	dp = pvt->dpentries;
 	while(dp) {
@@ -3084,7 +3084,7 @@ static int complete_dpreply(struct chan_iax2_pvt *pvt, struct iax_ies *ies)
 		prev = dp;
 		dp = dp->peer;
 	}
-	ast_pthread_mutex_unlock(&dpcache_lock);
+	ast_mutex_unlock(&dpcache_lock);
 	return 0;
 }
 
@@ -3123,7 +3123,7 @@ static int complete_transfer(int callno, struct iax_ies *ies)
 	pvt->last = 0;
 	pvt->lastsent = 0;
 	pvt->pingtime = DEFAULT_RETRY_TIME;
-	ast_pthread_mutex_lock(&iaxq.lock);
+	ast_mutex_lock(&iaxq.lock);
 	for (cur = iaxq.head; cur ; cur = cur->next) {
 		/* We must cancel any packets that would have been transmitted
 		   because now we're talking to someone new.  It's okay, they
@@ -3131,7 +3131,7 @@ static int complete_transfer(int callno, struct iax_ies *ies)
 		if (callno == cur->callno) 
 			cur->retries = -1;
 	}
-	ast_pthread_mutex_unlock(&iaxq.lock);
+	ast_mutex_unlock(&iaxq.lock);
 	return 0; 
 }
 
@@ -3395,14 +3395,14 @@ static int auto_hangup(void *nothing)
 	/* Called from IAX thread only, without iaxs lock */
 	int callno = (int)(long)(nothing);
 	struct iax_ie_data ied;
-	ast_pthread_mutex_lock(&iaxsl[callno]);
+	ast_mutex_lock(&iaxsl[callno]);
 	if (iaxs[callno]) {
 		iaxs[callno]->autoid = -1;
 		memset(&ied, 0, sizeof(ied));
 		iax_ie_append_str(&ied, IAX_IE_CAUSE, "Timeout");
 		send_command_final(iaxs[callno], AST_FRAME_IAX, IAX_COMMAND_HANGUP, 0, ied.buf, ied.pos, -1);
 	}
-	ast_pthread_mutex_unlock(&iaxsl[callno]);
+	ast_mutex_unlock(&iaxsl[callno]);
 	return 0;
 }
 
@@ -3427,7 +3427,7 @@ static int iax2_vnak(int callno)
 static void vnak_retransmit(int callno, int last)
 {
 	struct iax_frame *f;
-	ast_pthread_mutex_lock(&iaxq.lock);
+	ast_mutex_lock(&iaxq.lock);
 	f = iaxq.head;
 	while(f) {
 		/* Send a copy immediately */
@@ -3437,7 +3437,7 @@ static void vnak_retransmit(int callno, int last)
 		}
 		f = f->next;
 	}
-	ast_pthread_mutex_unlock(&iaxq.lock);
+	ast_mutex_unlock(&iaxq.lock);
 }
 
 static int iax2_poke_peer_s(void *data)
@@ -3472,7 +3472,7 @@ static int send_trunk(struct iax2_peer *peer)
 	
 	/* Search through trunked calls for a match with this peer */
 	for (x=TRUNK_CALL_START;x<maxtrunkcall; x++) {
-		ast_pthread_mutex_lock(&iaxsl[x]);
+		ast_mutex_lock(&iaxsl[x]);
 #if 0
 		if (iaxtrunkdebug)
 			ast_verbose("Call %d is at %s:%d (%d)\n", x, inet_ntoa(iaxs[x]->addr.sin_addr), ntohs(iaxs[x]->addr.sin_port), iaxs[x]->addr.sin_family);
@@ -3500,7 +3500,7 @@ static int send_trunk(struct iax2_peer *peer)
 			if (!firstcall)
 				firstcall = x;
 		}
-		ast_pthread_mutex_unlock(&iaxsl[x]);
+		ast_mutex_unlock(&iaxsl[x]);
 	}
 	if (calls) {
 		/* We're actually sending a frame, so fill the meta trunk header and meta header */
@@ -3548,12 +3548,12 @@ static int timing_read(int *id, int fd, short events, void *cbdata)
 		res = read(fd, buf, sizeof(buf));
 		if (res < 1) {
 			ast_log(LOG_WARNING, "Unable to read from timing fd\n");
-			ast_pthread_mutex_unlock(&peerl.lock);
+			ast_mutex_unlock(&peerl.lock);
 			return 1;
 		}
 	}
 	/* For each peer that supports trunking... */
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	peer = peerl.peers;
 	while(peer) {
 		if (peer->trunk) {
@@ -3566,7 +3566,7 @@ static int timing_read(int *id, int fd, short events, void *cbdata)
 		}
 		peer = peer->next;
 	}
-	ast_pthread_mutex_unlock(&peerl.lock);
+	ast_mutex_unlock(&peerl.lock);
 	if (iaxtrunkdebug)
 		ast_verbose("Ending trunk processing with %d peers and %d calls processed\n", processed, totalcalls);
 	iaxtrunkdebug =0;
@@ -3634,14 +3634,14 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 			ts = ntohl(mth->ts);
 			res -= (sizeof(struct ast_iax2_meta_hdr) + sizeof(struct ast_iax2_meta_trunk_hdr));
 			ptr = mth->data;
-			ast_pthread_mutex_lock(&peerl.lock);
+			ast_mutex_lock(&peerl.lock);
 			peer = peerl.peers;
 			while(peer) {
 				if (!inaddrcmp(&peer->addr, &sin))
 					break;
 				peer = peer->next;
 			}
-			ast_pthread_mutex_unlock(&peerl.lock);
+			ast_mutex_unlock(&peerl.lock);
 			if (!peer) {
 				ast_log(LOG_WARNING, "Unable to accept trunked packet from '%s:%d': No matching peer\n", inet_ntoa(sin.sin_addr), ntohs(sin.sin_port));
 				return 1;
@@ -3660,7 +3660,7 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 					break;
 				fr.callno = find_callno(ntohs(mte->callno) & ~IAX_FLAG_FULL, 0, &sin, NEW_PREVENT, 1);
 				if (fr.callno) {
-					ast_pthread_mutex_lock(&iaxsl[fr.callno]);
+					ast_mutex_lock(&iaxsl[fr.callno]);
 					/* If it's a valid call, deliver the contents.  If not, we
 					   drop it, since we don't have a scallno to use for an INVAL */
 					/* Process as a mini frame */
@@ -3703,7 +3703,7 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 						ast_log(LOG_WARNING, "Received trunked frame before first full voice frame\n ");
 						iax2_vnak(fr.callno);
 					}
-					ast_pthread_mutex_unlock(&iaxsl[fr.callno]);
+					ast_mutex_unlock(&iaxsl[fr.callno]);
 				}
 				ptr += len;
 				res -= len;
@@ -3739,7 +3739,7 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 		fr.callno = find_callno(ntohs(mh->callno) & ~IAX_FLAG_FULL, dcallno, &sin, new, 1);
 
 	if (fr.callno > 0) 
-		ast_pthread_mutex_lock(&iaxsl[fr.callno]);
+		ast_mutex_lock(&iaxsl[fr.callno]);
 
 	if (!fr.callno || !iaxs[fr.callno]) {
 		/* A call arrived for a non-existant destination.  Unless it's an "inval"
@@ -3754,7 +3754,7 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 				);
 		}
 		if (fr.callno > 0) 
-			ast_pthread_mutex_unlock(&iaxsl[fr.callno]);
+			ast_mutex_unlock(&iaxsl[fr.callno]);
 		return 1;
 	}
 	if (!inaddrcmp(&sin, &iaxs[fr.callno]->addr) && !minivid)
@@ -3798,7 +3798,7 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 					/* Send a VNAK requesting retransmission */
 					iax2_vnak(fr.callno);
 				}
-				ast_pthread_mutex_unlock(&iaxsl[fr.callno]);
+				ast_mutex_unlock(&iaxsl[fr.callno]);
 				return 1;
 			}
 		} else {
@@ -3814,7 +3814,7 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 		/* A full frame */
 		if (res < sizeof(struct ast_iax2_full_hdr)) {
 			ast_log(LOG_WARNING, "midget packet received (%d of %d min)\n", res, sizeof(struct ast_iax2_full_hdr));
-			ast_pthread_mutex_unlock(&iaxsl[fr.callno]);
+			ast_mutex_unlock(&iaxsl[fr.callno]);
 			return 1;
 		}
 		f.datalen = res - sizeof(struct ast_iax2_full_hdr);
@@ -3838,7 +3838,7 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 					/* Ack the packet with the given timestamp */
 					if (option_debug)
 						ast_log(LOG_DEBUG, "Cancelling transmission of packet %d\n", x);
-					ast_pthread_mutex_lock(&iaxq.lock);
+					ast_mutex_lock(&iaxq.lock);
 					for (cur = iaxq.head; cur ; cur = cur->next) {
 						/* If it's our call, and our timestamp, mark -1 retries */
 						if ((fr.callno == cur->callno) && (x == cur->oseqno)) {
@@ -3851,14 +3851,14 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 							}
 						}
 					}
-					ast_pthread_mutex_unlock(&iaxq.lock);
+					ast_mutex_unlock(&iaxq.lock);
 				}
 				/* Note how much we've received acknowledgement for */
 				if (iaxs[fr.callno])
 					iaxs[fr.callno]->rseqno = fr.iseqno;
 				else {
 					/* Stop processing now */
-					ast_pthread_mutex_unlock(&iaxsl[fr.callno]);
+					ast_mutex_unlock(&iaxsl[fr.callno]);
 					return 1;
 				}
 			} else
@@ -3869,7 +3869,7 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 			 ((f.subclass != IAX_COMMAND_TXACC) &&
 			  (f.subclass != IAX_COMMAND_TXCNT)))) {
 			/* Only messages we accept from a transfer host are TXACC and TXCNT */
-			ast_pthread_mutex_unlock(&iaxsl[fr.callno]);
+			ast_mutex_unlock(&iaxsl[fr.callno]);
 			return 1;
 		}
 
@@ -3877,7 +3877,7 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 			if (f.frametype == AST_FRAME_IAX) {
 				if (iax_parse_ies(&ies, buf + sizeof(struct ast_iax2_full_hdr), f.datalen)) {
 					ast_log(LOG_WARNING, "undecodable frame received\n");
-					ast_pthread_mutex_unlock(&iaxsl[fr.callno]);
+					ast_mutex_unlock(&iaxsl[fr.callno]);
 					return 1;
 				}
 				f.data = NULL;
@@ -3897,10 +3897,10 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
 					if (iaxs[fr.callno]->owner) {
 						int orignative;
 retryowner:
-						if (pthread_mutex_trylock(&iaxs[fr.callno]->owner->lock)) {
-							ast_pthread_mutex_unlock(&iaxsl[fr.callno]);
+						if (ast_mutex_trylock(&iaxs[fr.callno]->owner->lock)) {
+							ast_mutex_unlock(&iaxsl[fr.callno]);
 							usleep(1);
-							ast_pthread_mutex_lock(&iaxsl[fr.callno]);
+							ast_mutex_lock(&iaxsl[fr.callno]);
 							if (iaxs[fr.callno] && iaxs[fr.callno]->owner) goto retryowner;
 						}
 						if (iaxs[fr.callno]) {
@@ -3910,11 +3910,11 @@ retryowner:
 								if (iaxs[fr.callno]->owner->readformat)
 									ast_set_read_format(iaxs[fr.callno]->owner, iaxs[fr.callno]->owner->readformat);
 								iaxs[fr.callno]->owner->nativeformats = orignative;
-								ast_pthread_mutex_unlock(&iaxs[fr.callno]->owner->lock);
+								ast_mutex_unlock(&iaxs[fr.callno]->owner->lock);
 							}
 						} else {
 							ast_log(LOG_DEBUG, "Neat, somebody took away the channel at a magical time but i found it!\n");
-							ast_pthread_mutex_unlock(&iaxsl[fr.callno]);
+							ast_mutex_unlock(&iaxsl[fr.callno]);
 							return 1;
 						}
 					}
@@ -3954,13 +3954,13 @@ retryowner:
 			case IAX_COMMAND_TXACC:
 				if (iaxs[fr.callno]->transferring == TRANSFER_BEGIN) {
 					/* Ack the packet with the given timestamp */
-					ast_pthread_mutex_lock(&iaxq.lock);
+					ast_mutex_lock(&iaxq.lock);
 					for (cur = iaxq.head; cur ; cur = cur->next) {
 						/* Cancel any outstanding txcnt's */
 						if ((fr.callno == cur->callno) && (cur->transfer))
 							cur->retries = -1;
 					}
-					ast_pthread_mutex_unlock(&iaxq.lock);
+					ast_mutex_unlock(&iaxq.lock);
 					memset(&ied1, 0, sizeof(ied1));
 					iax_ie_append_short(&ied1, IAX_IE_CALLNO, iaxs[fr.callno]->callno);
 					send_command(iaxs[fr.callno], AST_FRAME_IAX, IAX_COMMAND_TXREADY, 0, ied1.buf, ied1.pos, -1);
@@ -4125,7 +4125,7 @@ retryowner:
 							ast_set_read_format(iaxs[fr.callno]->owner, iaxs[fr.callno]->owner->readformat);	
 					}
 				}
-				ast_pthread_mutex_lock(&dpcache_lock);
+				ast_mutex_lock(&dpcache_lock);
 				dp = iaxs[fr.callno]->dpentries;
 				while(dp) {
 					if (!(dp->flags & CACHE_FLAG_TRANSMITTED)) {
@@ -4133,7 +4133,7 @@ retryowner:
 					}
 					dp = dp->peer;
 				}
-				ast_pthread_mutex_unlock(&dpcache_lock);
+				ast_mutex_unlock(&dpcache_lock);
 				break;
 			case IAX_COMMAND_POKE:
 				/* Send back a pong packet with the original timestamp */
@@ -4430,7 +4430,7 @@ retryowner:
 			  	if (iaxs[fr.callno] && iaxs[fr.callno]->aseqno != iaxs[fr.callno]->iseqno)
 					send_command_immediate(iaxs[fr.callno], AST_FRAME_IAX, IAX_COMMAND_ACK, fr.ts, NULL, 0,fr.iseqno);
 			}
-			ast_pthread_mutex_unlock(&iaxsl[fr.callno]);
+			ast_mutex_unlock(&iaxsl[fr.callno]);
 			return 1;
 		}
 		/* Unless this is an ACK or INVAL frame, ack it */
@@ -4443,7 +4443,7 @@ retryowner:
 		else {
 			ast_log(LOG_WARNING, "Received mini frame before first full voice frame\n ");
 			iax2_vnak(fr.callno);
-			ast_pthread_mutex_unlock(&iaxsl[fr.callno]);
+			ast_mutex_unlock(&iaxsl[fr.callno]);
 			return 1;
 		}
 		f.datalen = res - sizeof(struct ast_iax2_video_hdr);
@@ -4460,13 +4460,13 @@ retryowner:
 		else {
 			ast_log(LOG_WARNING, "Received mini frame before first full voice frame\n ");
 			iax2_vnak(fr.callno);
-			ast_pthread_mutex_unlock(&iaxsl[fr.callno]);
+			ast_mutex_unlock(&iaxsl[fr.callno]);
 			return 1;
 		}
 		f.datalen = res - sizeof(struct ast_iax2_mini_hdr);
 		if (f.datalen < 0) {
 			ast_log(LOG_WARNING, "Datalen < 0?\n");
-			ast_pthread_mutex_unlock(&iaxsl[fr.callno]);
+			ast_mutex_unlock(&iaxsl[fr.callno]);
 			return 1;
 		}
 		if (f.datalen)
@@ -4477,7 +4477,7 @@ retryowner:
 	}
 	/* Don't pass any packets until we're started */
 	if (!(iaxs[fr.callno]->state & IAX_STATE_STARTED)) {
-		ast_pthread_mutex_unlock(&iaxsl[fr.callno]);
+		ast_mutex_unlock(&iaxsl[fr.callno]);
 		return 1;
 	}
 	/* Common things */
@@ -4509,7 +4509,7 @@ retryowner:
 	schedule_delivery(iaxfrdup2(&fr), 1, updatehistory);
 #endif
 	/* Always run again */
-	ast_pthread_mutex_unlock(&iaxsl[fr.callno]);
+	ast_mutex_unlock(&iaxsl[fr.callno]);
 	return 1;
 }
 
@@ -4632,7 +4632,7 @@ static struct ast_channel *iax2_request(char *type, int format, void *data)
 		ast_log(LOG_WARNING, "Unable to create call\n");
 		return NULL;
 	}
-	ast_pthread_mutex_lock(&iaxsl[callno]);
+	ast_mutex_lock(&iaxsl[callno]);
 	/* If this is a trunk, update it now */
 	iaxs[callno]->trunk = trunk;
 	if (trunk) 
@@ -4642,7 +4642,7 @@ static struct ast_channel *iax2_request(char *type, int format, void *data)
 	iaxs[callno]->maxtime = maxtime;
 	iaxs[callno]->notransfer = notransfer;
 	c = ast_iax2_new(iaxs[callno], AST_STATE_DOWN, capability);
-	ast_pthread_mutex_unlock(&iaxsl[callno]);
+	ast_mutex_unlock(&iaxsl[callno]);
 	if (c) {
 		/* Choose a format we can live with */
 		if (c->nativeformats & format)
@@ -4675,7 +4675,7 @@ static void *network_thread(void *ignore)
 	for(;;) {
 		/* Go through the queue, sending messages which have not yet been
 		   sent, and scheduling retransmissions if appropriate */
-		ast_pthread_mutex_lock(&iaxq.lock);
+		ast_mutex_lock(&iaxq.lock);
 		f = iaxq.head;
 		while(f) {
 			freeme = NULL;
@@ -4708,7 +4708,7 @@ static void *network_thread(void *ignore)
 			if (freeme)
 				iax_frame_free(freeme);
 		}
-		ast_pthread_mutex_unlock(&iaxq.lock);
+		ast_mutex_unlock(&iaxq.lock);
 		res = ast_sched_wait(sched);
 		if ((res > 1000) || (res < 0))
 			res = 1000;
@@ -4755,7 +4755,7 @@ static struct iax2_peer *build_peer(char *name, struct ast_variable *v)
 	int format;
 	int found=0;
 	prev = NULL;
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	peer = peerl.peers;
 	while(peer) {
 		if (!strcasecmp(peer->name, name)) {	
@@ -4772,9 +4772,9 @@ static struct iax2_peer *build_peer(char *name, struct ast_variable *v)
 		} else {
 			peerl.peers = peer->next;
 		}
-		ast_pthread_mutex_unlock(&peerl.lock);
+		ast_mutex_unlock(&peerl.lock);
  	} else {
-		ast_pthread_mutex_unlock(&peerl.lock);
+		ast_mutex_unlock(&peerl.lock);
 		peer = malloc(sizeof(struct iax2_peer));
 		memset(peer, 0, sizeof(struct iax2_peer));
 		peer->expire = -1;
@@ -4967,7 +4967,7 @@ static void delete_users(void){
 	struct iax2_registry *reg, *regl;
 
 	/* Delete all users */
-	ast_pthread_mutex_lock(&userl.lock);
+	ast_mutex_lock(&userl.lock);
 	for (user=userl.users;user;) {
 		ast_free_ha(user->ha);
 		free_context(user->contexts);
@@ -4976,7 +4976,7 @@ static void delete_users(void){
 		free(userlast);
 	}
 	userl.users=NULL;
-	ast_pthread_mutex_unlock(&userl.lock);
+	ast_mutex_unlock(&userl.lock);
 
 	for (reg = registrations;reg;) {
 		regl = reg;
@@ -4986,30 +4986,30 @@ static void delete_users(void){
 		free(regl);
 	}
 	registrations = NULL;
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	for (peer=peerl.peers;peer;) {
 		/* Assume all will be deleted, and we'll find out for sure later */
 		peer->delme = 1;
 		peer = peer->next;
 	}
-	ast_pthread_mutex_unlock(&peerl.lock);
+	ast_mutex_unlock(&peerl.lock);
 }
 
 static void prune_peers(void){
 	/* Prune peers who still are supposed to be deleted */
 	struct iax2_peer *peer, *peerlast, *peernext;
 	int x;
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	peerlast = NULL;
 	for (peer=peerl.peers;peer;) {
 		peernext = peer->next;
 		if (peer->delme) {
 			for (x=0;x<IAX_MAX_CALLS;x++) {
-				ast_pthread_mutex_lock(&iaxsl[x]);
+				ast_mutex_lock(&iaxsl[x]);
 				if (iaxs[x] && (iaxs[x]->peerpoke == peer)) {
 					iax2_destroy(x);
 				}
-				ast_pthread_mutex_unlock(&iaxsl[x]);
+				ast_mutex_unlock(&iaxsl[x]);
 			}
 			/* Delete it, it needs to disappear */
 			if (peer->expire > -1)
@@ -5027,7 +5027,7 @@ static void prune_peers(void){
 			peerlast = peer;
 		peer=peernext;
 	}
-	ast_pthread_mutex_unlock(&peerl.lock);
+	ast_mutex_unlock(&peerl.lock);
 }
 
 static void set_timing(void)
@@ -5157,19 +5157,19 @@ static int set_config(char *config_file, struct sockaddr_in* sin){
 				if (!strcasecmp(utype, "user") || !strcasecmp(utype, "friend")) {
 					user = build_user(cat, ast_variable_browse(cfg, cat));
 					if (user) {
-						ast_pthread_mutex_lock(&userl.lock);
+						ast_mutex_lock(&userl.lock);
 						user->next = userl.users;
 						userl.users = user;
-						ast_pthread_mutex_unlock(&userl.lock);
+						ast_mutex_unlock(&userl.lock);
 					}
 				}
 				if (!strcasecmp(utype, "peer") || !strcasecmp(utype, "friend")) {
 					peer = build_peer(cat, ast_variable_browse(cfg, cat));
 					if (peer) {
-						ast_pthread_mutex_lock(&peerl.lock);
+						ast_mutex_lock(&peerl.lock);
 						peer->next = peerl.peers;
 						peerl.peers = peer;
-						ast_pthread_mutex_unlock(&peerl.lock);
+						ast_mutex_unlock(&peerl.lock);
 					}
 				} else if (strcasecmp(utype, "user")) {
 					ast_log(LOG_WARNING, "Unknown type '%s' for '%s' in %s\n", utype, cat, config_file);
@@ -5220,12 +5220,12 @@ static int cache_get_callno(char *data)
 	for (x=0;x<IAX_MAX_CALLS; x++) {
 		/* Look for an *exact match* call.  Once a call is negotiated, it can only
 		   look up entries for a single context */
-		if (!pthread_mutex_trylock(&iaxsl[x])) {
+		if (!ast_mutex_trylock(&iaxsl[x])) {
 			if (iaxs[x] && !strcasecmp(data, iaxs[x]->dproot)) {
-				ast_pthread_mutex_unlock(&iaxsl[x]);
+				ast_mutex_unlock(&iaxsl[x]);
 				return x;
 			}
-			ast_pthread_mutex_unlock(&iaxsl[x]);
+			ast_mutex_unlock(&iaxsl[x]);
 		}
 	}
 	memset(&ied, 0, sizeof(ied));
@@ -5264,7 +5264,7 @@ static int cache_get_callno(char *data)
 		ast_log(LOG_WARNING, "Unable to create call\n");
 		return -1;
 	}
-	ast_pthread_mutex_lock(&iaxsl[callno]);
+	ast_mutex_lock(&iaxsl[callno]);
 	strncpy(iaxs[callno]->dproot, data, sizeof(iaxs[callno]->dproot)-1);
 	iaxs[callno]->capability = IAX_CAPABILITY_FULLBANDWIDTH;
 
@@ -5286,7 +5286,7 @@ static int cache_get_callno(char *data)
 #endif		
 	/* Start the call going */
 	send_command(iaxs[callno], AST_FRAME_IAX, IAX_COMMAND_NEW, 0, ied.buf, ied.pos, -1);
-	ast_pthread_mutex_unlock(&iaxsl[callno]);
+	ast_mutex_unlock(&iaxsl[callno]);
 	return callno;
 }
 
@@ -5380,7 +5380,7 @@ static struct iax2_dpcache *find_cache(struct ast_channel *chan, char *data, cha
 		/* Okay, now we wait */
 		timeout = iaxdefaulttimeout * 1000;
 		/* Temporarily unlock */
-		ast_pthread_mutex_unlock(&dpcache_lock);
+		ast_mutex_unlock(&dpcache_lock);
 		/* Defer any dtmf */
 		if (chan)
 			old = ast_channel_defer_dtmf(chan);
@@ -5404,7 +5404,7 @@ static struct iax2_dpcache *find_cache(struct ast_channel *chan, char *data, cha
 		if (!timeout) {
 			ast_log(LOG_WARNING, "Timeout waiting for %s exten %s\n", data, exten);
 		}
-		ast_pthread_mutex_lock(&dpcache_lock);
+		ast_mutex_lock(&dpcache_lock);
 		dp->waiters[x] = -1;
 		close(com[1]);
 		close(com[0]);
@@ -5446,13 +5446,13 @@ static int iax2_exists(struct ast_channel *chan, char *context, char *exten, int
 #endif
 	if (priority != 1)
 		return 0;
-	ast_pthread_mutex_lock(&dpcache_lock);
+	ast_mutex_lock(&dpcache_lock);
 	dp = find_cache(chan, data, context, exten, priority);
 	if (dp) {
 		if (dp->flags & CACHE_FLAG_EXISTS)
 			res= 1;
 	}
-	ast_pthread_mutex_unlock(&dpcache_lock);
+	ast_mutex_unlock(&dpcache_lock);
 	if (!dp) {
 		ast_log(LOG_WARNING, "Unable to make DP cache\n");
 	}
@@ -5468,13 +5468,13 @@ static int iax2_canmatch(struct ast_channel *chan, char *context, char *exten, i
 #endif
 	if (priority != 1)
 		return 0;
-	ast_pthread_mutex_lock(&dpcache_lock);
+	ast_mutex_lock(&dpcache_lock);
 	dp = find_cache(chan, data, context, exten, priority);
 	if (dp) {
 		if (dp->flags & CACHE_FLAG_CANEXIST)
 			res= 1;
 	}
-	ast_pthread_mutex_unlock(&dpcache_lock);
+	ast_mutex_unlock(&dpcache_lock);
 	if (!dp) {
 		ast_log(LOG_WARNING, "Unable to make DP cache\n");
 	}
@@ -5490,13 +5490,13 @@ static int iax2_matchmore(struct ast_channel *chan, char *context, char *exten,
 #endif
 	if (priority != 1)
 		return 0;
-	ast_pthread_mutex_lock(&dpcache_lock);
+	ast_mutex_lock(&dpcache_lock);
 	dp = find_cache(chan, data, context, exten, priority);
 	if (dp) {
 		if (dp->flags & CACHE_FLAG_MATCHMORE)
 			res= 1;
 	}
-	ast_pthread_mutex_unlock(&dpcache_lock);
+	ast_mutex_unlock(&dpcache_lock);
 	if (!dp) {
 		ast_log(LOG_WARNING, "Unable to make DP cache\n");
 	}
@@ -5515,7 +5515,7 @@ static int iax2_exec(struct ast_channel *chan, char *context, char *exten, int p
 #endif
 	if (priority != 1)
 		return -1;
-	ast_pthread_mutex_lock(&dpcache_lock);
+	ast_mutex_lock(&dpcache_lock);
 	dp = find_cache(chan, data, context, exten, priority);
 	if (dp) {
 		if (dp->flags & CACHE_FLAG_EXISTS) {
@@ -5531,12 +5531,12 @@ static int iax2_exec(struct ast_channel *chan, char *context, char *exten, int p
 			if (option_verbose > 2)
 				ast_verbose(VERBOSE_PREFIX_3 "Executing Dial('%s')\n", req);
 		} else {
-			ast_pthread_mutex_unlock(&dpcache_lock);
+			ast_mutex_unlock(&dpcache_lock);
 			ast_log(LOG_WARNING, "Can't execute non-existant extension '%s[@%s]' in data '%s'\n", exten, context, data);
 			return -1;
 		}
 	}
-	ast_pthread_mutex_unlock(&dpcache_lock);
+	ast_mutex_unlock(&dpcache_lock);
 	dial = pbx_findapp("Dial");
 	if (dial) {
 		pbx_exec(chan, dial, req, newstack);
@@ -5587,7 +5587,7 @@ int load_module(void)
 #endif		
 
 	for (x=0;x<IAX_MAX_CALLS;x++)
-		ast_pthread_mutex_init(&iaxsl[x]);
+		ast_mutex_init(&iaxsl[x]);
 	
 	io = io_context_create();
 	sched = sched_context_create();
@@ -5597,9 +5597,9 @@ int load_module(void)
 		return -1;
 	}
 
-	ast_pthread_mutex_init(&iaxq.lock);
-	ast_pthread_mutex_init(&userl.lock);
-	ast_pthread_mutex_init(&peerl.lock);
+	ast_mutex_init(&iaxq.lock);
+	ast_mutex_init(&userl.lock);
+	ast_mutex_init(&peerl.lock);
 
 	ast_cli_register(&cli_show_users);
 	ast_cli_register(&cli_show_channels);
@@ -5653,10 +5653,10 @@ int load_module(void)
 	}
 	for (reg = registrations; reg; reg = reg->next)
 		iax2_do_register(reg);
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	for (peer = peerl.peers; peer; peer = peer->next)
 		iax2_poke_peer(peer);
-	ast_pthread_mutex_unlock(&peerl.lock);
+	ast_mutex_unlock(&peerl.lock);
 	return res;
 }
 
@@ -5690,9 +5690,9 @@ int unload_module()
 int usecount()
 {
 	int res;
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	res = usecnt;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	return res;
 }
 
diff --git a/channels/chan_local.c b/channels/chan_local.c
index 662cf7c0cf41359edf0f8f0172f7c6ae02132bf4..7889d0fa303318768e7bdfe3d530babe2a16100f 100755
--- a/channels/chan_local.c
+++ b/channels/chan_local.c
@@ -49,15 +49,15 @@ static char *tdesc = "Local Proxy Channel Driver";
 static int capability = -1;
 
 static int usecnt =0;
-static pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
 
 #define IS_OUTBOUND(a,b) (a == b->chan ? 1 : 0)
 
 /* Protect the interface list (of sip_pvt's) */
-static pthread_mutex_t locallock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t locallock = AST_MUTEX_INITIALIZER;
 
 static struct local_pvt {
-	pthread_mutex_t lock;				/* Channel private lock */
+	ast_mutex_t lock;				/* Channel private lock */
 	char context[AST_MAX_EXTENSION];	/* Context to call */
 	char exten[AST_MAX_EXTENSION];		/* Extension to call */
 	int reqformat;						/* Requested format */
@@ -84,25 +84,25 @@ retrylock:
 	if (p->cancelqueue) {
 		/* We had a glare on the hangup.  Forget all this business,
 		return and destroy p.  */
-		ast_pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		free(p);
 		return -1;
 	}
-	if (pthread_mutex_trylock(&other->lock)) {
+	if (ast_mutex_trylock(&other->lock)) {
 		/* Failed to lock.  Release main lock and try again */
-		ast_pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		if (us)
-			ast_pthread_mutex_unlock(&us->lock);
+			ast_mutex_unlock(&us->lock);
 		/* Wait just a bit */
 		usleep(1);
 		/* Only we can destroy ourselves, so we can't disappear here */
 		if (us)
-			ast_pthread_mutex_lock(&us->lock);
-		ast_pthread_mutex_lock(&p->lock);
+			ast_mutex_lock(&us->lock);
+		ast_mutex_lock(&p->lock);
 		goto retrylock;
 	}
 	ast_queue_frame(other, f, 0);
-	ast_pthread_mutex_unlock(&other->lock);
+	ast_mutex_unlock(&other->lock);
 	p->glaredetect = 0;
 	return 0;
 }
@@ -112,14 +112,14 @@ static int local_answer(struct ast_channel *ast)
 	struct local_pvt *p = ast->pvt->pvt;
 	int isoutbound = IS_OUTBOUND(ast, p);
 	int res = -1;
-	ast_pthread_mutex_lock(&p->lock);
+	ast_mutex_lock(&p->lock);
 	if (isoutbound) {
 		/* Pass along answer since somebody answered us */
 		struct ast_frame answer = { AST_FRAME_CONTROL, AST_CONTROL_ANSWER };
 		res = local_queue_frame(p, isoutbound, &answer, ast);
 	} else
 		ast_log(LOG_WARNING, "Huh?  Local is being asked to answer?\n");
-	ast_pthread_mutex_unlock(&p->lock);
+	ast_mutex_unlock(&p->lock);
 	return res;
 }
 
@@ -130,19 +130,19 @@ static void check_bridge(struct local_pvt *p, int isoutbound)
 	if (isoutbound && p->chan && p->chan->bridge && p->owner) {
 		/* Masquerade bridged channel into owner */
 		/* Lock other side first */
-		ast_pthread_mutex_lock(&p->chan->bridge->lock);
-		ast_pthread_mutex_lock(&p->owner->lock);
+		ast_mutex_lock(&p->chan->bridge->lock);
+		ast_mutex_lock(&p->owner->lock);
 		ast_channel_masquerade(p->owner, p->chan->bridge);
-		ast_pthread_mutex_unlock(&p->owner->lock);
-		ast_pthread_mutex_unlock(&p->chan->bridge->lock);
+		ast_mutex_unlock(&p->owner->lock);
+		ast_mutex_unlock(&p->chan->bridge->lock);
 		p->alreadymasqed = 1;
 	} else if (!isoutbound && p->owner && p->owner->bridge && p->chan) {
 		/* Masquerade bridged channel into chan */
-		ast_pthread_mutex_lock(&p->owner->bridge->lock);
-		ast_pthread_mutex_lock(&p->chan->lock);
+		ast_mutex_lock(&p->owner->bridge->lock);
+		ast_mutex_lock(&p->chan->lock);
 		ast_channel_masquerade(p->chan, p->owner->bridge);
-		ast_pthread_mutex_unlock(&p->chan->lock);
-		ast_pthread_mutex_unlock(&p->owner->bridge->lock);
+		ast_mutex_unlock(&p->chan->lock);
+		ast_mutex_unlock(&p->owner->bridge->lock);
 		p->alreadymasqed = 1;
 	}
 }
@@ -161,27 +161,27 @@ static int local_write(struct ast_channel *ast, struct ast_frame *f)
 
 
 	/* Just queue for delivery to the other side */
-	ast_pthread_mutex_lock(&p->lock);
+	ast_mutex_lock(&p->lock);
 	res = local_queue_frame(p, isoutbound, f, ast);
 	check_bridge(p, isoutbound);
-	ast_pthread_mutex_unlock(&p->lock);
+	ast_mutex_unlock(&p->lock);
 	return res;
 }
 
 static int local_fixup(struct ast_channel *oldchan, struct ast_channel *newchan)
 {
 	struct local_pvt *p = newchan->pvt->pvt;
-	ast_pthread_mutex_lock(&p->lock);
+	ast_mutex_lock(&p->lock);
 	if ((p->owner != oldchan) && (p->chan != oldchan)) {
 		ast_log(LOG_WARNING, "old channel wasn't %p but was %p/%p\n", oldchan, p->owner, p->chan);
-		ast_pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return -1;
 	}
 	if (p->owner == oldchan)
 		p->owner = newchan;
 	else
 		p->chan = newchan;	
-	ast_pthread_mutex_unlock(&p->lock);
+	ast_mutex_unlock(&p->lock);
 	return 0;
 }
 
@@ -192,10 +192,10 @@ static int local_indicate(struct ast_channel *ast, int condition)
 	struct ast_frame f = { AST_FRAME_CONTROL, };
 	int isoutbound = IS_OUTBOUND(ast, p);
 	/* Queue up a frame representing the indication as a control frame */
-	ast_pthread_mutex_lock(&p->lock);
+	ast_mutex_lock(&p->lock);
 	f.subclass = condition;
 	res = local_queue_frame(p, isoutbound, &f, ast);
-	ast_pthread_mutex_unlock(&p->lock);
+	ast_mutex_unlock(&p->lock);
 	return res;
 }
 
@@ -205,10 +205,10 @@ static int local_digit(struct ast_channel *ast, char digit)
 	int res = -1;
 	struct ast_frame f = { AST_FRAME_DTMF, };
 	int isoutbound = IS_OUTBOUND(ast, p);
-	ast_pthread_mutex_lock(&p->lock);
+	ast_mutex_lock(&p->lock);
 	f.subclass = digit;
 	res = local_queue_frame(p, isoutbound, &f, ast);
-	ast_pthread_mutex_unlock(&p->lock);
+	ast_mutex_unlock(&p->lock);
 	return res;
 }
 
@@ -231,7 +231,7 @@ static int local_call(struct ast_channel *ast, char *dest, int timeout)
 static void local_destroy(struct local_pvt *p)
 {
 	struct local_pvt *cur, *prev = NULL;
-	ast_pthread_mutex_lock(&locallock);
+	ast_mutex_lock(&locallock);
 	cur = locals;
 	while(cur) {
 		if (cur == p) {
@@ -245,7 +245,7 @@ static void local_destroy(struct local_pvt *p)
 		prev = cur;
 		cur = cur->next;
 	}
-	ast_pthread_mutex_unlock(&locallock);
+	ast_mutex_unlock(&locallock);
 	if (!cur)
 		ast_log(LOG_WARNING, "Unable ot find local '%s@%s' in local list\n", p->exten, p->context);
 }
@@ -258,7 +258,7 @@ static int local_hangup(struct ast_channel *ast)
 	struct local_pvt *cur, *prev=NULL;
 	struct ast_channel *ochan = NULL;
 	int glaredetect;
-	ast_pthread_mutex_lock(&p->lock);
+	ast_mutex_lock(&p->lock);
 	if (isoutbound)
 		p->chan = NULL;
 	else
@@ -272,9 +272,9 @@ static int local_hangup(struct ast_channel *ast)
 		   let local_queue do it. */
 		if (p->glaredetect)
 			p->cancelqueue = 1;
-		ast_pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		/* Remove from list */
-		ast_pthread_mutex_lock(&locallock);
+		ast_mutex_lock(&locallock);
 		cur = locals;
 		while(cur) {
 			if (cur == p) {
@@ -287,7 +287,7 @@ static int local_hangup(struct ast_channel *ast)
 			prev = cur;
 			cur = cur->next;
 		}
-		ast_pthread_mutex_unlock(&locallock);
+		ast_mutex_unlock(&locallock);
 		/* And destroy */
 		if (!glaredetect)
 			free(p);
@@ -298,7 +298,7 @@ static int local_hangup(struct ast_channel *ast)
 		ochan = p->chan;
 	else
 		local_queue_frame(p, isoutbound, &f, NULL);
-	ast_pthread_mutex_unlock(&p->lock);
+	ast_mutex_unlock(&p->lock);
 	if (ochan)
 		ast_hangup(ochan);
 	return 0;
@@ -311,7 +311,7 @@ static struct local_pvt *local_alloc(char *data, int format)
 	tmp = malloc(sizeof(struct local_pvt));
 	if (tmp) {
 		memset(tmp, 0, sizeof(struct local_pvt));
-		ast_pthread_mutex_init(&tmp->lock);
+		ast_mutex_init(&tmp->lock);
 		strncpy(tmp->exten, data, sizeof(tmp->exten) - 1);
 		c = strchr(tmp->exten, '@');
 		if (c) {
@@ -327,10 +327,10 @@ static struct local_pvt *local_alloc(char *data, int format)
 			tmp = NULL;
 		} else {
 			/* Add to list */
-			ast_pthread_mutex_lock(&locallock);
+			ast_mutex_lock(&locallock);
 			tmp->next = locals;
 			locals = tmp;
-			ast_pthread_mutex_unlock(&locallock);
+			ast_mutex_unlock(&locallock);
 		}
 		
 	}
@@ -389,9 +389,9 @@ static struct ast_channel *local_new(struct local_pvt *p, int state)
 		tmp2->pvt->fixup = local_fixup;
 		p->owner = tmp;
 		p->chan = tmp2;
-		ast_pthread_mutex_lock(&usecnt_lock);
+		ast_mutex_lock(&usecnt_lock);
 		usecnt++;
-		ast_pthread_mutex_unlock(&usecnt_lock);
+		ast_mutex_unlock(&usecnt_lock);
 		ast_update_use_count();
 		strncpy(tmp->context, p->context, sizeof(tmp->context)-1);
 		strncpy(tmp2->context, p->context, sizeof(tmp2->context)-1);
@@ -420,17 +420,17 @@ static int locals_show(int fd, int argc, char **argv)
 
 	if (argc != 2)
 		return RESULT_SHOWUSAGE;
-	ast_pthread_mutex_lock(&locallock);
+	ast_mutex_lock(&locallock);
 	p = locals;
 	while(p) {
-		ast_pthread_mutex_lock(&p->lock);
+		ast_mutex_lock(&p->lock);
 		ast_cli(fd, "%s -- %s@%s\n", p->owner ? p->owner->name : "<unowned>", p->exten, p->context);
-		ast_pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		p = p->next;
 	}
 	if (!locals)
 		ast_cli(fd, "No local channels in use\n");
-	ast_pthread_mutex_unlock(&locallock);
+	ast_mutex_unlock(&locallock);
 	return RESULT_SUCCESS;
 }
 
@@ -464,7 +464,7 @@ int unload_module()
 	/* First, take us out of the channel loop */
 	ast_cli_unregister(&cli_show_locals);
 	ast_channel_unregister(type);
-	if (!ast_pthread_mutex_lock(&locallock)) {
+	if (!ast_mutex_lock(&locallock)) {
 		/* Hangup all interfaces if they have an owner */
 		p = locals;
 		while(p) {
@@ -473,7 +473,7 @@ int unload_module()
 			p = p->next;
 		}
 		locals = NULL;
-		ast_pthread_mutex_unlock(&locallock);
+		ast_mutex_unlock(&locallock);
 	} else {
 		ast_log(LOG_WARNING, "Unable to lock the monitor\n");
 		return -1;
@@ -484,9 +484,9 @@ int unload_module()
 int usecount()
 {
 	int res;
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	res = usecnt;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	return res;
 }
 
diff --git a/channels/chan_mgcp.c b/channels/chan_mgcp.c
index 691483ea8dce58a81d9afd66b7e38dfc70e1a047..19045e85b761231dac01b8e674256b10dc9466e1 100755
--- a/channels/chan_mgcp.c
+++ b/channels/chan_mgcp.c
@@ -142,7 +142,7 @@ static int adsi = 0;
 
 
 static int usecnt =0;
-static pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
 static int oseq;
 
 /* Wait up to 16 seconds for first digit (FXO logic) */
@@ -156,9 +156,9 @@ static int matchdigittimeout = 3000;
 
 /* Protect the monitoring thread, so only one process can kill or start it, and not
    when it's doing something critical. */
-static pthread_mutex_t netlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t netlock = AST_MUTEX_INITIALIZER;
 
-static pthread_mutex_t monlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t monlock = AST_MUTEX_INITIALIZER;
 
 /* This is the thread for the monitor which checks for input on the channels
    which are not currently in use.  */
@@ -219,7 +219,7 @@ struct mgcp_message {
 #define SUB_ALT  1
 
 struct mgcp_subchannel {
-	pthread_mutex_t lock;
+	ast_mutex_t lock;
     int id;
     struct ast_channel *owner;
     struct mgcp_endpoint *parent;
@@ -247,7 +247,7 @@ struct mgcp_subchannel {
 #define TYPE_LINE		2
 
 struct mgcp_endpoint {
-	pthread_mutex_t lock;
+	ast_mutex_t lock;
 	char name[80];
     struct mgcp_subchannel *sub;        /* pointer to our current connection, channel and stuff */
 	char accountcode[80];
@@ -307,7 +307,7 @@ static struct mgcp_gateway {
 	struct mgcp_gateway *next;
 } *gateways;
 
-static pthread_mutex_t gatelock  = AST_MUTEX_INITIALIZER;
+static ast_mutex_t gatelock  = AST_MUTEX_INITIALIZER;
 
 static int mgcpsock  = -1;
 
@@ -526,7 +526,7 @@ static int mgcp_hangup(struct ast_channel *ast)
 	if ((p->dtmfinband) && (p->dsp != NULL)){
 	    ast_dsp_free(p->dsp);
 	}
-	ast_pthread_mutex_lock(&sub->lock);
+	ast_mutex_lock(&sub->lock);
 
 	sub->owner = NULL;
 	if (strlen(sub->cxident)) {
@@ -581,7 +581,7 @@ static int mgcp_hangup(struct ast_channel *ast)
             transmit_notify_request(sub, "vmwi(-)");
         }
     }
-	ast_pthread_mutex_unlock(&sub->lock);
+	ast_mutex_unlock(&sub->lock);
 	return 0;
 }
 
@@ -592,7 +592,7 @@ static int mgcp_show_endpoints(int fd, int argc, char *argv[])
 	int hasendpoints = 0;
 	if (argc != 3) 
 		return RESULT_SHOWUSAGE;
-	ast_pthread_mutex_lock(&gatelock);
+	ast_mutex_lock(&gatelock);
 	g = gateways;
 	while(g) {
 		e = g->endpoints;
@@ -607,7 +607,7 @@ static int mgcp_show_endpoints(int fd, int argc, char *argv[])
 		}
 		g = g->next;
 	}
-	ast_pthread_mutex_unlock(&gatelock);
+	ast_mutex_unlock(&gatelock);
 	return RESULT_SUCCESS;
 }
 
@@ -644,7 +644,7 @@ static int mgcp_audit_endpoint(int fd, int argc, char *argv[])
 		gname++;
 	if ((c = strrchr(gname, ']')))
 		*c = '\0';
-	ast_pthread_mutex_lock(&gatelock);
+	ast_mutex_lock(&gatelock);
 	g = gateways;
 	while(g) {
         if (!strcasecmp(g->name, gname)) {
@@ -666,7 +666,7 @@ static int mgcp_audit_endpoint(int fd, int argc, char *argv[])
     if (!found) {
         ast_cli(fd, "   << Could not find endpoint >>     ");
     }
-	ast_pthread_mutex_unlock(&gatelock);
+	ast_mutex_unlock(&gatelock);
 	return RESULT_SUCCESS;
 }
 
@@ -731,9 +731,9 @@ static struct ast_frame  *mgcp_read(struct ast_channel *ast)
 {
 	struct ast_frame *fr;
 	struct mgcp_subchannel *sub = ast->pvt->pvt;
-	ast_pthread_mutex_lock(&sub->lock);
+	ast_mutex_lock(&sub->lock);
 	fr = mgcp_rtp_read(sub);
-	ast_pthread_mutex_unlock(&sub->lock);
+	ast_mutex_unlock(&sub->lock);
 	return fr;
 }
 
@@ -756,11 +756,11 @@ static int mgcp_write(struct ast_channel *ast, struct ast_frame *frame)
 		}
 	}
 	if (sub) {
-		ast_pthread_mutex_lock(&sub->lock);
+		ast_mutex_lock(&sub->lock);
 		if (sub->rtp) {
 			res =  ast_rtp_write(sub->rtp, frame);
 		}
-		ast_pthread_mutex_unlock(&sub->lock);
+		ast_mutex_unlock(&sub->lock);
 	}
 	return res;
 }
@@ -892,9 +892,9 @@ static struct ast_channel *mgcp_new(struct mgcp_subchannel *sub, int state)
 		if (i->amaflags)
 			tmp->amaflags = i->amaflags;
 		sub->owner = tmp;
-		ast_pthread_mutex_lock(&usecnt_lock);
+		ast_mutex_lock(&usecnt_lock);
 		usecnt++;
-		ast_pthread_mutex_unlock(&usecnt_lock);
+		ast_mutex_unlock(&usecnt_lock);
 		ast_update_use_count();
 		tmp->callgroup = i->callgroup;
 		tmp->pickupgroup = i->pickupgroup;
@@ -987,13 +987,13 @@ static int rtpready(struct ast_rtp *rtp, struct ast_frame *f, void *data)
 {
 	/* Just deliver the audio directly */
 	struct mgcp_endpoint *p = data;
-	ast_pthread_mutex_lock(&p->lock);
+	ast_mutex_lock(&p->lock);
 	if (p->owner) {
 		/* Generally, you lock in the order channel lock, followed by private
 		   lock.  Since here we are doing the reverse, there is the possibility
 		   of deadlock.  As a result, in the case of a deadlock, we simply fail out
 		   here. */
-		if (!pthread_mutex_trylock(&p->owner->lock)) {
+		if (!ast_mutex_trylock(&p->owner->lock)) {
 			if (f->frametype == AST_FRAME_VOICE) {
 				if (f->subclass != p->owner->nativeformats) {
 					ast_log(LOG_DEBUG, "Oooh, format changed to %d\n", f->subclass);
@@ -1006,10 +1006,10 @@ static int rtpready(struct ast_rtp *rtp, struct ast_frame *f, void *data)
 				}
 			}
 			ast_queue_frame(p->owner, f, 0);
-			pthread_mutex_unlock(&p->owner->lock);
+			ast_mutex_unlock(&p->owner->lock);
 		}
 	}
-	ast_pthread_mutex_unlock(&p->lock);
+	ast_mutex_unlock(&p->lock);
 	return 0;
 }
 #endif
@@ -1032,7 +1032,7 @@ static struct mgcp_subchannel *find_subchannel(char *name, int msgid, struct soc
 		*at = '\0';
 		at++;
 	}
-	ast_pthread_mutex_lock(&gatelock);
+	ast_mutex_lock(&gatelock);
 	if (at && (at[0] == '[')) {
 		at++;
 		c = strrchr(at, ']');
@@ -1086,7 +1086,7 @@ static struct mgcp_subchannel *find_subchannel(char *name, int msgid, struct soc
 		}
 		g = g->next;
 	}
-	ast_pthread_mutex_unlock(&gatelock);
+	ast_mutex_unlock(&gatelock);
 	if (!sub) {
 		if (name) {
 			if (g)
@@ -1724,7 +1724,7 @@ static void handle_response(struct mgcp_subchannel *sub, int result, int ident)
 
 static void start_rtp(struct mgcp_subchannel *sub)
 {
-		ast_pthread_mutex_lock(&sub->lock);
+		ast_mutex_lock(&sub->lock);
 		/* Allocate the RTP now */
 		sub->rtp = ast_rtp_new(sched, io, 1, 0);
 		if (sub->rtp && sub->owner)
@@ -1739,7 +1739,7 @@ static void start_rtp(struct mgcp_subchannel *sub)
         snprintf(sub->callid, sizeof(sub->callid), "%08x%s", rand(), sub->txident);
 		/* Transmit the connection create */
 		transmit_connect_with_sdp(sub, NULL);
-		ast_pthread_mutex_unlock(&sub->lock);
+		ast_mutex_unlock(&sub->lock);
 }
 
 static void *mgcp_ss(void *data)
@@ -2479,9 +2479,9 @@ static void *do_monitor(void *data)
 		/* Check for interfaces needing to be killed */
 		/* Don't let anybody kill us right away.  Nobody should lock the interface list
 		   and wait for the monitor list, but the other way around is okay. */
-		ast_pthread_mutex_lock(&monlock);
+		ast_mutex_lock(&monlock);
 		/* Lock the network interface */
-		ast_pthread_mutex_lock(&netlock);
+		ast_mutex_lock(&netlock);
 		p = packets;
 		while(p) {
 			/* Handle any retransmissions */
@@ -2519,17 +2519,17 @@ static void *do_monitor(void *data)
 #endif
         
 		/* Okay, now that we know what to do, release the network lock */
-		ast_pthread_mutex_unlock(&netlock);
+		ast_mutex_unlock(&netlock);
 		/* And from now on, we're okay to be killed, so release the monitor lock as well */
-		ast_pthread_mutex_unlock(&monlock);
+		ast_mutex_unlock(&monlock);
 		pthread_testcancel();
 		/* Wait for sched or io */
 		res = ast_sched_wait(sched);
 		res = ast_io_wait(io, res);
-		ast_pthread_mutex_lock(&monlock);
+		ast_mutex_lock(&monlock);
 		if (res >= 0) 
 			ast_sched_runq(sched);
-		ast_pthread_mutex_unlock(&monlock);
+		ast_mutex_unlock(&monlock);
 	}
 	/* Never reached */
 	return NULL;
@@ -2541,12 +2541,12 @@ static int restart_monitor(void)
 	/* If we're supposed to be stopped -- stay stopped */
 	if (monitor_thread == -2)
 		return 0;
-	if (ast_pthread_mutex_lock(&monlock)) {
+	if (ast_mutex_lock(&monlock)) {
 		ast_log(LOG_WARNING, "Unable to lock monitor\n");
 		return -1;
 	}
 	if (monitor_thread == pthread_self()) {
-		ast_pthread_mutex_unlock(&monlock);
+		ast_mutex_unlock(&monlock);
 		ast_log(LOG_WARNING, "Cannot kill myself\n");
 		return -1;
 	}
@@ -2556,12 +2556,12 @@ static int restart_monitor(void)
 	} else {
 		/* Start a new monitor */
 		if (pthread_create(&monitor_thread, NULL, do_monitor, NULL) < 0) {
-			ast_pthread_mutex_unlock(&monlock);
+			ast_mutex_unlock(&monlock);
 			ast_log(LOG_ERROR, "Unable to start monitor thread.\n");
 			return -1;
 		}
 	}
-	ast_pthread_mutex_unlock(&monlock);
+	ast_mutex_unlock(&monlock);
 	return 0;
 }
 
@@ -2932,10 +2932,10 @@ int load_module()
 				if (option_verbose > 2) {
 					ast_verbose(VERBOSE_PREFIX_3 "Added gateway '%s'\n", g->name);
                 }
-				ast_pthread_mutex_lock(&gatelock);
+				ast_mutex_lock(&gatelock);
 				g->next = gateways;
 				gateways = g;
-				ast_pthread_mutex_unlock(&gatelock);
+				ast_mutex_unlock(&gatelock);
 			}
 		}
 		cat = ast_category_browse(cfg, cat);
@@ -2954,7 +2954,7 @@ int load_module()
 	if (!ntohs(bindaddr.sin_port))
 		bindaddr.sin_port = ntohs(DEFAULT_MGCP_PORT);
 	bindaddr.sin_family = AF_INET;
-	pthread_mutex_lock(&netlock);
+	ast_mutex_lock(&netlock);
 	if (mgcpsock > -1)
 		close(mgcpsock);
 	mgcpsock = socket(AF_INET, SOCK_DGRAM, 0);
@@ -2977,7 +2977,7 @@ int load_module()
 				ast_log(LOG_WARNING, "Unable to set TOS to %d\n", tos);
         }
 	}
-	pthread_mutex_unlock(&netlock);
+	ast_mutex_unlock(&netlock);
 	ast_destroy(cfg);
 
 	/* Make sure we can register our mgcp channel type */
@@ -3015,7 +3015,7 @@ int unload_module()
 	struct mgcp_endpoint *p, *pl;
 	/* First, take us out of the channel loop */
 	ast_channel_unregister(type);
-	if (!ast_pthread_mutex_lock(&gatelock)) {
+	if (!ast_mutex_lock(&gatelock)) {
 		/* Hangup all interfaces if they have an owner */
 		p = iflist;
 		while(p) {
@@ -3024,25 +3024,25 @@ int unload_module()
 			p = p->next;
 		}
 		iflist = NULL;
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 	} else {
 		ast_log(LOG_WARNING, "Unable to lock the monitor\n");
 		return -1;
 	}
-	if (!ast_pthread_mutex_lock(&monlock)) {
+	if (!ast_mutex_lock(&monlock)) {
 		if (monitor_thread) {
 			pthread_cancel(monitor_thread);
 			pthread_kill(monitor_thread, SIGURG);
 			pthread_join(monitor_thread, NULL);
 		}
 		monitor_thread = -2;
-		ast_pthread_mutex_unlock(&monlock);
+		ast_mutex_unlock(&monlock);
 	} else {
 		ast_log(LOG_WARNING, "Unable to lock the monitor\n");
 		return -1;
 	}
 
-	if (!ast_pthread_mutex_lock(&iflock)) {
+	if (!ast_mutex_lock(&iflock)) {
 		/* Destroy all the interfaces and free their memory */
 		p = iflist;
 		while(p) {
@@ -3052,7 +3052,7 @@ int unload_module()
 			free(pl);
 		}
 		iflist = NULL;
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 	} else {
 		ast_log(LOG_WARNING, "Unable to lock the monitor\n");
 		return -1;
@@ -3064,9 +3064,9 @@ int unload_module()
 int usecount()
 {
 	int res;
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	res = usecnt;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	return res;
 }
 
diff --git a/channels/chan_modem.c b/channels/chan_modem.c
index 900eb0ad5820a21fbe0a9b8b84dc69ef094c498d..b62002679a5f94031033c4a8c66c3a8137b0b2ea 100755
--- a/channels/chan_modem.c
+++ b/channels/chan_modem.c
@@ -71,14 +71,14 @@ static int baudrate = 115200;
 
 static int stripmsd = 0;
 
-static pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
 
 /* Protect the interface list (of ast_modem_pvt's) */
-static pthread_mutex_t iflock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t iflock = AST_MUTEX_INITIALIZER;
 
 /* Protect the monitoring thread, so only one process can kill or start it, and not
    when it's doing something critical. */
-static pthread_mutex_t monlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t monlock = AST_MUTEX_INITIALIZER;
 
 /* This is the thread for the monitor which checks for input on the channels
    which are not currently in use.  */
@@ -421,11 +421,11 @@ static int modem_hangup(struct ast_channel *ast)
 	memset(p->cid, 0, sizeof(p->cid));
 	memset(p->dnid, 0, sizeof(p->dnid));
 	((struct ast_modem_pvt *)(ast->pvt->pvt))->owner = NULL;
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	usecnt--;
 	if (usecnt < 0) 
 		ast_log(LOG_WARNING, "Usecnt < 0???\n");
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	ast_update_use_count();
 	if (option_verbose > 2) 
 		ast_verbose( VERBOSE_PREFIX_3 "Hungup '%s'\n", ast->name);
@@ -525,9 +525,9 @@ struct ast_channel *ast_modem_new(struct ast_modem_pvt *i, int state)
 		if (strlen(i->dnid))
 			strncpy(tmp->exten, i->dnid, sizeof(tmp->exten) - 1);
 		i->owner = tmp;
-		ast_pthread_mutex_lock(&usecnt_lock);
+		ast_mutex_lock(&usecnt_lock);
 		usecnt++;
-		ast_pthread_mutex_unlock(&usecnt_lock);
+		ast_mutex_unlock(&usecnt_lock);
 		ast_update_use_count();
 		if (state != AST_STATE_DOWN) {
 			if (ast_pbx_start(tmp)) {
@@ -570,14 +570,14 @@ static void *do_monitor(void *data)
 	for(;;) {
 		/* Don't let anybody kill us right away.  Nobody should lock the interface list
 		   and wait for the monitor list, but the other way around is okay. */
-		if (ast_pthread_mutex_lock(&monlock)) {
+		if (ast_mutex_lock(&monlock)) {
 			ast_log(LOG_ERROR, "Unable to grab monitor lock\n");
 			return NULL;
 		}
 		/* Lock the interface list */
-		if (ast_pthread_mutex_lock(&iflock)) {
+		if (ast_mutex_lock(&iflock)) {
 			ast_log(LOG_ERROR, "Unable to grab interface lock\n");
-			ast_pthread_mutex_unlock(&monlock);
+			ast_mutex_unlock(&monlock);
 			return NULL;
 		}
 		/* Build the stuff we're going to select on, that is the socket of every
@@ -600,10 +600,10 @@ static void *do_monitor(void *data)
 			i = i->next;
 		}
 		/* Okay, now that we know what to do, release the interface lock */
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 		
 		/* And from now on, we're okay to be killed, so release the monitor lock as well */
-		ast_pthread_mutex_unlock(&monlock);
+		ast_mutex_unlock(&monlock);
 #if 0
 		ast_log(LOG_DEBUG, "In monitor, n=%d, pid=%d\n", n, getpid());
 #endif
@@ -618,7 +618,7 @@ static void *do_monitor(void *data)
 		}
 		/* Alright, lock the interface list again, and let's look and see what has
 		   happened */
-		if (ast_pthread_mutex_lock(&iflock)) {
+		if (ast_mutex_lock(&iflock)) {
 			ast_log(LOG_WARNING, "Unable to lock the interface list\n");
 			continue;
 		}
@@ -634,7 +634,7 @@ static void *do_monitor(void *data)
 			}
 			i=i->next;
 		}
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 	}
 	/* Never reached */
 	return NULL;
@@ -646,12 +646,12 @@ static int restart_monitor()
 	/* If we're supposed to be stopped -- stay stopped */
 	if (monitor_thread == -2)
 		return 0;
-	if (ast_pthread_mutex_lock(&monlock)) {
+	if (ast_mutex_lock(&monlock)) {
 		ast_log(LOG_WARNING, "Unable to lock monitor\n");
 		return -1;
 	}
 	if (monitor_thread == pthread_self()) {
-		ast_pthread_mutex_unlock(&monlock);
+		ast_mutex_unlock(&monlock);
 		ast_log(LOG_WARNING, "Cannot kill myself\n");
 		return -1;
 	}
@@ -663,11 +663,11 @@ static int restart_monitor()
 	}
 	/* Start a new monitor */
 	if (pthread_create(&monitor_thread, NULL, do_monitor, NULL) < 0) {
-		ast_pthread_mutex_unlock(&monlock);
+		ast_mutex_unlock(&monlock);
 		ast_log(LOG_ERROR, "Unable to start monitor thread.\n");
 		return -1;
 	}
-	ast_pthread_mutex_unlock(&monlock);
+	ast_mutex_unlock(&monlock);
 	return 0;
 }
 
@@ -762,7 +762,7 @@ static struct ast_channel *modem_request(char *type, int format, void *data)
 	}
 
 	/* Search for an unowned channel */
-	if (ast_pthread_mutex_lock(&iflock)) {
+	if (ast_mutex_lock(&iflock)) {
 		ast_log(LOG_ERROR, "Unable to lock interface list???\n");
 		return NULL;
 	}
@@ -799,7 +799,7 @@ static struct ast_channel *modem_request(char *type, int format, void *data)
 	if (!p) 
 		ast_log(LOG_WARNING, "Requested device '%s' does not exist\n", dev);
 	
-	ast_pthread_mutex_unlock(&iflock);
+	ast_mutex_unlock(&iflock);
 	return tmp;
 }
 
@@ -852,7 +852,7 @@ int load_module()
 		ast_log(LOG_ERROR, "Unable to load config %s\n", config);
 		return -1;
 	}
-	if (ast_pthread_mutex_lock(&iflock)) {
+	if (ast_mutex_lock(&iflock)) {
 		/* It's a little silly to lock it, but we mind as well just to be sure */
 		ast_log(LOG_ERROR, "Unable to lock interface list???\n");
 		return -1;
@@ -869,7 +869,7 @@ int load_module()
 				} else {
 					ast_log(LOG_ERROR, "Unable to register channel '%s'\n", v->value);
 					ast_destroy(cfg);
-					ast_pthread_mutex_unlock(&iflock);
+					ast_mutex_unlock(&iflock);
 					unload_module();
 					return -1;
 				}
@@ -881,7 +881,7 @@ int load_module()
 			if (ast_load_resource(driver)) {
 				ast_log(LOG_ERROR, "Failed to load driver %s\n", driver);
 				ast_destroy(cfg);
-				ast_pthread_mutex_unlock(&iflock);
+				ast_mutex_unlock(&iflock);
 				unload_module();
 				return -1;
 			}
@@ -915,7 +915,7 @@ int load_module()
 		}
 		v = v->next;
 	}
-	ast_pthread_mutex_unlock(&iflock);
+	ast_mutex_unlock(&iflock);
 	if (ast_channel_register(type, tdesc, /* XXX Don't know our types -- maybe we should register more than one XXX */ 
 						AST_FORMAT_SLINEAR, modem_request)) {
 		ast_log(LOG_ERROR, "Unable to register channel class %s\n", type);
@@ -934,7 +934,7 @@ int unload_module()
 	struct ast_modem_pvt *p, *pl;
 	/* First, take us out of the channel loop */
 	ast_channel_unregister(type);
-	if (!ast_pthread_mutex_lock(&iflock)) {
+	if (!ast_mutex_lock(&iflock)) {
 		/* Hangup all interfaces if they have an owner */
 		p = iflist;
 		while(p) {
@@ -943,24 +943,24 @@ int unload_module()
 			p = p->next;
 		}
 		iflist = NULL;
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 	} else {
 		ast_log(LOG_WARNING, "Unable to lock the monitor\n");
 		return -1;
 	}
-	if (!ast_pthread_mutex_lock(&monlock)) {
+	if (!ast_mutex_lock(&monlock)) {
 		if (monitor_thread > -1) {
 			pthread_cancel(monitor_thread);
 			pthread_join(monitor_thread, NULL);
 		}
 		monitor_thread = -2;
-		ast_pthread_mutex_unlock(&monlock);
+		ast_mutex_unlock(&monlock);
 	} else {
 		ast_log(LOG_WARNING, "Unable to lock the monitor\n");
 		return -1;
 	}
 
-	if (!ast_pthread_mutex_lock(&iflock)) {
+	if (!ast_mutex_lock(&iflock)) {
 		/* Destroy all the interfaces and free their memory */
 		p = iflist;
 		while(p) {
@@ -973,7 +973,7 @@ int unload_module()
 			free(pl);
 		}
 		iflist = NULL;
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 	} else {
 		ast_log(LOG_WARNING, "Unable to lock the monitor\n");
 		return -1;
@@ -985,9 +985,9 @@ int unload_module()
 int usecount(void)
 {
 	int res;
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	res = usecnt;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	return res;
 }
 
diff --git a/channels/chan_modem_aopen.c b/channels/chan_modem_aopen.c
index 3aa1978afc278b6f674cb549805f495d218a4420..4222e85cdd9ea068aa560debdbe0065459956864 100755
--- a/channels/chan_modem_aopen.c
+++ b/channels/chan_modem_aopen.c
@@ -34,7 +34,7 @@ static char *breakcmd = "\0x10\0x03";
 static char *desc = "A/Open (Rockwell Chipset) ITU-2 VoiceModem Driver";
 
 static int usecnt;
-static pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
 
 static char *aopen_idents[] = {
 	/* Identify A/Open Modem */
@@ -363,17 +363,17 @@ static char *aopen_identify(struct ast_modem_pvt *p)
 
 static void aopen_incusecnt(void)
 {
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	usecnt++;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	ast_update_use_count();
 }
 
 static void aopen_decusecnt(void)
 {
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	usecnt++;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	ast_update_use_count();
 }
 
@@ -457,9 +457,9 @@ static struct ast_modem_driver aopen_driver =
 int usecount(void)
 {
 	int res;
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	res = usecnt;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	return res;
 }
 
diff --git a/channels/chan_modem_bestdata.c b/channels/chan_modem_bestdata.c
index 90cc87828cf0471cf2f7b2b01234a206be1fbeaf..10732dca75f72acff8e3526798f810bc591f847f 100755
--- a/channels/chan_modem_bestdata.c
+++ b/channels/chan_modem_bestdata.c
@@ -39,7 +39,7 @@ static char *breakcmd = "\020!";
 static char *desc = "BestData (Conexant V.90 Chipset) VoiceModem Driver";
 
 static int usecnt;
-static pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
 
 static char *bestdata_idents[] = {
 	/* Identify BestData Modem */
@@ -439,17 +439,17 @@ static char *bestdata_identify(struct ast_modem_pvt *p)
 
 static void bestdata_incusecnt(void)
 {
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	usecnt++;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	ast_update_use_count();
 }
 
 static void bestdata_decusecnt(void)
 {
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	usecnt++;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	ast_update_use_count();
 }
 
@@ -570,9 +570,9 @@ static struct ast_modem_driver bestdata_driver =
 int usecount(void)
 {
 	int res;
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	res = usecnt;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	return res;
 }
 
diff --git a/channels/chan_modem_i4l.c b/channels/chan_modem_i4l.c
index 857188277262c5fa4b68c233a417c11e157d5e66..c011a9fc8cad1ace67fca5e8409fe800590d43ab 100755
--- a/channels/chan_modem_i4l.c
+++ b/channels/chan_modem_i4l.c
@@ -34,7 +34,7 @@ static char *breakcmd = "\0x10\0x14\0x10\0x3";
 static char *desc = "ISDN4Linux Emulated Modem Driver";
 
 static int usecnt;
-static pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
 
 static char *i4l_idents[] = {
 	/* Identify ISDN4Linux Driver */
@@ -476,17 +476,17 @@ static char *i4l_identify(struct ast_modem_pvt *p)
 
 static void i4l_incusecnt(void)
 {
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	usecnt++;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	ast_update_use_count();
 }
 
 static void i4l_decusecnt(void)
 {
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	usecnt++;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	ast_update_use_count();
 }
 
@@ -597,9 +597,9 @@ static struct ast_modem_driver i4l_driver =
 int usecount(void)
 {
 	int res;
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	res = usecnt;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	return res;
 }
 
diff --git a/channels/chan_nbs.c b/channels/chan_nbs.c
index f366f976e262e468f13a72a37256cb8c7d68fe27..0cf50f56ccf7e1015bafa6266a32afbdb844902b 100755
--- a/channels/chan_nbs.c
+++ b/channels/chan_nbs.c
@@ -41,7 +41,7 @@ static int usecnt =0;
 /* Only linear is allowed */
 static int prefformat = AST_FORMAT_SLINEAR;
 
-static pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
 
 static char context[AST_MAX_EXTENSION] = "default";
 
@@ -215,9 +215,9 @@ static struct ast_channel *nbs_new(struct nbs_pvt *i, int state)
 		strncpy(tmp->exten, "s",  sizeof(tmp->exten) - 1);
 		strcpy(tmp->language, "");
 		i->owner = tmp;
-		ast_pthread_mutex_lock(&usecnt_lock);
+		ast_mutex_lock(&usecnt_lock);
 		usecnt++;
-		ast_pthread_mutex_unlock(&usecnt_lock);
+		ast_mutex_unlock(&usecnt_lock);
 		ast_update_use_count();
 		if (state != AST_STATE_DOWN) {
 			if (ast_pbx_start(tmp)) {
@@ -276,9 +276,9 @@ int unload_module()
 int usecount()
 {
 	int res;
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	res = usecnt;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	return res;
 }
 
diff --git a/channels/chan_oss.c b/channels/chan_oss.c
index 376f5e05942db6d67896c23ac2bbb9a1f2de0272..28f20d48571c4d30c1a0cd3f25e2f9e32d1a6978 100755
--- a/channels/chan_oss.c
+++ b/channels/chan_oss.c
@@ -64,7 +64,7 @@ static int silencesuppression = 0;
 static int silencethreshold = 1000;
 
 
-static pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
 
 static char *type = "Console";
 static char *desc = "OSS Console Channel Driver";
@@ -490,9 +490,9 @@ static int oss_hangup(struct ast_channel *c)
 	c->pvt->pvt = NULL;
 	oss.owner = NULL;
 	ast_verbose( " << Hangup on console >> \n");
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	usecnt--;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	if (hookstate) {
 		if (autoanswer) {
 			/* Assume auto-hangup too */
@@ -712,9 +712,9 @@ static struct ast_channel *oss_new(struct chan_oss_pvt *p, int state)
 			strncpy(tmp->language, language, sizeof(tmp->language)-1);
 		p->owner = tmp;
 		ast_setstate(tmp, state);
-		ast_pthread_mutex_lock(&usecnt_lock);
+		ast_mutex_lock(&usecnt_lock);
 		usecnt++;
-		ast_pthread_mutex_unlock(&usecnt_lock);
+		ast_mutex_unlock(&usecnt_lock);
 		ast_update_use_count();
 		if (state != AST_STATE_DOWN) {
 			if (ast_pbx_start(tmp)) {
@@ -1029,9 +1029,9 @@ char *description()
 int usecount()
 {
 	int res;
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	res = usecnt;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	return res;
 }
 
diff --git a/channels/chan_phone.c b/channels/chan_phone.c
index 80232c3c883719e634476b6d250f341751ff444d..5ae642a1f6ebd6dc5bd260115d17d3314f9ec7a8 100755
--- a/channels/chan_phone.c
+++ b/channels/chan_phone.c
@@ -56,14 +56,14 @@ static int silencesupression = 0;
 
 static int prefformat = AST_FORMAT_G723_1 | AST_FORMAT_SLINEAR | AST_FORMAT_ULAW;
 
-static pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
 
 /* Protect the interface list (of phone_pvt's) */
-static pthread_mutex_t iflock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t iflock = AST_MUTEX_INITIALIZER;
 
 /* Protect the monitoring thread, so only one process can kill or start it, and not
    when it's doing something critical. */
-static pthread_mutex_t monlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t monlock = AST_MUTEX_INITIALIZER;
 
 /* This is the thread for the monitor which checks for input on the channels
    which are not currently in use.  */
@@ -221,11 +221,11 @@ static int phone_hangup(struct ast_channel *ast)
 	p->dialtone = 0;
 	memset(p->ext, 0, sizeof(p->ext));
 	((struct phone_pvt *)(ast->pvt->pvt))->owner = NULL;
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	usecnt--;
 	if (usecnt < 0) 
 		ast_log(LOG_WARNING, "Usecnt < 0???\n");
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	ast_update_use_count();
 	if (option_verbose > 2) 
 		ast_verbose( VERBOSE_PREFIX_3 "Hungup '%s'\n", ast->name);
@@ -640,9 +640,9 @@ static struct ast_channel *phone_new(struct phone_pvt *i, int state, char *conte
 		if (strlen(i->callerid))
 			tmp->callerid = strdup(i->callerid);
 		i->owner = tmp;
-		ast_pthread_mutex_lock(&usecnt_lock);
+		ast_mutex_lock(&usecnt_lock);
 		usecnt++;
-		ast_pthread_mutex_unlock(&usecnt_lock);
+		ast_mutex_unlock(&usecnt_lock);
 		ast_update_use_count();
 		if (state != AST_STATE_DOWN) {
 			if (state == AST_STATE_RING) {
@@ -695,9 +695,9 @@ static void phone_check_exception(struct phone_pvt *i)
 				phone_new(i, AST_STATE_RING, i->context);
 				/* No need to restart monitor, we are the monitor */
 				if (i->owner) {
-					ast_pthread_mutex_lock(&usecnt_lock);
+					ast_mutex_lock(&usecnt_lock);
 					usecnt--;
-					ast_pthread_mutex_unlock(&usecnt_lock);
+					ast_mutex_unlock(&usecnt_lock);
 					ast_update_use_count();
 				}
 			} else if (!ast_canmatch_extension(NULL, i->context, i->ext, 1, i->callerid)) {
@@ -707,9 +707,9 @@ static void phone_check_exception(struct phone_pvt *i)
 					/* Check the default, too... */
 					phone_new(i, AST_STATE_RING, "default");
 					if (i->owner) {
-						ast_pthread_mutex_lock(&usecnt_lock);
+						ast_mutex_lock(&usecnt_lock);
 						usecnt--;
-						ast_pthread_mutex_unlock(&usecnt_lock);
+						ast_mutex_unlock(&usecnt_lock);
 						ast_update_use_count();
 					}
 					/* XXX This should probably be justified better XXX */
@@ -732,9 +732,9 @@ static void phone_check_exception(struct phone_pvt *i)
 			if (i->mode == MODE_IMMEDIATE) {
 				phone_new(i, AST_STATE_RING, i->context);
 			} else if (i->mode == MODE_DIALTONE) {
-				ast_pthread_mutex_lock(&usecnt_lock);
+				ast_mutex_lock(&usecnt_lock);
 				usecnt++;
-				ast_pthread_mutex_unlock(&usecnt_lock);
+				ast_mutex_unlock(&usecnt_lock);
 				ast_update_use_count();
 				/* Reset the extension */
 				i->ext[0] = '\0';
@@ -747,9 +747,9 @@ static void phone_check_exception(struct phone_pvt *i)
 			}
 		} else {
 			if (i->dialtone) {
-				ast_pthread_mutex_lock(&usecnt_lock);
+				ast_mutex_lock(&usecnt_lock);
 				usecnt--;
-				ast_pthread_mutex_unlock(&usecnt_lock);
+				ast_mutex_unlock(&usecnt_lock);
 				ast_update_use_count();
 			}
 			memset(i->ext, 0, sizeof(i->ext));
@@ -793,14 +793,14 @@ static void *do_monitor(void *data)
 	for(;;) {
 		/* Don't let anybody kill us right away.  Nobody should lock the interface list
 		   and wait for the monitor list, but the other way around is okay. */
-		if (ast_pthread_mutex_lock(&monlock)) {
+		if (ast_mutex_lock(&monlock)) {
 			ast_log(LOG_ERROR, "Unable to grab monitor lock\n");
 			return NULL;
 		}
 		/* Lock the interface list */
-		if (ast_pthread_mutex_lock(&iflock)) {
+		if (ast_mutex_lock(&iflock)) {
 			ast_log(LOG_ERROR, "Unable to grab interface lock\n");
-			ast_pthread_mutex_unlock(&monlock);
+			ast_mutex_unlock(&monlock);
 			return NULL;
 		}
 		/* Build the stuff we're going to select on, that is the socket of every
@@ -834,10 +834,10 @@ static void *do_monitor(void *data)
 			i = i->next;
 		}
 		/* Okay, now that we know what to do, release the interface lock */
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 		
 		/* And from now on, we're okay to be killed, so release the monitor lock as well */
-		ast_pthread_mutex_unlock(&monlock);
+		ast_mutex_unlock(&monlock);
 		/* Wait indefinitely for something to happen */
 		if (dotone) {
 			/* If we're ready to recycle the time, set it to 30 ms */
@@ -866,7 +866,7 @@ static void *do_monitor(void *data)
 			continue;
 		/* Alright, lock the interface list again, and let's look and see what has
 		   happened */
-		if (ast_pthread_mutex_lock(&iflock)) {
+		if (ast_mutex_lock(&iflock)) {
 			ast_log(LOG_WARNING, "Unable to lock the interface list\n");
 			continue;
 		}
@@ -888,7 +888,7 @@ static void *do_monitor(void *data)
 			}
 			i=i->next;
 		}
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 	}
 	/* Never reached */
 	return NULL;
@@ -900,12 +900,12 @@ static int restart_monitor()
 	/* If we're supposed to be stopped -- stay stopped */
 	if (monitor_thread == -2)
 		return 0;
-	if (ast_pthread_mutex_lock(&monlock)) {
+	if (ast_mutex_lock(&monlock)) {
 		ast_log(LOG_WARNING, "Unable to lock monitor\n");
 		return -1;
 	}
 	if (monitor_thread == pthread_self()) {
-		ast_pthread_mutex_unlock(&monlock);
+		ast_mutex_unlock(&monlock);
 		ast_log(LOG_WARNING, "Cannot kill myself\n");
 		return -1;
 	}
@@ -917,11 +917,11 @@ static int restart_monitor()
 	}
 	/* Start a new monitor */
 	if (pthread_create(&monitor_thread, NULL, do_monitor, NULL) < 0) {
-		ast_pthread_mutex_unlock(&monlock);
+		ast_mutex_unlock(&monlock);
 		ast_log(LOG_ERROR, "Unable to start monitor thread.\n");
 		return -1;
 	}
-	ast_pthread_mutex_unlock(&monlock);
+	ast_mutex_unlock(&monlock);
 	return 0;
 }
 
@@ -997,7 +997,7 @@ static struct ast_channel *phone_request(char *type, int format, void *data)
 		return NULL;
 	}
 	/* Search for an unowned channel */
-	if (ast_pthread_mutex_lock(&iflock)) {
+	if (ast_mutex_lock(&iflock)) {
 		ast_log(LOG_ERROR, "Unable to lock interface list???\n");
 		return NULL;
 	}
@@ -1011,7 +1011,7 @@ static struct ast_channel *phone_request(char *type, int format, void *data)
 		}
 		p = p->next;
 	}
-	ast_pthread_mutex_unlock(&iflock);
+	ast_mutex_unlock(&iflock);
 	restart_monitor();
 	return tmp;
 }
@@ -1053,7 +1053,7 @@ int load_module()
 		ast_log(LOG_ERROR, "Unable to load config %s\n", config);
 		return -1;
 	}
-	if (ast_pthread_mutex_lock(&iflock)) {
+	if (ast_mutex_lock(&iflock)) {
 		/* It's a little silly to lock it, but we mind as well just to be sure */
 		ast_log(LOG_ERROR, "Unable to lock interface list???\n");
 		return -1;
@@ -1070,7 +1070,7 @@ int load_module()
 				} else {
 					ast_log(LOG_ERROR, "Unable to register channel '%s'\n", v->value);
 					ast_destroy(cfg);
-					ast_pthread_mutex_unlock(&iflock);
+					ast_mutex_unlock(&iflock);
 					unload_module();
 					return -1;
 				}
@@ -1118,7 +1118,7 @@ int load_module()
 		}	
 		v = v->next;
 	}
-	ast_pthread_mutex_unlock(&iflock);
+	ast_mutex_unlock(&iflock);
 	/* Make sure we can register our Adtranphone channel type */
 	if (ast_channel_register(type, tdesc, 
 			 AST_FORMAT_G723_1 | AST_FORMAT_SLINEAR | AST_FORMAT_ULAW, phone_request)) {
@@ -1140,7 +1140,7 @@ int unload_module()
 	struct phone_pvt *p, *pl;
 	/* First, take us out of the channel loop */
 	ast_channel_unregister(type);
-	if (!ast_pthread_mutex_lock(&iflock)) {
+	if (!ast_mutex_lock(&iflock)) {
 		/* Hangup all interfaces if they have an owner */
 		p = iflist;
 		while(p) {
@@ -1149,24 +1149,24 @@ int unload_module()
 			p = p->next;
 		}
 		iflist = NULL;
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 	} else {
 		ast_log(LOG_WARNING, "Unable to lock the monitor\n");
 		return -1;
 	}
-	if (!ast_pthread_mutex_lock(&monlock)) {
+	if (!ast_mutex_lock(&monlock)) {
 		if (monitor_thread > -1) {
 			pthread_cancel(monitor_thread);
 			pthread_join(monitor_thread, NULL);
 		}
 		monitor_thread = -2;
-		ast_pthread_mutex_unlock(&monlock);
+		ast_mutex_unlock(&monlock);
 	} else {
 		ast_log(LOG_WARNING, "Unable to lock the monitor\n");
 		return -1;
 	}
 
-	if (!ast_pthread_mutex_lock(&iflock)) {
+	if (!ast_mutex_lock(&iflock)) {
 		/* Destroy all the interfaces and free their memory */
 		p = iflist;
 		while(p) {
@@ -1179,7 +1179,7 @@ int unload_module()
 			free(pl);
 		}
 		iflist = NULL;
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 	} else {
 		ast_log(LOG_WARNING, "Unable to lock the monitor\n");
 		return -1;
@@ -1191,9 +1191,9 @@ int unload_module()
 int usecount()
 {
 	int res;
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	res = usecnt;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	return res;
 }
 
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index a1b9adc6b065e1bde0c6b89032c008e1745a7589..b4602275a66854fc258017f6640897cef34a3b93 100755
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -100,16 +100,16 @@ static int srvlookup = 0;
 static int pedanticsipchecking = 0;
 
 static int usecnt =0;
-static pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
 
 /* Protect the interface list (of sip_pvt's) */
-static pthread_mutex_t iflock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t iflock = AST_MUTEX_INITIALIZER;
 
 /* Protect the monitoring thread, so only one process can kill or start it, and not
    when it's doing something critical. */
-static pthread_mutex_t netlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t netlock = AST_MUTEX_INITIALIZER;
 
-static pthread_mutex_t monlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t monlock = AST_MUTEX_INITIALIZER;
 
 /* This is the thread for the monitor which checks for input on the channels
    which are not currently in use.  */
@@ -168,7 +168,7 @@ struct sip_route {
 };
 
 static struct sip_pvt {
-	pthread_mutex_t lock;				/* Channel private lock */
+	ast_mutex_t lock;				/* Channel private lock */
 	char callid[80];					/* Global CallID */
 	char randdata[80];	/* Random data */
 	unsigned int ocseq;					/* Current outgoing seqno */
@@ -319,12 +319,12 @@ struct sip_peer {
 
 static struct ast_user_list {
 	struct sip_user *users;
-	pthread_mutex_t lock;
+	ast_mutex_t lock;
 } userl = { NULL, AST_MUTEX_INITIALIZER };
 
 static struct ast_peer_list {
 	struct sip_peer *peers;
-	pthread_mutex_t lock;
+	ast_mutex_t lock;
 } peerl = { NULL, AST_MUTEX_INITIALIZER };
 
 
@@ -337,7 +337,7 @@ static struct ast_peer_list {
 #define REG_STATE_NOAUTH	   6
 
 struct sip_registry {
-	pthread_mutex_t lock;				/* Channel private lock */
+	ast_mutex_t lock;				/* Channel private lock */
 	struct sockaddr_in addr;		/* Who we connect to for registration purposes */
 	char username[80];				/* Who we are registering as */
 	char authuser[80];				/* Who we *authenticate* as */
@@ -405,7 +405,7 @@ static int retrans_pkt(void *data)
 {
 	struct sip_pkt *pkt=data;
 	int res = 0;
-	ast_pthread_mutex_lock(&pkt->owner->lock);
+	ast_mutex_lock(&pkt->owner->lock);
 	if (1 /* !p->owner->needdestroy */) {
 		if (pkt->retrans < MAX_RETRANS) {
 			pkt->retrans++;
@@ -425,7 +425,7 @@ static int retrans_pkt(void *data)
 				ast_queue_hangup(pkt->owner->owner, 1);
 			} else {
 				/* If no owner, destroy now */
-				ast_pthread_mutex_unlock(&pkt->owner->lock);
+				ast_mutex_unlock(&pkt->owner->lock);
 				sip_destroy(pkt->owner);
 				pkt = NULL;
 			}
@@ -438,13 +438,13 @@ static int retrans_pkt(void *data)
 			ast_queue_hangup(pkt->owner->owner, 1);
 		} else {
 			/* If no owner, destroy now */
-			ast_pthread_mutex_unlock(&pkt->owner->lock);
+			ast_mutex_unlock(&pkt->owner->lock);
 			sip_destroy(pkt->owner);
 			pkt=NULL;
 		}
 	}
 	if (pkt)
-		ast_pthread_mutex_unlock(&pkt->owner->lock);
+		ast_mutex_unlock(&pkt->owner->lock);
 	return res;
 }
 
@@ -611,7 +611,7 @@ static int create_addr(struct sip_pvt *r, char *peer)
 	char host[256], *hostn;
 
 	r->sa.sin_family = AF_INET;
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	p = peerl.peers;
 	while(p) {
 		if (!strcasecmp(p->name, peer)) {
@@ -668,7 +668,7 @@ static int create_addr(struct sip_pvt *r, char *peer)
 		}
 		p = p->next;
 	}
-	ast_pthread_mutex_unlock(&peerl.lock);
+	ast_mutex_unlock(&peerl.lock);
 	if (!p && !found) {
 		if ((port=strchr(peer, ':'))) {
 			*port='\0';
@@ -710,16 +710,16 @@ static int create_addr(struct sip_pvt *r, char *peer)
 static int auto_congest(void *nothing)
 {
 	struct sip_pvt *p = nothing;
-	ast_pthread_mutex_lock(&p->lock);
+	ast_mutex_lock(&p->lock);
 	p->initid = -1;
 	if (p->owner) {
-		if (!pthread_mutex_trylock(&p->owner->lock)) {
+		if (!ast_mutex_trylock(&p->owner->lock)) {
 			ast_log(LOG_NOTICE, "Auto-congesting %s\n", p->owner->name);
 			ast_queue_control(p->owner, AST_CONTROL_CONGESTION, 0);
-			ast_pthread_mutex_unlock(&p->owner->lock);
+			ast_mutex_unlock(&p->owner->lock);
 		}
 	}
-	ast_pthread_mutex_unlock(&p->lock);
+	ast_mutex_unlock(&p->lock);
 	return 0;
 }
 
@@ -856,11 +856,11 @@ static void __sip_destroy(struct sip_pvt *p, int lockowner)
 	/* Unlink us from the owner if we have one */
 	if (p->owner) {
 		if (lockowner)
-			ast_pthread_mutex_lock(&p->owner->lock);
+			ast_mutex_lock(&p->owner->lock);
 		ast_log(LOG_DEBUG, "Detaching from %s\n", p->owner->name);
 		p->owner->pvt->pvt = NULL;
 		if (lockowner)
-			ast_pthread_mutex_unlock(&p->owner->lock);
+			ast_mutex_unlock(&p->owner->lock);
 	}
 	cur = iflist;
 	while(cur) {
@@ -894,7 +894,7 @@ static int find_user(struct sip_pvt *fup, int event)
 	char name[256] = "";
 	struct sip_user *u;
 	strncpy(name, fup->username, sizeof(name) - 1);
-	ast_pthread_mutex_lock(&userl.lock);
+	ast_mutex_lock(&userl.lock);
 	u = userl.users;
 	while(u) {
 		if (!strcasecmp(u->name, name)) {
@@ -904,7 +904,7 @@ static int find_user(struct sip_pvt *fup, int event)
 	}
 	if (!u) {
 		ast_log(LOG_DEBUG, "%s is not a local user\n", name);
-		ast_pthread_mutex_unlock(&userl.lock);
+		ast_mutex_unlock(&userl.lock);
 		return 0;
 	}
 	if(event == 0) {
@@ -917,22 +917,22 @@ static int find_user(struct sip_pvt *fup, int event)
 		if (u->incominglimit > 0 ) {
 			if (u->inUse >= u->incominglimit) {
 				ast_log(LOG_ERROR, "Call from user '%s' rejected due to usage limit of %d\n", u->name, u->incominglimit);
-				ast_pthread_mutex_unlock(&userl.lock);
+				ast_mutex_unlock(&userl.lock);
 				return -1; 
 			}
 		}
 		u->inUse++;
 		ast_log(LOG_DEBUG, "Call from user '%s' is %d out of %d\n", u->name, u->inUse, u->incominglimit);
 	}
-	ast_pthread_mutex_unlock(&userl.lock);
+	ast_mutex_unlock(&userl.lock);
 	return 0;
 }
 
 static void sip_destroy(struct sip_pvt *p)
 {
-	ast_pthread_mutex_lock(&iflock);
+	ast_mutex_lock(&iflock);
 	__sip_destroy(p, 1);
-	ast_pthread_mutex_unlock(&iflock);
+	ast_mutex_unlock(&iflock);
 }
 
 static int transmit_response_reliable(struct sip_pvt *p, char *msg, struct sip_request *req);
@@ -949,13 +949,13 @@ static int sip_hangup(struct ast_channel *ast)
 		ast_log(LOG_DEBUG, "Asked to hangup channel not connected\n");
 		return 0;
 	}
-	ast_pthread_mutex_lock(&p->lock);
+	ast_mutex_lock(&p->lock);
 	ast_log(LOG_DEBUG, "find_user(%s)\n", p->username);
 	find_user(p, 0);
 	/* Determine how to disconnect */
 	if (p->owner != ast) {
 		ast_log(LOG_WARNING, "Huh?  We aren't the owner?\n");
-		ast_pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return 0;
 	}
 	if (!ast || (ast->_state != AST_STATE_UP))
@@ -992,7 +992,7 @@ static int sip_hangup(struct ast_channel *ast)
 		}
 	}
 	p->needdestroy = needdestroy;
-	ast_pthread_mutex_unlock(&p->lock);
+	ast_mutex_unlock(&p->lock);
 	return 0;
 }
 
@@ -1035,7 +1035,7 @@ static int sip_write(struct ast_channel *ast, struct ast_frame *frame)
 			return -1;
 		}
 		if (p) {
-			ast_pthread_mutex_lock(&p->lock);
+			ast_mutex_lock(&p->lock);
 			if (p->rtp) {
 				if ((ast->_state != AST_STATE_UP) && !p->progress && !p->outgoing) {
 					transmit_response_with_sdp(p, "183 Session Progress", &p->initreq, 0);
@@ -1043,11 +1043,11 @@ static int sip_write(struct ast_channel *ast, struct ast_frame *frame)
 				}
 				res =  ast_rtp_write(p->rtp, frame);
 			}
-			ast_pthread_mutex_unlock(&p->lock);
+			ast_mutex_unlock(&p->lock);
 		}
 	} else if (frame->frametype == AST_FRAME_VIDEO) {
 		if (p) {
-			ast_pthread_mutex_lock(&p->lock);
+			ast_mutex_lock(&p->lock);
 			if (p->vrtp) {
 				if ((ast->_state != AST_STATE_UP) && !p->progress && !p->outgoing) {
 					transmit_response_with_sdp(p, "183 Session Progress", &p->initreq, 0);
@@ -1055,7 +1055,7 @@ static int sip_write(struct ast_channel *ast, struct ast_frame *frame)
 				}
 				res =  ast_rtp_write(p->vrtp, frame);
 			}
-			ast_pthread_mutex_unlock(&p->lock);
+			ast_mutex_unlock(&p->lock);
 		}
 	} else if (frame->frametype == AST_FRAME_IMAGE) {
 		return 0;
@@ -1070,14 +1070,14 @@ static int sip_write(struct ast_channel *ast, struct ast_frame *frame)
 static int sip_fixup(struct ast_channel *oldchan, struct ast_channel *newchan)
 {
 	struct sip_pvt *p = newchan->pvt->pvt;
-	ast_pthread_mutex_lock(&p->lock);
+	ast_mutex_lock(&p->lock);
 	if (p->owner != oldchan) {
 		ast_log(LOG_WARNING, "old channel wasn't %p but was %p\n", oldchan, p->owner);
-		ast_pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return -1;
 	}
 	p->owner = newchan;
-	ast_pthread_mutex_unlock(&p->lock);
+	ast_mutex_unlock(&p->lock);
 	return 0;
 }
 
@@ -1220,9 +1220,9 @@ static struct ast_channel *sip_new(struct sip_pvt *i, int state, char *title)
 		if (strlen(i->language))
 			strncpy(tmp->language, i->language, sizeof(tmp->language)-1);
 		i->owner = tmp;
-		ast_pthread_mutex_lock(&usecnt_lock);
+		ast_mutex_lock(&usecnt_lock);
 		usecnt++;
-		ast_pthread_mutex_unlock(&usecnt_lock);
+		ast_mutex_unlock(&usecnt_lock);
 		ast_update_use_count();
 		strncpy(tmp->context, i->context, sizeof(tmp->context)-1);
 		strncpy(tmp->exten, i->exten, sizeof(tmp->exten)-1);
@@ -1370,9 +1370,9 @@ static struct ast_frame *sip_read(struct ast_channel *ast)
 {
 	struct ast_frame *fr;
 	struct sip_pvt *p = ast->pvt->pvt;
-	ast_pthread_mutex_lock(&p->lock);
+	ast_mutex_lock(&p->lock);
 	fr = sip_rtp_read(ast, p);
-	ast_pthread_mutex_unlock(&p->lock);
+	ast_mutex_unlock(&p->lock);
 	return fr;
 }
 
@@ -1427,7 +1427,7 @@ static struct sip_pvt *sip_alloc(char *callid, struct sockaddr_in *sin, int useg
 		if (p->vrtp)
 			ast_rtp_setnat(p->vrtp, p->nat);
 	}
-	ast_pthread_mutex_init(&p->lock);
+	ast_mutex_init(&p->lock);
 
 	if (sin) {
 		memcpy(&p->sa, sin, sizeof(p->sa));
@@ -1450,10 +1450,10 @@ static struct sip_pvt *sip_alloc(char *callid, struct sockaddr_in *sin, int useg
 	strncpy(p->context, context, sizeof(p->context) - 1);
 	strncpy(p->fromdomain, fromdomain, sizeof(p->fromdomain) - 1);
 	/* Add to list */
-	ast_pthread_mutex_lock(&iflock);
+	ast_mutex_lock(&iflock);
 	p->next = iflist;
 	iflist = p;
-	ast_pthread_mutex_unlock(&iflock);
+	ast_mutex_unlock(&iflock);
 	if (option_debug)
 		ast_log(LOG_DEBUG, "Allocating new SIP call for %s\n", callid);
 	return p;
@@ -1506,22 +1506,22 @@ static struct sip_pvt *find_call(struct sip_request *req, struct sockaddr_in *si
 		ast_log(LOG_WARNING, "Call missing call ID from '%s'\n", inet_ntoa(sin->sin_addr));
 		return NULL;
 	}
-	ast_pthread_mutex_lock(&iflock);
+	ast_mutex_lock(&iflock);
 	p = iflist;
 	while(p) {
 		if (!strcmp(p->callid, callid) && 
 			(!pedanticsipchecking || !strlen(p->theirtag) || !strcmp(p->theirtag, tag))) {
 			/* Found the call */
-			ast_pthread_mutex_lock(&p->lock);
-			ast_pthread_mutex_unlock(&iflock);
+			ast_mutex_lock(&p->lock);
+			ast_mutex_unlock(&iflock);
 			return p;
 		}
 		p = p->next;
 	}
-	ast_pthread_mutex_unlock(&iflock);
+	ast_mutex_unlock(&iflock);
 	p = sip_alloc(callid, sin, 1);
 	if (p)
-		ast_pthread_mutex_lock(&p->lock);
+		ast_mutex_lock(&p->lock);
 	return p;
 }
 
@@ -1923,11 +1923,15 @@ static int copy_via_headers(struct sip_pvt *p, struct sip_request *req, struct s
 		tmp = __get_header(orig, field, &start);
 		if (strlen(tmp)) {
 			if (!copied && p->nat) {
+#ifdef THE_SIP_AUTHORS_CAN_SUCK_MY_GONADS
 				/* SLD: FIXME: Nice try, but the received= should not have a port */
 				/* SLD: FIXME: See RFC2543 BNF in Section 6.40.5 */
+				/* MAS: Yup, RFC says you can't do it.  No way to indicate PAT...
+				   good job fellas. */
 				if (ntohs(p->recv.sin_port) != DEFAULT_SIP_PORT)
 					snprintf(new, sizeof(new), "%s;received=%s:%d", tmp, inet_ntoa(p->recv.sin_addr), ntohs(p->recv.sin_port));
 				else
+#endif				
 					snprintf(new, sizeof(new), "%s;received=%s", tmp, inet_ntoa(p->recv.sin_addr));
 				add_header(req, field, new);
 			} else {
@@ -2759,9 +2763,9 @@ static int sip_reregister(void *data)
 static int sip_do_register(struct sip_registry *r)
 {
 	int res;
-	ast_pthread_mutex_lock(&r->lock);
+	ast_mutex_lock(&r->lock);
 	res=transmit_register(r, "REGISTER", NULL);
-	ast_pthread_mutex_unlock(&r->lock);
+	ast_mutex_unlock(&r->lock);
 	return res;
 }
 
@@ -2771,7 +2775,7 @@ static int sip_reg_timeout(void *data)
 	struct sip_registry *r=data;
 	struct sip_pvt *p;
 	int res;
-	ast_pthread_mutex_lock(&r->lock);
+	ast_mutex_lock(&r->lock);
 	ast_log(LOG_NOTICE, "Registration for '%s@%s' timed out, trying again\n", r->username, inet_ntoa(r->addr.sin_addr)); 
 	if (r->call) {
 		/* Unlink us, destroy old call.  Locking is not relevent here because all this happens
@@ -2784,7 +2788,7 @@ static int sip_reg_timeout(void *data)
 	r->regstate=REG_STATE_UNREGISTERED;
 	r->timeout = -1;
 	res=transmit_register(r, "REGISTER", NULL);
-	ast_pthread_mutex_unlock(&r->lock);
+	ast_mutex_unlock(&r->lock);
 	return 0;
 }
 
@@ -3326,7 +3330,7 @@ static int register_verify(struct sip_pvt *p, struct sockaddr_in *sin, struct si
 		*c = '\0';
 	strncpy(p->exten, name, sizeof(p->exten) - 1);
 	build_contact(p);
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	peer = peerl.peers;
 	while(peer) {
 		if (!strcasecmp(peer->name, name) && peer->dynamic) {
@@ -3347,7 +3351,7 @@ static int register_verify(struct sip_pvt *p, struct sockaddr_in *sin, struct si
 		}	
 		peer = peer->next;
 	}
-	ast_pthread_mutex_unlock(&peerl.lock);
+	ast_mutex_unlock(&peerl.lock);
 	if (!res) {
 	    ast_device_state_changed("SIP/%s", peer->name);
 	}
@@ -3492,19 +3496,19 @@ static int get_refer_info(struct sip_pvt *p, struct sip_request *oreq)
 		strncpy(p->refer_contact, "", sizeof(p->refer_contact) - 1);
 		strncpy(p->remote_party_id, "", sizeof(p->remote_party_id) - 1);
 		p->refer_call = NULL;
-		ast_pthread_mutex_lock(&iflock);
+		ast_mutex_lock(&iflock);
 		/* Search interfaces and find the match */
 		p2 = iflist;
 		while(p2) {
 			if (!strcmp(p2->callid, tmp5)) {
 				/* Go ahead and lock it before returning */
-				ast_pthread_mutex_lock(&p2->lock);
+				ast_mutex_lock(&p2->lock);
 				p->refer_call = p2;
 				break;
 			}
 			p2 = p2->next;
 		}
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 		if (p->refer_call)
 			return 0;
 		else
@@ -3633,7 +3637,7 @@ static int check_user(struct sip_pvt *p, struct sip_request *req, char *cmd, cha
 		strncpy(p->callerid, of, sizeof(p->callerid) - 1);
 	if (!strlen(of))
 			return 0;
-	ast_pthread_mutex_lock(&userl.lock);
+	ast_mutex_lock(&userl.lock);
 	user = userl.users;
 	while(user) {
 		if (!strcasecmp(user->name, of)) {
@@ -3670,10 +3674,10 @@ static int check_user(struct sip_pvt *p, struct sip_request *req, char *cmd, cha
 		}
 		user = user->next;
 	}
-	ast_pthread_mutex_unlock(&userl.lock);
+	ast_mutex_unlock(&userl.lock);
 	if (!user) {
 	/* If we didn't find a user match, check for peers */
-		ast_pthread_mutex_lock(&peerl.lock);
+		ast_mutex_lock(&peerl.lock);
 		peer = peerl.peers;
 		while(peer) {
 			if (!inaddrcmp(&peer->addr, &p->recv) || 
@@ -3705,7 +3709,7 @@ static int check_user(struct sip_pvt *p, struct sip_request *req, char *cmd, cha
 			}
 			peer = peer->next;
 		}
-		ast_pthread_mutex_unlock(&peerl.lock);
+		ast_mutex_unlock(&peerl.lock);
 	}
 	return res;
 }
@@ -3750,7 +3754,7 @@ static int sip_show_inuse(int fd, int argc, char *argv[]) {
 	char used[80];
 	if (argc != 3) 
 		return RESULT_SHOWUSAGE;
-	ast_pthread_mutex_lock(&userl.lock);
+	ast_mutex_lock(&userl.lock);
 	user = userl.users;
 	ast_cli(fd, FORMAT, "Username", "inUse", "Limit");
 	for(user=userl.users;user;user=user->next) {
@@ -3761,7 +3765,7 @@ static int sip_show_inuse(int fd, int argc, char *argv[]) {
 		snprintf(used, sizeof(used), "%d", user->inUse);
 		ast_cli(fd, FORMAT2, user->name, used, limits);
 	}
-	ast_pthread_mutex_unlock(&userl.lock);
+	ast_mutex_unlock(&userl.lock);
 	return RESULT_SUCCESS;
 #undef FORMAT
 #undef FORMAT2
@@ -3774,13 +3778,13 @@ static int sip_show_users(int fd, int argc, char *argv[])
 	struct sip_user *user;
 	if (argc != 3) 
 		return RESULT_SHOWUSAGE;
-	ast_pthread_mutex_lock(&userl.lock);
+	ast_mutex_lock(&userl.lock);
 	ast_cli(fd, FORMAT, "Username", "Secret", "Authen", "Def.Context", "A/C");
 	for(user=userl.users;user;user=user->next) {
 		ast_cli(fd, FORMAT, user->name, user->secret, user->methods, 
 				user->context,user->ha ? "Yes" : "No");
 	}
-	ast_pthread_mutex_unlock(&userl.lock);
+	ast_mutex_unlock(&userl.lock);
 	return RESULT_SUCCESS;
 #undef FORMAT
 }
@@ -3793,7 +3797,7 @@ static int sip_show_peers(int fd, int argc, char *argv[])
 	char name[256] = "";
 	if (argc != 3)
 		return RESULT_SHOWUSAGE;
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	ast_cli(fd, FORMAT2, "Name/username", "Host", "   ", "Mask", "Port", "Status");
 	for (peer = peerl.peers;peer;peer = peer->next) {
 		char nm[20] = "";
@@ -3820,7 +3824,7 @@ static int sip_show_peers(int fd, int argc, char *argv[])
 					nm,
 					ntohs(peer->addr.sin_port), status);
 	}
-	ast_pthread_mutex_unlock(&peerl.lock);
+	ast_mutex_unlock(&peerl.lock);
 	return RESULT_SUCCESS;
 #undef FORMAT
 #undef FORMAT2
@@ -3856,14 +3860,14 @@ static int sip_show_registry(int fd, int argc, char *argv[])
 	char host[80];
 	if (argc != 3)
 		return RESULT_SHOWUSAGE;
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	ast_cli(fd, FORMAT2, "Host", "Username", "Refresh", "State");
 	for (reg = registrations;reg;reg = reg->next) {
 		snprintf(host, sizeof(host), "%s:%d", inet_ntoa(reg->addr.sin_addr), ntohs(reg->addr.sin_port));
 		ast_cli(fd, FORMAT, host,
 					reg->username, reg->refresh, regstate2str(reg->regstate));
 	}
-	ast_pthread_mutex_unlock(&peerl.lock);
+	ast_mutex_unlock(&peerl.lock);
 	return RESULT_SUCCESS;
 #undef FORMAT
 #undef FORMAT2
@@ -3877,7 +3881,7 @@ static int sip_show_channels(int fd, int argc, char *argv[])
 	int numchans = 0;
 	if (argc != 3)
 		return RESULT_SHOWUSAGE;
-	ast_pthread_mutex_lock(&iflock);
+	ast_mutex_lock(&iflock);
 	cur = iflist;
 	ast_cli(fd, FORMAT2, "Peer", "User/ANR", "Call ID", "Seq (Tx/Rx)", "Lag", "Jitter", "Format");
 	while (cur) {
@@ -3893,7 +3897,7 @@ static int sip_show_channels(int fd, int argc, char *argv[])
 		}
 		cur = cur->next;
 	}
-	ast_pthread_mutex_unlock(&iflock);
+	ast_mutex_unlock(&iflock);
 	ast_cli(fd, "%d active SIP channel(s)\n", numchans);
 	return RESULT_SUCCESS;
 #undef FORMAT
@@ -3905,7 +3909,7 @@ static char *complete_sipch(char *line, char *word, int pos, int state)
 	int which=0;
 	struct sip_pvt *cur;
 	char *c = NULL;
-	ast_pthread_mutex_lock(&iflock);
+	ast_mutex_lock(&iflock);
 	cur = iflist;
 	while(cur) {
 		if (!strncasecmp(word, cur->callid, strlen(word))) {
@@ -3916,7 +3920,7 @@ static char *complete_sipch(char *line, char *word, int pos, int state)
 		}
 		cur = cur->next;
 	}
-	ast_pthread_mutex_unlock(&iflock);
+	ast_mutex_unlock(&iflock);
 	return c;
 }
 
@@ -3926,7 +3930,7 @@ static int sip_show_channel(int fd, int argc, char *argv[])
 	char tmp[256];
 	if (argc != 4)
 		return RESULT_SHOWUSAGE;
-	ast_pthread_mutex_lock(&iflock);
+	ast_mutex_lock(&iflock);
 	cur = iflist;
 	while(cur) {
 		if (!strcasecmp(cur->callid, argv[3])) {
@@ -3950,7 +3954,7 @@ static int sip_show_channel(int fd, int argc, char *argv[])
 		}
 		cur = cur->next;
 	}
-	ast_pthread_mutex_unlock(&iflock);
+	ast_mutex_unlock(&iflock);
 	if (!cur) 
 		ast_cli(fd, "No such SIP Call ID '%s'\n", argv[3]);
 	return RESULT_SUCCESS;
@@ -4643,7 +4647,7 @@ static int handle_request(struct sip_pvt *p, struct sip_request *req, struct soc
 				build_route(p, req, 0);
 				if (c) {
 					/* Pre-lock the call */
-					ast_pthread_mutex_lock(&c->lock);
+					ast_mutex_lock(&c->lock);
 				}
 			}
 			
@@ -4660,10 +4664,10 @@ static int handle_request(struct sip_pvt *p, struct sip_request *req, struct soc
 					if (ast_pbx_start(c)) {
 						ast_log(LOG_WARNING, "Failed to start PBX :(\n");
 						/* Unlock locks so ast_hangup can do its magic */
-						ast_pthread_mutex_unlock(&c->lock);
-						ast_pthread_mutex_unlock(&p->lock);
+						ast_mutex_unlock(&c->lock);
+						ast_mutex_unlock(&p->lock);
 						ast_hangup(c);
-						ast_pthread_mutex_lock(&p->lock);
+						ast_mutex_lock(&p->lock);
 						transmit_response_reliable(p, "503 Unavailable", req);
 						c = NULL;
 					}
@@ -4672,16 +4676,16 @@ static int handle_request(struct sip_pvt *p, struct sip_request *req, struct soc
 					transmit_response_reliable(p, "503 Unavailable", req);
 					p->alreadygone = 1;
 					/* Unlock locks so ast_hangup can do its magic */
-					ast_pthread_mutex_unlock(&c->lock);
-					ast_pthread_mutex_unlock(&p->lock);
+					ast_mutex_unlock(&c->lock);
+					ast_mutex_unlock(&p->lock);
 					ast_hangup(c);
-					ast_pthread_mutex_lock(&p->lock);
+					ast_mutex_lock(&p->lock);
 					c = NULL;
 				} else {
-					ast_pthread_mutex_unlock(&c->lock);
-					ast_pthread_mutex_unlock(&p->lock);
+					ast_mutex_unlock(&c->lock);
+					ast_mutex_unlock(&p->lock);
 					ast_hangup(c);
-					ast_pthread_mutex_lock(&p->lock);
+					ast_mutex_lock(&p->lock);
 					c = NULL;
 				}
 				break;
@@ -4720,7 +4724,7 @@ static int handle_request(struct sip_pvt *p, struct sip_request *req, struct soc
 			if (p->refer_call) {
 				ast_log(LOG_DEBUG,"202 Accepted (supervised)\n");
 				attempt_transfer(p, p->refer_call);
-				ast_pthread_mutex_unlock(&p->refer_call->lock);
+				ast_mutex_unlock(&p->refer_call->lock);
 				p->refer_call = NULL;
 			} else {
 				ast_log(LOG_DEBUG,"202 Accepted (blind)\n");
@@ -4909,26 +4913,26 @@ static int sipsock_read(int *id, int fd, short events, void *ignore)
 		return 1;
 	}
 	/* Process request, with netlock held */
-	ast_pthread_mutex_lock(&netlock);
+	ast_mutex_lock(&netlock);
 	p = find_call(&req, &sin);
 	if (p) {
 retrylock:
 		/* Go ahead and lock the owner if it has one -- we may need it */
-		if (p->owner && pthread_mutex_trylock(&p->owner->lock)) {
+		if (p->owner && ast_mutex_trylock(&p->owner->lock)) {
 			ast_log(LOG_DEBUG, "Failed to grab lock, trying again...\n");
-			ast_pthread_mutex_unlock(&p->lock);
+			ast_mutex_unlock(&p->lock);
 			/* Sleep infintismly short amount of time */
 			usleep(1);
-			ast_pthread_mutex_lock(&p->lock);
+			ast_mutex_lock(&p->lock);
 			goto retrylock;
 		}
 		memcpy(&p->recv, &sin, sizeof(p->recv));
 		handle_request(p, &req, &sin);
 		if (p->owner)
-			ast_pthread_mutex_unlock(&p->owner->lock);
-		ast_pthread_mutex_unlock(&p->lock);
+			ast_mutex_unlock(&p->owner->lock);
+		ast_mutex_unlock(&p->lock);
 	}
-	ast_pthread_mutex_unlock(&netlock);
+	ast_mutex_unlock(&netlock);
 	return 1;
 }
 
@@ -4945,19 +4949,19 @@ static int sip_send_mwi_to_peer(struct sip_peer *peer)
 	
 	/* Return now if it's the same thing we told them last time */
 	if (((newmsgs << 8) | (oldmsgs)) == peer->lastmsgssent) {
-		ast_pthread_mutex_unlock(&peerl.lock);
+		ast_mutex_unlock(&peerl.lock);
 		return 0;
 	}
 	
 	p = sip_alloc(NULL, NULL, 0);
 	if (!p) {
 		ast_log(LOG_WARNING, "Unable to build sip pvt data for MWI\n");
-		ast_pthread_mutex_unlock(&peerl.lock);
+		ast_mutex_unlock(&peerl.lock);
 		return -1;
 	}
 	strncpy(name, peer->name, sizeof(name) - 1);
 	peer->lastmsgssent = ((newmsgs << 8) | (oldmsgs));
-	ast_pthread_mutex_unlock(&peerl.lock);
+	ast_mutex_unlock(&peerl.lock);
 	if (create_addr(p, name)) {
 		/* Maybe they're not registered, etc. */
 		sip_destroy(p);
@@ -4994,29 +4998,29 @@ static void *do_monitor(void *data)
 	/* From here on out, we die whenever asked */
 	for(;;) {
 		/* Check for interfaces needing to be killed */
-		ast_pthread_mutex_lock(&iflock);
+		ast_mutex_lock(&iflock);
 restartsearch:		
 		sip = iflist;
 		while(sip) {
-			ast_pthread_mutex_lock(&sip->lock);
+			ast_mutex_lock(&sip->lock);
 			if (sip->needdestroy && !sip->packets) {
-				ast_pthread_mutex_unlock(&sip->lock);
+				ast_mutex_unlock(&sip->lock);
 				__sip_destroy(sip, 1);
 				goto restartsearch;
 			}
-			ast_pthread_mutex_unlock(&sip->lock);
+			ast_mutex_unlock(&sip->lock);
 			sip = sip->next;
 		}
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 		/* Don't let anybody kill us right away.  Nobody should lock the interface list
 		   and wait for the monitor list, but the other way around is okay. */
-		ast_pthread_mutex_lock(&monlock);
+		ast_mutex_lock(&monlock);
 		/* Lock the network interface */
-		ast_pthread_mutex_lock(&netlock);
+		ast_mutex_lock(&netlock);
 		/* Okay, now that we know what to do, release the network lock */
-		ast_pthread_mutex_unlock(&netlock);
+		ast_mutex_unlock(&netlock);
 		/* And from now on, we're okay to be killed, so release the monitor lock as well */
-		ast_pthread_mutex_unlock(&monlock);
+		ast_mutex_unlock(&monlock);
 		pthread_testcancel();
 		/* Wait for sched or io */
 		res = ast_sched_wait(sched);
@@ -5026,10 +5030,10 @@ restartsearch:
 		if (fastrestart)
 			res = 1;
 		res = ast_io_wait(io, res);
-		ast_pthread_mutex_lock(&monlock);
+		ast_mutex_lock(&monlock);
 		if (res >= 0) 
 			ast_sched_runq(sched);
-		ast_pthread_mutex_lock(&peerl.lock);
+		ast_mutex_lock(&peerl.lock);
 		peer = peerl.peers;
 		time(&t);
 		fastrestart = 0;
@@ -5048,9 +5052,9 @@ restartsearch:
 		if (!peer) {
 			/* Reset where we come from */
 			lastpeernum = -1;
-			ast_pthread_mutex_unlock(&peerl.lock);
+			ast_mutex_unlock(&peerl.lock);
 		}
-		ast_pthread_mutex_unlock(&monlock);
+		ast_mutex_unlock(&monlock);
 	}
 	/* Never reached */
 	return NULL;
@@ -5062,12 +5066,12 @@ static int restart_monitor(void)
 	/* If we're supposed to be stopped -- stay stopped */
 	if (monitor_thread == -2)
 		return 0;
-	if (ast_pthread_mutex_lock(&monlock)) {
+	if (ast_mutex_lock(&monlock)) {
 		ast_log(LOG_WARNING, "Unable to lock monitor\n");
 		return -1;
 	}
 	if (monitor_thread == pthread_self()) {
-		ast_pthread_mutex_unlock(&monlock);
+		ast_mutex_unlock(&monlock);
 		ast_log(LOG_WARNING, "Cannot kill myself\n");
 		return -1;
 	}
@@ -5077,12 +5081,12 @@ static int restart_monitor(void)
 	} else {
 		/* Start a new monitor */
 		if (pthread_create(&monitor_thread, NULL, do_monitor, NULL) < 0) {
-			ast_pthread_mutex_unlock(&monlock);
+			ast_mutex_unlock(&monlock);
 			ast_log(LOG_ERROR, "Unable to start monitor thread.\n");
 			return -1;
 		}
 	}
-	ast_pthread_mutex_unlock(&monlock);
+	ast_mutex_unlock(&monlock);
 	return 0;
 }
 
@@ -5176,7 +5180,7 @@ static int sip_devicestate(void *data)
 		ext = NULL;
 	}
 
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	p = peerl.peers;
 	while (p) {
 		if (!strcasecmp(p->name, host)) {
@@ -5191,7 +5195,7 @@ static int sip_devicestate(void *data)
 		}
 		p = p->next;
 	}
-	ast_pthread_mutex_unlock(&peerl.lock);
+	ast_mutex_unlock(&peerl.lock);
 	if (!p && !found) {
 		hp = gethostbyname(host);
 		if (hp)
@@ -5344,7 +5348,7 @@ static struct sip_peer *build_peer(char *name, struct ast_variable *v)
 	int format;
 	int found=0;
 	prev = NULL;
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	peer = peerl.peers;
 	while(peer) {
 		if (!strcasecmp(peer->name, name)) {	
@@ -5361,9 +5365,9 @@ static struct sip_peer *build_peer(char *name, struct ast_variable *v)
 		} else {
 			peerl.peers = peer->next;
 		}
-		ast_pthread_mutex_unlock(&peerl.lock);
+		ast_mutex_unlock(&peerl.lock);
  	} else {
-		ast_pthread_mutex_unlock(&peerl.lock);
+		ast_mutex_unlock(&peerl.lock);
 		peer = malloc(sizeof(struct sip_peer));
 		memset(peer, 0, sizeof(struct sip_peer));
 		peer->expire = -1;
@@ -5637,19 +5641,19 @@ static int reload_config(void)
 				if (!strcasecmp(utype, "user") || !strcasecmp(utype, "friend")) {
 					user = build_user(cat, ast_variable_browse(cfg, cat));
 					if (user) {
-						ast_pthread_mutex_lock(&userl.lock);
+						ast_mutex_lock(&userl.lock);
 						user->next = userl.users;
 						userl.users = user;
-						ast_pthread_mutex_unlock(&userl.lock);
+						ast_mutex_unlock(&userl.lock);
 					}
 				}
 				if (!strcasecmp(utype, "peer") || !strcasecmp(utype, "friend")) {
 					peer = build_peer(cat, ast_variable_browse(cfg, cat));
 					if (peer) {
-						ast_pthread_mutex_lock(&peerl.lock);
+						ast_mutex_lock(&peerl.lock);
 						peer->next = peerl.peers;
 						peerl.peers = peer;
-						ast_pthread_mutex_unlock(&peerl.lock);
+						ast_mutex_unlock(&peerl.lock);
 					}
 				} else if (strcasecmp(utype, "user")) {
 					ast_log(LOG_WARNING, "Unknown type '%s' for '%s' in %s\n", utype, cat, "sip.conf");
@@ -5673,7 +5677,7 @@ static int reload_config(void)
 	if (!ntohs(bindaddr.sin_port))
 		bindaddr.sin_port = ntohs(DEFAULT_SIP_PORT);
 	bindaddr.sin_family = AF_INET;
-	pthread_mutex_lock(&netlock);
+	ast_mutex_lock(&netlock);
 	if ((sipsock > -1) && (ntohs(bindaddr.sin_port) != oldport)) {
 		close(sipsock);
 		sipsock = -1;
@@ -5706,7 +5710,7 @@ static int reload_config(void)
 			}
 		}
 	}
-	pthread_mutex_unlock(&netlock);
+	ast_mutex_unlock(&netlock);
 
 	ast_destroy(cfg);
 	return 0;
@@ -5787,14 +5791,14 @@ int load_module()
 			ast_log(LOG_WARNING, "Unable to create I/O context\n");
 		}
 	
-		ast_pthread_mutex_lock(&peerl.lock);
+		ast_mutex_lock(&peerl.lock);
 		for (peer = peerl.peers; peer; peer = peer->next)
 			sip_poke_peer(peer);
 
 		for (reg = registrations; reg; reg = reg->next) 
 			sip_do_register(reg);
 
-		ast_pthread_mutex_unlock(&peerl.lock);
+		ast_mutex_unlock(&peerl.lock);
 		
 		/* And start the monitor for the first time */
 		restart_monitor();
@@ -5809,7 +5813,7 @@ static void delete_users(void)
 	struct sip_registry *reg, *regl;
 
 	/* Delete all users */
-	ast_pthread_mutex_lock(&userl.lock);
+	ast_mutex_lock(&userl.lock);
 	for (user=userl.users;user;) {
 		ast_free_ha(user->ha);
 		userlast = user;
@@ -5817,7 +5821,7 @@ static void delete_users(void)
 		free(userlast);
 	}
 	userl.users=NULL;
-	ast_pthread_mutex_unlock(&userl.lock);
+	ast_mutex_unlock(&userl.lock);
 
 	for (reg = registrations;reg;) {
 		regl = reg;
@@ -5827,20 +5831,20 @@ static void delete_users(void)
 		free(regl);
 	}
 	registrations = NULL;
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	for (peer=peerl.peers;peer;) {
 		/* Assume all will be deleted, and we'll find out for sure later */
 		peer->delme = 1;
 		peer = peer->next;
 	}
-	ast_pthread_mutex_unlock(&peerl.lock);
+	ast_mutex_unlock(&peerl.lock);
 }
 
 static void prune_peers(void)
 {
 	/* Prune peers who still are supposed to be deleted */
 	struct sip_peer *peer, *peerlast, *peernext;
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	peerlast = NULL;
 	for (peer=peerl.peers;peer;) {
 		peernext = peer->next;
@@ -5861,7 +5865,7 @@ static void prune_peers(void)
 			peerlast = peer;
 		peer=peernext;
 	}
-	ast_pthread_mutex_unlock(&peerl.lock);
+	ast_mutex_unlock(&peerl.lock);
 }
 
 int reload(void)
@@ -5876,10 +5880,10 @@ int reload(void)
 	restart_monitor();
 	for (reg = registrations; reg; reg = reg->next) 
 		sip_do_register(reg);
-	ast_pthread_mutex_lock(&peerl.lock);
+	ast_mutex_lock(&peerl.lock);
 	for (peer = peerl.peers; peer; peer = peer->next)
 		sip_poke_peer(peer);
-	ast_pthread_mutex_unlock(&peerl.lock);
+	ast_mutex_unlock(&peerl.lock);
 	return 0;
 }
 
@@ -5889,7 +5893,7 @@ int unload_module()
 	
 	/* First, take us out of the channel loop */
 	ast_channel_unregister(type);
-	if (!ast_pthread_mutex_lock(&iflock)) {
+	if (!ast_mutex_lock(&iflock)) {
 		/* Hangup all interfaces if they have an owner */
 		p = iflist;
 		while(p) {
@@ -5898,25 +5902,25 @@ int unload_module()
 			p = p->next;
 		}
 		iflist = NULL;
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 	} else {
 		ast_log(LOG_WARNING, "Unable to lock the monitor\n");
 		return -1;
 	}
-	if (!ast_pthread_mutex_lock(&monlock)) {
+	if (!ast_mutex_lock(&monlock)) {
 		if (monitor_thread) {
 			pthread_cancel(monitor_thread);
 			pthread_kill(monitor_thread, SIGURG);
 			pthread_join(monitor_thread, NULL);
 		}
 		monitor_thread = -2;
-		ast_pthread_mutex_unlock(&monlock);
+		ast_mutex_unlock(&monlock);
 	} else {
 		ast_log(LOG_WARNING, "Unable to lock the monitor\n");
 		return -1;
 	}
 
-	if (!ast_pthread_mutex_lock(&iflock)) {
+	if (!ast_mutex_lock(&iflock)) {
 		/* Destroy all the interfaces and free their memory */
 		p = iflist;
 		while(p) {
@@ -5926,7 +5930,7 @@ int unload_module()
 			free(pl);
 		}
 		iflist = NULL;
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 	} else {
 		ast_log(LOG_WARNING, "Unable to lock the monitor\n");
 		return -1;
@@ -5938,9 +5942,9 @@ int unload_module()
 int usecount()
 {
 	int res;
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	res = usecnt;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	return res;
 }
 
diff --git a/channels/chan_vofr.c b/channels/chan_vofr.c
index 4cbc71f2b901de3a2e8cb70f8c301ad590e5dc6b..37d8a1f525466d0124c78bd0acef8e04ba5787ea 100755
--- a/channels/chan_vofr.c
+++ b/channels/chan_vofr.c
@@ -53,14 +53,14 @@ static char context[AST_MAX_EXTENSION] = "default";
 static char language[MAX_LANGUAGE] = "";
 
 static int usecnt =0;
-static pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
 
 /* Protect the interface list (of vofr_pvt's) */
-static pthread_mutex_t iflock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t iflock = AST_MUTEX_INITIALIZER;
 
 /* Protect the monitoring thread, so only one process can kill or start it, and not
    when it's doing something critical. */
-static pthread_mutex_t monlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t monlock = AST_MUTEX_INITIALIZER;
 
 /* This is the thread for the monitor which checks for input on the channels
    which are not currently in use.  */
@@ -457,11 +457,11 @@ static int vofr_hangup(struct ast_channel *ast)
 	ast->state = AST_STATE_DOWN;
 	((struct vofr_pvt *)(ast->pvt->pvt))->owner = NULL;
 	((struct vofr_pvt *)(ast->pvt->pvt))->ringgothangup = 0;
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	usecnt--;
 	if (usecnt < 0) 
 		ast_log(LOG_WARNING, "Usecnt < 0???\n");
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	ast_update_use_count();
 	if (option_verbose > 2) 
 		ast_verbose( VERBOSE_PREFIX_3 "Hungup '%s'\n", ast->name);
@@ -826,9 +826,9 @@ static struct ast_channel *vofr_new(struct vofr_pvt *i, int state)
 		if (strlen(i->language))
 			strncpy(tmp->language, i->language, sizeof(tmp->language)-1);
 		i->owner = tmp;
-		ast_pthread_mutex_lock(&usecnt_lock);
+		ast_mutex_lock(&usecnt_lock);
 		usecnt++;
-		ast_pthread_mutex_unlock(&usecnt_lock);
+		ast_mutex_unlock(&usecnt_lock);
 		ast_update_use_count();
 		strncpy(tmp->context, i->context, sizeof(tmp->context)-1);
 		if (state != AST_STATE_DOWN) {
@@ -916,14 +916,14 @@ static void *do_monitor(void *data)
 	for(;;) {
 		/* Don't let anybody kill us right away.  Nobody should lock the interface list
 		   and wait for the monitor list, but the other way around is okay. */
-		if (ast_pthread_mutex_lock(&monlock)) {
+		if (ast_mutex_lock(&monlock)) {
 			ast_log(LOG_ERROR, "Unable to grab monitor lock\n");
 			return NULL;
 		}
 		/* Lock the interface list */
-		if (ast_pthread_mutex_lock(&iflock)) {
+		if (ast_mutex_lock(&iflock)) {
 			ast_log(LOG_ERROR, "Unable to grab interface lock\n");
-			ast_pthread_mutex_unlock(&monlock);
+			ast_mutex_unlock(&monlock);
 			return NULL;
 		}
 		/* Build the stuff we're going to select on, that is the socket of every
@@ -947,10 +947,10 @@ static void *do_monitor(void *data)
 			i = i->next;
 		}
 		/* Okay, now that we know what to do, release the interface lock */
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 		
 		/* And from now on, we're okay to be killed, so release the monitor lock as well */
-		ast_pthread_mutex_unlock(&monlock);
+		ast_mutex_unlock(&monlock);
 		pthread_testcancel();
 		/* Wait indefinitely for something to happen */
 		res = ast_select(n + 1, &rfds, NULL, NULL, NULL);
@@ -963,7 +963,7 @@ static void *do_monitor(void *data)
 		}
 		/* Alright, lock the interface list again, and let's look and see what has
 		   happened */
-		if (ast_pthread_mutex_lock(&iflock)) {
+		if (ast_mutex_lock(&iflock)) {
 			ast_log(LOG_WARNING, "Unable to lock the interface list\n");
 			continue;
 		}
@@ -987,7 +987,7 @@ static void *do_monitor(void *data)
 			}
 			i=i->next;
 		}
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 	}
 	/* Never reached */
 	return NULL;
@@ -999,12 +999,12 @@ static int restart_monitor(void)
 	/* If we're supposed to be stopped -- stay stopped */
 	if (monitor_thread == -2)
 		return 0;
-	if (ast_pthread_mutex_lock(&monlock)) {
+	if (ast_mutex_lock(&monlock)) {
 		ast_log(LOG_WARNING, "Unable to lock monitor\n");
 		return -1;
 	}
 	if (monitor_thread == pthread_self()) {
-		ast_pthread_mutex_unlock(&monlock);
+		ast_mutex_unlock(&monlock);
 		ast_log(LOG_WARNING, "Cannot kill myself\n");
 		return -1;
 	}
@@ -1014,12 +1014,12 @@ static int restart_monitor(void)
 	} else {
 		/* Start a new monitor */
 		if (pthread_create(&monitor_thread, NULL, do_monitor, NULL) < 0) {
-			ast_pthread_mutex_unlock(&monlock);
+			ast_mutex_unlock(&monlock);
 			ast_log(LOG_ERROR, "Unable to start monitor thread.\n");
 			return -1;
 		}
 	}
-	ast_pthread_mutex_unlock(&monlock);
+	ast_mutex_unlock(&monlock);
 	return 0;
 }
 
@@ -1119,7 +1119,7 @@ static struct ast_channel *vofr_request(char *type, int format, void *data)
 		return NULL;
 	}
 	/* Search for an unowned channel */
-	if (ast_pthread_mutex_lock(&iflock)) {
+	if (ast_mutex_lock(&iflock)) {
 		ast_log(LOG_ERROR, "Unable to lock interface list???\n");
 		return NULL;
 	}
@@ -1131,7 +1131,7 @@ static struct ast_channel *vofr_request(char *type, int format, void *data)
 		}
 		p = p->next;
 	}
-	ast_pthread_mutex_unlock(&iflock);
+	ast_mutex_unlock(&iflock);
 	restart_monitor();
 	return tmp;
 }
@@ -1148,7 +1148,7 @@ int load_module()
 		ast_log(LOG_ERROR, "Unable to load config %s\n", config);
 		return -1;
 	}
-	if (ast_pthread_mutex_lock(&iflock)) {
+	if (ast_mutex_lock(&iflock)) {
 		/* It's a little silly to lock it, but we mind as well just to be sure */
 		ast_log(LOG_ERROR, "Unable to lock interface list???\n");
 		return -1;
@@ -1165,7 +1165,7 @@ int load_module()
 				} else {
 					ast_log(LOG_ERROR, "Unable to register channel '%s'\n", v->value);
 					ast_destroy(cfg);
-					ast_pthread_mutex_unlock(&iflock);
+					ast_mutex_unlock(&iflock);
 					unload_module();
 					return -1;
 				}
@@ -1176,7 +1176,7 @@ int load_module()
 		}
 		v = v->next;
 	}
-	ast_pthread_mutex_unlock(&iflock);
+	ast_mutex_unlock(&iflock);
 	/* Make sure we can register our AdtranVoFR channel type */
 	if (ast_channel_register(type, tdesc, AST_FORMAT_G723_1, vofr_request)) {
 		ast_log(LOG_ERROR, "Unable to register channel class %s\n", type);
@@ -1195,7 +1195,7 @@ int unload_module()
 	struct vofr_pvt *p, *pl;
 	/* First, take us out of the channel loop */
 	ast_channel_unregister(type);
-	if (!ast_pthread_mutex_lock(&iflock)) {
+	if (!ast_mutex_lock(&iflock)) {
 		/* Hangup all interfaces if they have an owner */
 		p = iflist;
 		while(p) {
@@ -1204,25 +1204,25 @@ int unload_module()
 			p = p->next;
 		}
 		iflist = NULL;
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 	} else {
 		ast_log(LOG_WARNING, "Unable to lock the monitor\n");
 		return -1;
 	}
-	if (!ast_pthread_mutex_lock(&monlock)) {
+	if (!ast_mutex_lock(&monlock)) {
 		if (monitor_thread) {
 			pthread_cancel(monitor_thread);
 			pthread_kill(monitor_thread, SIGURG);
 			pthread_join(monitor_thread, NULL);
 		}
 		monitor_thread = -2;
-		ast_pthread_mutex_unlock(&monlock);
+		ast_mutex_unlock(&monlock);
 	} else {
 		ast_log(LOG_WARNING, "Unable to lock the monitor\n");
 		return -1;
 	}
 
-	if (!ast_pthread_mutex_lock(&iflock)) {
+	if (!ast_mutex_lock(&iflock)) {
 		/* Destroy all the interfaces and free their memory */
 		p = iflist;
 		while(p) {
@@ -1235,7 +1235,7 @@ int unload_module()
 			free(pl);
 		}
 		iflist = NULL;
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 	} else {
 		ast_log(LOG_WARNING, "Unable to lock the monitor\n");
 		return -1;
@@ -1247,9 +1247,9 @@ int unload_module()
 int usecount()
 {
 	int res;
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	res = usecnt;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	return res;
 }
 
diff --git a/channels/chan_vpb.c b/channels/chan_vpb.c
index 7c7353bab2a5172013af6a97cc78f4fb9a6f4046..74f6c4ea8d0805d2132ebc7deb2348565adb8797 100755
--- a/channels/chan_vpb.c
+++ b/channels/chan_vpb.c
@@ -71,14 +71,14 @@ static int silencesupression = 0;
 
 static const int prefformat = AST_FORMAT_ALAW | AST_FORMAT_SLINEAR | AST_FORMAT_ULAW | AST_FORMAT_ADPCM;
 
-static pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
 
 /* Protect the interface list (of vpb_pvt's) */
-static pthread_mutex_t iflock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t iflock = AST_MUTEX_INITIALIZER;
 
 /* Protect the monitoring thread, so only one process can kill or start it, and not
    when it's doing something critical. */
-static pthread_mutex_t monlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t monlock = AST_MUTEX_INITIALIZER;
 
 /* This is the thread for the monitor which checks for input on the channels
    which are not currently in use.  */
@@ -110,11 +110,11 @@ static struct vpb_bridge_t {
      struct ast_frame **fo;
      int flags;
      
-     pthread_mutex_t lock;
+     ast_mutex_t lock;
      pthread_cond_t cond;
 } bridges[VPB_MAX_BRIDGES]; /* Bridges...*/
 
-static pthread_mutex_t bridge_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t bridge_lock = AST_MUTEX_INITIALIZER;
 
 static struct vpb_pvt {
 
@@ -148,7 +148,7 @@ static struct vpb_pvt {
     
      int lastgrunt;
 
-     pthread_mutex_t lock;
+     ast_mutex_t lock;
 
     int stopreads; /* Stop reading...*/
      pthread_t readthread;    /* For monitoring read channel. One per owned channel. */
@@ -166,7 +166,7 @@ static int vpb_bridge(struct ast_channel *c0, struct ast_channel *c1, int flags,
      
      /* Bridge channels, check if we can.  I believe we always can, so find a slot.*/
      
-     ast_pthread_mutex_lock(&bridge_lock); {
+     ast_mutex_lock(&bridge_lock); {
 	  for (i = 0; i < len; i++) 
 	       if (!bridges[i].inuse)
 		    break;
@@ -180,7 +180,7 @@ static int vpb_bridge(struct ast_channel *c0, struct ast_channel *c1, int flags,
 	       pthread_mutex_init(&bridges[i].lock, NULL);
 	       pthread_cond_init(&bridges[i].cond, NULL);
 	  } 	       
-     } ast_pthread_mutex_unlock(&bridge_lock); 
+     } ast_mutex_unlock(&bridge_lock); 
 
      if (i == len) {
 	  ast_log(LOG_WARNING, "Failed to bridge %s and %s!\n", c0->name, c1->name);
@@ -188,13 +188,13 @@ static int vpb_bridge(struct ast_channel *c0, struct ast_channel *c1, int flags,
      } else {
 
 	  /* Set bridge pointers. You don't want to take these locks while holding bridge lock.*/
-	  ast_pthread_mutex_lock(&p0->lock); {
+	  ast_mutex_lock(&p0->lock); {
 	       p0->bridge = &bridges[i];
-	  } ast_pthread_mutex_unlock(&p0->lock);
+	  } ast_mutex_unlock(&p0->lock);
 
-	  ast_pthread_mutex_lock(&p1->lock); {
+	  ast_mutex_lock(&p1->lock); {
 	       p1->bridge = &bridges[i];
-	  } ast_pthread_mutex_unlock(&p1->lock);
+	  } ast_mutex_unlock(&p1->lock);
 
 	  if (option_verbose > 4) 
 	       ast_verbose(VERBOSE_PREFIX_3 
@@ -213,19 +213,19 @@ static int vpb_bridge(struct ast_channel *c0, struct ast_channel *c1, int flags,
      vpb_bridge(p0->handle, p1->handle, VPB_BRIDGE_OFF, 0); 
 
      
-     ast_pthread_mutex_lock(&bridge_lock); {
+     ast_mutex_lock(&bridge_lock); {
 	  bridges[i].inuse = 0;
 	  pthread_mutex_destroy(&bridges[i].lock);
 	  pthread_cond_destroy(&bridges[i].cond);	
-     } ast_pthread_mutex_unlock(&bridge_lock); 
+     } ast_mutex_unlock(&bridge_lock); 
      
-     ast_pthread_mutex_lock(&p0->lock); {
+     ast_mutex_lock(&p0->lock); {
 	  p0->bridge = NULL;
-     } ast_pthread_mutex_unlock(&p0->lock);
+     } ast_mutex_unlock(&p0->lock);
      
-     ast_pthread_mutex_lock(&p1->lock); {
+     ast_mutex_lock(&p1->lock); {
 	  p1->bridge = NULL;
-     } ast_pthread_mutex_unlock(&p1->lock);
+     } ast_mutex_unlock(&p1->lock);
 
      
      if (option_verbose > 4) 
@@ -318,7 +318,7 @@ static inline int monitor_handle_owned(struct vpb_pvt *p, VPB_EVENT *e)
 	  ast_verbose(VERBOSE_PREFIX_3 " handle_owned: putting frame: [%d=>%d], bridge=%p\n",
 		      f.frametype, f.subclass, (void *)p->bridge);
 
-     ast_pthread_mutex_lock(&p->lock); {
+     ast_mutex_lock(&p->lock); {
 	  if (p->bridge) { /* Check what happened, see if we need to report it. */
 	       switch (f.frametype) { 
 	       case AST_FRAME_DTMF:
@@ -350,12 +350,12 @@ static inline int monitor_handle_owned(struct vpb_pvt *p, VPB_EVENT *e)
 		    if (p->bridge->rc)
 			 *p->bridge->rc = p->owner;
 		    
-		    ast_pthread_mutex_lock(&p->bridge->lock); {
+		    ast_mutex_lock(&p->bridge->lock); {
 			 pthread_cond_signal(&p->bridge->cond);
-		    } ast_pthread_mutex_unlock(&p->bridge->lock); 	       		   
+		    } ast_mutex_unlock(&p->bridge->lock); 	       		   
 	       }	  
 	  }
-     } ast_pthread_mutex_unlock(&p->lock);
+     } ast_mutex_unlock(&p->lock);
      
      if (endbridge) return 0;
      
@@ -450,8 +450,8 @@ static void *do_monitor(void *unused)
 	       goto end_loop;
 	  
 	  str[0] = 0;
-	  ast_pthread_mutex_lock(&monlock),
-	       ast_pthread_mutex_lock(&iflock); {
+	  ast_mutex_lock(&monlock),
+	       ast_mutex_lock(&iflock); {
 	       struct vpb_pvt *p = iflist; /* Find the pvt structure */	      
 		
 	       vpb_translate_event(&e, str);
@@ -480,8 +480,8 @@ static void *do_monitor(void *unused)
 		    monitor_handle_notowned(p, &e);
 	       
 	       done: (void)0;
-	  } ast_pthread_mutex_unlock(&iflock);
-	  ast_pthread_mutex_unlock(&monlock);
+	  } ast_mutex_unlock(&iflock);
+	  ast_mutex_unlock(&monlock);
 	  
      end_loop:
 	  tcounter += VPB_WAIT_TIMEOUT; /* Ok, not quite but will suffice. */
@@ -499,7 +499,7 @@ static int restart_monitor(void)
      /* If we're supposed to be stopped -- stay stopped */
      if (mthreadactive == -2)
 	  return 0;
-     ast_pthread_mutex_lock(&monlock); {
+     ast_mutex_lock(&monlock); {
 	  if (monitor_thread == pthread_self()) {
 	       ast_log(LOG_WARNING, "Cannot kill myself\n");
 	       error = -1;
@@ -531,7 +531,7 @@ static int restart_monitor(void)
 #endif
 	  }
      done: (void)0;
-     } ast_pthread_mutex_unlock(&monlock);
+     } ast_mutex_unlock(&monlock);
      
      return error;
 }
@@ -744,18 +744,18 @@ static int vpb_hangup(struct ast_channel *ast)
 
     ast_setstate(ast,AST_STATE_DOWN);
     
-    ast_pthread_mutex_lock(&p->lock); {    
+    ast_mutex_lock(&p->lock); {    
 	 p->lastinput = p->lastoutput  = -1;
 	 p->ext[0]  = 0;
 	 p->owner = NULL;
 	 p->dialtone = 0;
 	 p->calling = 0;
 	 ast->pvt->pvt = NULL; 	 
-    } ast_pthread_mutex_unlock(&p->lock);
+    } ast_mutex_unlock(&p->lock);
 	 
-    ast_pthread_mutex_lock(&usecnt_lock); {
+    ast_mutex_lock(&usecnt_lock); {
 	usecnt--;
-    } ast_pthread_mutex_unlock(&usecnt_lock);
+    } ast_mutex_unlock(&usecnt_lock);
     ast_update_use_count();
 
     /* Stop thread doing reads. */
@@ -913,7 +913,7 @@ static void *do_chanreads(void *pvt)
 	     p->lastinput = fmt;
 	 } 
 
-	 ast_pthread_mutex_lock(&p->lock); {
+	 ast_mutex_lock(&p->lock); {
 	      if (p->bridge) 
 		   if (p->bridge->c0 == p->owner && 
 		       (p->bridge->flags & AST_BRIDGE_REC_CHANNEL_0))
@@ -925,7 +925,7 @@ static void *do_chanreads(void *pvt)
 			bridgerec = 0;
 	      else
 		   bridgerec = 1;
-	 } ast_pthread_mutex_unlock(&p->lock);
+	 } ast_mutex_unlock(&p->lock);
 	 
 	 if (state == AST_STATE_UP && bridgerec) {  
              /* Read only if up and not bridged, or a bridge for which we can read. */
@@ -941,9 +941,9 @@ static void *do_chanreads(void *pvt)
 	      fr->datalen = readlen;
 	      fr->offset = AST_FRIENDLY_OFFSET;
 
-	      ast_pthread_mutex_lock(&p->lock); {    
+	      ast_mutex_lock(&p->lock); {    
 		   if (p->owner) ast_queue_frame(p->owner, fr, 0);
-	      } ast_pthread_mutex_unlock(&p->lock);
+	      } ast_mutex_unlock(&p->lock);
 	 } else 
 	      p->stopreads = 1;
 	 	 
@@ -1009,9 +1009,9 @@ static struct ast_channel *vpb_new(struct vpb_pvt *i, int state, char *context)
 		i->lastinput = i->lastoutput = -1;
 		i->lastgrunt  = tcounter; /* Assume at least one grunt tone seen now. */
 
-		ast_pthread_mutex_lock(&usecnt_lock);
+		ast_mutex_lock(&usecnt_lock);
 		usecnt++;
-		ast_pthread_mutex_unlock(&usecnt_lock);
+		ast_mutex_unlock(&usecnt_lock);
 		ast_update_use_count();
 		if (state != AST_STATE_DOWN) 
 		     if (ast_pbx_start(tmp)) {
@@ -1047,7 +1047,7 @@ static struct ast_channel *vpb_request(char *type, int format, void *data)
      if (!s) 
 	  s = "";
      /* Search for an unowned channel */
-     ast_pthread_mutex_lock(&iflock); {
+     ast_mutex_lock(&iflock); {
 	  p = iflist;
 	  while(p) {
 	       if (strncmp(s, p->dev + 4, sizeof p->dev) == 0) 
@@ -1057,7 +1057,7 @@ static struct ast_channel *vpb_request(char *type, int format, void *data)
 		    }
 	       p = p->next;
 	  }
-     } ast_pthread_mutex_unlock(&iflock);
+     } ast_mutex_unlock(&iflock);
 
 
      if (option_verbose > 2) 
@@ -1114,7 +1114,7 @@ int load_module()
 	
 	vpb_seterrormode(VPB_DEVELOPMENT);
 	
-	ast_pthread_mutex_lock(&iflock); {
+	ast_mutex_lock(&iflock); {
 	     v = ast_variable_browse(cfg, "interfaces");
 	     while(v) {
 		  /* Create the interface list */
@@ -1176,7 +1176,7 @@ int load_module()
 		  gruntdetect_timeout = 1000;
 
 	done: (void)0;
-	} ast_pthread_mutex_unlock(&iflock);
+	} ast_mutex_unlock(&iflock);
 
 	
 	ast_destroy(cfg);
@@ -1205,7 +1205,7 @@ int unload_module()
 	/* First, take us out of the channel loop */
 	ast_channel_unregister(type);
 
-	ast_pthread_mutex_lock(&iflock); {
+	ast_mutex_lock(&iflock); {
 	     /* Hangup all interfaces if they have an owner */
 	     p = iflist;
 	     while(p) {
@@ -1214,17 +1214,17 @@ int unload_module()
 		  p = p->next;
 	     }
 	     iflist = NULL;
-	} ast_pthread_mutex_unlock(&iflock);
+	} ast_mutex_unlock(&iflock);
 
-	ast_pthread_mutex_lock(&monlock); {
+	ast_mutex_lock(&monlock); {
 	     if (mthreadactive > -1) {
 		  pthread_cancel(monitor_thread);
 		  pthread_join(monitor_thread, NULL);
 	     }
 	     mthreadactive = -2;
-	} ast_pthread_mutex_unlock(&monlock);
+	} ast_mutex_unlock(&monlock);
 
-	ast_pthread_mutex_lock(&iflock); {
+	ast_mutex_lock(&iflock); {
 		/* Destroy all the interfaces and free their memory */
 
 		while(iflist) {
@@ -1238,11 +1238,11 @@ int unload_module()
 		     free(p);
 		}
 		iflist = NULL;
-	} ast_pthread_mutex_unlock(&iflock);
+	} ast_mutex_unlock(&iflock);
 	
-	ast_pthread_mutex_lock(&bridge_lock); {
+	ast_mutex_lock(&bridge_lock); {
 	     memset(bridges, 0, sizeof bridges);	     
-	} ast_pthread_mutex_unlock(&bridge_lock);
+	} ast_mutex_unlock(&bridge_lock);
 	pthread_mutex_destroy(&bridge_lock);
 
 	tcounter = 0;
@@ -1253,9 +1253,9 @@ int unload_module()
 int usecount()
 {
 	int res;
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	res = usecnt;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	return res;
 }
 
diff --git a/channels/chan_zap.c b/channels/chan_zap.c
index 382890e054566ed16609d2f1f080f557c28254c0..09a2db606394dc5ff527567f4972e516368b33a9 100755
--- a/channels/chan_zap.c
+++ b/channels/chan_zap.c
@@ -200,14 +200,14 @@ static int gendigittimeout = 8000;
 static int matchdigittimeout = 3000;
 
 static int usecnt =0;
-static pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
 
 /* Protect the interface list (of zt_pvt's) */
-static pthread_mutex_t iflock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t iflock = AST_MUTEX_INITIALIZER;
 
 /* Protect the monitoring thread, so only one process can kill or start it, and not
    when it's doing something critical. */
-static pthread_mutex_t monlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t monlock = AST_MUTEX_INITIALIZER;
 
 /* This is the thread for the monitor which checks for input on the channels
    which are not currently in use.  */
@@ -260,7 +260,7 @@ static int r2prot = -1;
 #ifdef ZAPATA_PRI
 struct zt_pri {
 	pthread_t master;			/* Thread of master */
-	pthread_mutex_t lock;		/* Mutex */
+	ast_mutex_t lock;		/* Mutex */
 	char idleext[AST_MAX_EXTENSION];		/* Where to idle extra calls */
 	char idlecontext[AST_MAX_EXTENSION];		/* What context to use for idle */
 	char idledial[AST_MAX_EXTENSION];		/* What to dial before dumping */
@@ -299,7 +299,7 @@ static int pritype = PRI_CPE;
 
 static inline void pri_rel(struct zt_pri *pri)
 {
-	ast_pthread_mutex_unlock(&pri->lock);
+	ast_mutex_unlock(&pri->lock);
 }
 
 static int switchtype = PRI_SWITCH_NI2;
@@ -337,7 +337,7 @@ struct zt_subchannel {
 #define MAX_SLAVES	4
 
 static struct zt_pvt {
-	pthread_mutex_t lock;
+	ast_mutex_t lock;
 	struct ast_channel *owner;	/* Our current active owner (if applicable) */
 		/* Up to three channels can be associated with this call */
 		
@@ -457,12 +457,12 @@ static inline int pri_grab(struct zt_pvt *pvt, struct zt_pri *pri)
 	int res;
 	/* Grab the lock first */
 	do {
-	    res = pthread_mutex_trylock(&pri->lock);
+	    res = ast_mutex_trylock(&pri->lock);
 		if (res) {
-			ast_pthread_mutex_unlock(&pvt->lock);
+			ast_mutex_unlock(&pvt->lock);
 			/* Release the lock and try again */
 			usleep(1);
-			ast_pthread_mutex_lock(&pvt->lock);
+			ast_mutex_lock(&pvt->lock);
 		}
 	} while(res);
 	/* Then break the select */
@@ -1490,7 +1490,7 @@ static int zt_hangup(struct ast_channel *ast)
 		return 0;
 	}
 	
-	ast_pthread_mutex_lock(&p->lock);
+	ast_mutex_lock(&p->lock);
 	
 	index = zt_get_index(ast, p, 1);
 
@@ -1726,17 +1726,17 @@ static int zt_hangup(struct ast_channel *ast)
 	p->callwaitingrepeat = 0;
 	p->cidcwexpire = 0;
 	ast->pvt->pvt = NULL;
-	ast_pthread_mutex_unlock(&p->lock);
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_unlock(&p->lock);
+	ast_mutex_lock(&usecnt_lock);
 	usecnt--;
 	if (usecnt < 0) 
 		ast_log(LOG_WARNING, "Usecnt < 0???\n");
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	ast_update_use_count();
 	if (option_verbose > 2) 
 		ast_verbose( VERBOSE_PREFIX_3 "Hungup '%s'\n", ast->name);
 
-	ast_pthread_mutex_lock(&iflock);
+	ast_mutex_lock(&iflock);
 	tmp = iflist;
 	prev = NULL;
 	if (p->destroy) {
@@ -1750,7 +1750,7 @@ static int zt_hangup(struct ast_channel *ast)
 			}
 		}
 	}
-	ast_pthread_mutex_unlock(&iflock);
+	ast_mutex_unlock(&iflock);
 	return 0;
 }
 
@@ -1761,13 +1761,13 @@ static int zt_answer(struct ast_channel *ast)
 	int index;
 	int oldstate = ast->_state;
 	ast_setstate(ast, AST_STATE_UP);
-	ast_pthread_mutex_lock(&p->lock);
+	ast_mutex_lock(&p->lock);
 	index = zt_get_index(ast, p, 0);
 	if (index < 0)
 		index = SUB_REAL;
 	/* nothing to do if a radio channel */
 	if (p->radio) {
-		ast_pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return 0;
 	}
 	switch(p->sig) {
@@ -1823,13 +1823,13 @@ static int zt_answer(struct ast_channel *ast)
 		break;
 #endif			
 	case 0:
-		ast_pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return 0;
 	default:
 		ast_log(LOG_WARNING, "Don't know how to answer signalling %d (channel %d)\n", p->sig, p->channel);
 		res = -1;
 	}
-	ast_pthread_mutex_unlock(&p->lock);
+	ast_mutex_unlock(&p->lock);
 	return res;
 }
 
@@ -2061,8 +2061,8 @@ static int zt_bridge(struct ast_channel *c0, struct ast_channel *c1, int flags,
 	/* cant do pseudo-channels here */
 	if ((!p0->sig) || (!p1->sig)) return -2;
 		
-	ast_pthread_mutex_lock(&c0->lock);
-	ast_pthread_mutex_lock(&c1->lock);
+	ast_mutex_lock(&c0->lock);
+	ast_mutex_lock(&c1->lock);
 	op0 = p0 = c0->pvt->pvt;
 	op1 = p1 = c1->pvt->pvt;
 	ofd1 = c0->fds[0];
@@ -2076,12 +2076,12 @@ static int zt_bridge(struct ast_channel *c0, struct ast_channel *c1, int flags,
 
 
 
-	ast_pthread_mutex_lock(&p0->lock);
-	if (pthread_mutex_trylock(&p1->lock)) {
+	ast_mutex_lock(&p0->lock);
+	if (ast_mutex_trylock(&p1->lock)) {
 		/* Don't block, due to potential for deadlock */
-		ast_pthread_mutex_unlock(&p0->lock);
-		ast_pthread_mutex_unlock(&c0->lock);
-		ast_pthread_mutex_unlock(&c1->lock);
+		ast_mutex_unlock(&p0->lock);
+		ast_mutex_unlock(&c0->lock);
+		ast_mutex_unlock(&c1->lock);
 		ast_log(LOG_NOTICE, "Avoiding deadlock...\n");
 		return -3;
 	}
@@ -2184,11 +2184,11 @@ static int zt_bridge(struct ast_channel *c0, struct ast_channel *c1, int flags,
 	t1 = p0->subs[SUB_REAL].inthreeway;
 	t2 = p1->subs[SUB_REAL].inthreeway;
 
-	ast_pthread_mutex_unlock(&p0->lock);
-	ast_pthread_mutex_unlock(&p1->lock);
+	ast_mutex_unlock(&p0->lock);
+	ast_mutex_unlock(&p1->lock);
 
-	ast_pthread_mutex_unlock(&c0->lock);
-	ast_pthread_mutex_unlock(&c1->lock);
+	ast_mutex_unlock(&c0->lock);
+	ast_mutex_unlock(&c1->lock);
 
 	/* Native bridge failed */
 	if ((!master || !slave) && !nothingok) {
@@ -2205,16 +2205,16 @@ static int zt_bridge(struct ast_channel *c0, struct ast_channel *c1, int flags,
 	for (;;) {
 		/* Here's our main loop...  Start by locking things, looking for private parts, 
 		   and then balking if anything is wrong */
-		ast_pthread_mutex_lock(&c0->lock);
-		ast_pthread_mutex_lock(&c1->lock);
+		ast_mutex_lock(&c0->lock);
+		ast_mutex_lock(&c1->lock);
 		p0 = c0->pvt->pvt;
 		p1 = c1->pvt->pvt;
 		if (op0 == p0)
 			i1 = zt_get_index(c0, p0, 1);
 		if (op1 == p1)
 			i2 = zt_get_index(c1, p1, 1);
-		ast_pthread_mutex_unlock(&c0->lock);
-		ast_pthread_mutex_unlock(&c1->lock);
+		ast_mutex_unlock(&c0->lock);
+		ast_mutex_unlock(&c1->lock);
 		if ((op0 != p0) || (op1 != p1) || 
 		    (ofd1 != c0->fds[0]) || 
 			(ofd2 != c1->fds[0]) ||
@@ -2984,7 +2984,7 @@ struct ast_frame *zt_exception(struct ast_channel *ast)
 	int index;
 	struct ast_frame *f;
 
-	ast_pthread_mutex_lock(&p->lock);
+	ast_mutex_lock(&p->lock);
 
 	index = zt_get_index(ast, p, 1);
 	
@@ -3062,7 +3062,7 @@ struct ast_frame *zt_exception(struct ast_channel *ast)
 			ast_log(LOG_WARNING, "Don't know how to absorb event %s\n", event2str(res));
 		}
 		f = &p->subs[index].f;
-		ast_pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return f;
 	}
 	if (!p->radio) ast_log(LOG_DEBUG, "Exception on %d, channel %d\n", ast->fds[0],p->channel);
@@ -3070,11 +3070,11 @@ struct ast_frame *zt_exception(struct ast_channel *ast)
 	if (ast != p->owner) {
 		ast_log(LOG_WARNING, "We're %s, not %s\n", ast->name, p->owner->name);
 		f = &p->subs[index].f;
-		ast_pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return f;
 	}
 	f = zt_handle_event(ast);
-	ast_pthread_mutex_unlock(&p->lock);
+	ast_mutex_unlock(&p->lock);
 	return f;
 }
 
@@ -3087,7 +3087,7 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
 	struct ast_frame *f;
 	
 
-	ast_pthread_mutex_lock(&p->lock);
+	ast_mutex_lock(&p->lock);
 	
 	index = zt_get_index(ast, p, 0);
 	
@@ -3103,7 +3103,7 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
 	/* Hang up if we don't really exist */
 	if (index < 0)	{
 		ast_log(LOG_WARNING, "We dont exist?\n");
-		pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return NULL;
 	}
 	
@@ -3125,11 +3125,11 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
 		{
 			p->subs[index].f.subclass = AST_CONTROL_RADIO_UNKEY;
 		}
-		pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return &p->subs[index].f;
 	}
 	if (p->ringt == 1) {
-		pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return NULL;
 	}
 	else if (p->ringt > 0) 
@@ -3141,7 +3141,7 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
 		p->subs[index].f.frametype = AST_FRAME_CONTROL;
 		p->subs[index].f.subclass = AST_CONTROL_RINGING;
 		ast_setstate(ast, AST_STATE_RINGING);
-		pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return &p->subs[index].f;
 	}
 
@@ -3156,7 +3156,7 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
 		p->subs[index].f.frametype = AST_FRAME_CONTROL;
 		p->subs[index].f.subclass = AST_CONTROL_ANSWER;
 		ast_setstate(ast, AST_STATE_UP);
-		pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return &p->subs[index].f;
 	}	
 	
@@ -3177,7 +3177,7 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
 		}
 	} else {
 		ast_log(LOG_WARNING, "Don't know how to read frames in format %d\n", ast->pvt->rawreadformat);
-		pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return NULL;
 	}
 	readbuf = ((unsigned char *)p->subs[index].buffer) + AST_FRIENDLY_OFFSET;
@@ -3189,18 +3189,18 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
 		if (res == -1)  {
 			if (errno == EAGAIN) {
 				/* Return "NULL" frame if there is nobody there */
-				pthread_mutex_unlock(&p->lock);
+				ast_mutex_unlock(&p->lock);
 				return &p->subs[index].f;
 			} else
 				ast_log(LOG_WARNING, "zt_rec: %s\n", strerror(errno));
 		}
-		pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return NULL;
 	}
 	if (res != (p->subs[index].linear ? READ_SIZE * 2 : READ_SIZE)) {
 		ast_log(LOG_DEBUG, "Short read (%d/%d), must be an event...\n", res, p->subs[index].linear ? READ_SIZE * 2 : READ_SIZE);
 		f = zt_handle_event(ast);
-		pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return f;
 	}
 	if (p->tdd) { /* if in TDD mode, see if we receive that */
@@ -3219,7 +3219,7 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
 			p->subs[index].f.data = p->subs[index].buffer + AST_FRIENDLY_OFFSET;
 			p->subs[index].f.datalen = 1;
 			*((char *) p->subs[index].f.data) = c;
-			pthread_mutex_unlock(&p->lock);
+			ast_mutex_unlock(&p->lock);
 			return &p->subs[index].f;
 		}
 	}
@@ -3354,7 +3354,7 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
 		f = &p->subs[index].f;
 	}
 #endif	
-	pthread_mutex_unlock(&p->lock);
+	ast_mutex_unlock(&p->lock);
 	return f;
 }
 
@@ -3621,9 +3621,9 @@ static struct ast_channel *zt_new(struct zt_pvt *i, int state, int startpbx, int
 		}
 		i->subs[index].owner = tmp;
 		ast_setstate(tmp, state);
-		ast_pthread_mutex_lock(&usecnt_lock);
+		ast_mutex_lock(&usecnt_lock);
 		usecnt++;
-		ast_pthread_mutex_unlock(&usecnt_lock);
+		ast_mutex_unlock(&usecnt_lock);
 		ast_update_use_count();
 		strncpy(tmp->context, i->context, sizeof(tmp->context)-1);
 		/* Copy call forward info */
@@ -4484,7 +4484,7 @@ static void *do_monitor(void *data)
 #endif
 	for(;;) {
 		/* Lock the interface list */
-		if (ast_pthread_mutex_lock(&iflock)) {
+		if (ast_mutex_lock(&iflock)) {
 			ast_log(LOG_ERROR, "Unable to grab interface lock\n");
 			return NULL;
 		}
@@ -4515,7 +4515,7 @@ static void *do_monitor(void *data)
 			i = i->next;
 		}
 		/* Okay, now that we know what to do, release the interface lock */
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 		
 		pthread_testcancel();
 		/* Wait at least a second for something to happen */
@@ -4531,7 +4531,7 @@ static void *do_monitor(void *data)
 		}
 		/* Alright, lock the interface list again, and let's look and see what has
 		   happened */
-		if (ast_pthread_mutex_lock(&iflock)) {
+		if (ast_mutex_lock(&iflock)) {
 			ast_log(LOG_WARNING, "Unable to lock the interface list\n");
 			continue;
 		}
@@ -4649,7 +4649,7 @@ static void *do_monitor(void *data)
 			}
 			i=i->next;
 		}
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 	}
 	/* Never reached */
 	return NULL;
@@ -4664,12 +4664,12 @@ static int restart_monitor(void)
 	/* If we're supposed to be stopped -- stay stopped */
 	if (monitor_thread == -2)
 		return 0;
-	if (ast_pthread_mutex_lock(&monlock)) {
+	if (ast_mutex_lock(&monlock)) {
 		ast_log(LOG_WARNING, "Unable to lock monitor\n");
 		return -1;
 	}
 	if (monitor_thread == pthread_self()) {
-		ast_pthread_mutex_unlock(&monlock);
+		ast_mutex_unlock(&monlock);
 		ast_log(LOG_WARNING, "Cannot kill myself\n");
 		return -1;
 	}
@@ -4685,7 +4685,7 @@ static int restart_monitor(void)
 	} else {
 		/* Start a new monitor */
 		if (pthread_create(&monitor_thread, &attr, do_monitor, NULL) < 0) {
-			ast_pthread_mutex_unlock(&monlock);
+			ast_mutex_unlock(&monlock);
 			ast_log(LOG_ERROR, "Unable to start monitor thread.\n");
 			return -1;
 		}
@@ -4693,7 +4693,7 @@ static int restart_monitor(void)
 #if 0
 	printf("Created thread %ld detached in restart monitor\n", monitor_thread);
 #endif
-	ast_pthread_mutex_unlock(&monlock);
+	ast_mutex_unlock(&monlock);
 	return 0;
 }
 
@@ -5006,7 +5006,7 @@ static struct zt_pvt *mkintf(int channel, int signalling, int radio)
 			tmp->propconfno = -1;
 		}
 		tmp->transfer = transfer;
-		ast_pthread_mutex_init(&tmp->lock);
+		ast_mutex_init(&tmp->lock);
 		strncpy(tmp->language, language, sizeof(tmp->language)-1);
 		strncpy(tmp->musicclass, musicclass, sizeof(tmp->musicclass)-1);
 		strncpy(tmp->context, context, sizeof(tmp->context)-1);
@@ -5211,7 +5211,7 @@ static struct ast_channel *zt_request(char *type, int format, void *data)
 		channelmatch = x;
 	}
 	/* Search for an unowned channel */
-	if (ast_pthread_mutex_lock(&iflock)) {
+	if (ast_mutex_lock(&iflock)) {
 		ast_log(LOG_ERROR, "Unable to lock interface list???\n");
 		return NULL;
 	}
@@ -5270,7 +5270,7 @@ static struct ast_channel *zt_request(char *type, int format, void *data)
 		else
 			p = p->next;
 	}
-	ast_pthread_mutex_unlock(&iflock);
+	ast_mutex_unlock(&iflock);
 	restart_monitor();
 	return tmp;
 }
@@ -5457,7 +5457,7 @@ static void *pri_dchannel(void *vpri)
 		FD_SET(pri->fd, &rfds);
 		FD_SET(pri->fd, &efds);
 		time(&t);
-		ast_pthread_mutex_lock(&pri->lock);
+		ast_mutex_lock(&pri->lock);
 		if (pri->resetting && pri->up) {
 			if (!pri->resetchannel)
 				pri_check_restart(pri);
@@ -5561,12 +5561,12 @@ static void *pri_dchannel(void *vpri)
 			tv.tv_sec = 60;
 			tv.tv_usec = 0;
 		}
-		pthread_mutex_unlock(&pri->lock);
+		ast_mutex_unlock(&pri->lock);
 
 		e = NULL;
 		res = ast_select(pri->fd + 1, &rfds, NULL, &efds, &tv);
 
-		ast_pthread_mutex_lock(&pri->lock);
+		ast_mutex_lock(&pri->lock);
 		if (!res) {
 			/* Just a timeout, run the scheduler */
 			e = pri_schedule_run(pri->pri);
@@ -5606,21 +5606,21 @@ static void *pri_dchannel(void *vpri)
 						if (option_verbose > 2)
 							ast_verbose(VERBOSE_PREFIX_3 "B-channel %d restarted on span %d\n", 
 								chan, pri->span);
-						ast_pthread_mutex_lock(&pri->pvt[chan]->lock);
+						ast_mutex_lock(&pri->pvt[chan]->lock);
 						/* Force soft hangup if appropriate */
 						if (pri->pvt[chan]->owner)
 							pri->pvt[chan]->owner->_softhangup |= AST_SOFTHANGUP_DEV;
-						ast_pthread_mutex_unlock(&pri->pvt[chan]->lock);
+						ast_mutex_unlock(&pri->pvt[chan]->lock);
 					}
 				} else {
 					if (option_verbose > 2)
 						ast_verbose(VERBOSE_PREFIX_2 "Restart on requested on entire span %d\n", pri->span);
 					for (x=1;x <= pri->channels;x++)
 						if ((x != pri->dchannel) && pri->pvt[x]) {
-							ast_pthread_mutex_lock(&pri->pvt[x]->lock);
+							ast_mutex_lock(&pri->pvt[x]->lock);
  							if (pri->pvt[x]->owner)
 								pri->pvt[x]->owner->_softhangup |= AST_SOFTHANGUP_DEV;
-							ast_pthread_mutex_unlock(&pri->pvt[x]->lock);
+							ast_mutex_unlock(&pri->pvt[x]->lock);
 						}
 				}
 				break;
@@ -5876,7 +5876,7 @@ static void *pri_dchannel(void *vpri)
 				if (chan) {
 					chan = pri_fixup(pri, chan, e->hangup.call);
 					if (chan) {
-						ast_pthread_mutex_lock(&pri->pvt[chan]->lock);
+						ast_mutex_lock(&pri->pvt[chan]->lock);
 						if (!pri->pvt[chan]->alreadyhungup) {
 							/* we're calling here zt_hangup so once we get there we need to clear p->call after calling pri_hangup */
 							pri->pvt[chan]->alreadyhungup = 1;
@@ -5894,7 +5894,7 @@ static void *pri_dchannel(void *vpri)
 							pri_reset(pri->pri, chan);
 							pri->pvt[chan]->resetting = 1;
 						}
-						ast_pthread_mutex_unlock(&pri->pvt[chan]->lock);
+						ast_mutex_unlock(&pri->pvt[chan]->lock);
 					} else {
 						ast_log(LOG_WARNING, "Hangup on bad channel %d\n", e->hangup.channel);
 					}
@@ -5915,7 +5915,7 @@ static void *pri_dchannel(void *vpri)
 				if (chan) {
 					chan = pri_fixup(pri, chan, e->hangup.call);
 					if (chan) {
-						ast_pthread_mutex_lock(&pri->pvt[chan]->lock);
+						ast_mutex_lock(&pri->pvt[chan]->lock);
 						if (pri->pvt[chan]->owner) {
 							pri->pvt[chan]->owner->_softhangup |= AST_SOFTHANGUP_DEV;
 							if (option_verbose > 2) 
@@ -5927,7 +5927,7 @@ static void *pri_dchannel(void *vpri)
 							pri_reset(pri->pri, chan);
 							pri->pvt[chan]->resetting = 1;
 						}
-						ast_pthread_mutex_unlock(&pri->pvt[chan]->lock);
+						ast_mutex_unlock(&pri->pvt[chan]->lock);
 					} else {
 						ast_log(LOG_WARNING, "Hangup REQ on bad channel %d\n", e->hangup.channel);
 					}
@@ -5945,14 +5945,14 @@ static void *pri_dchannel(void *vpri)
 				if (chan) {
 					chan = pri_fixup(pri, chan, e->hangup.call);
 					if (chan) {
-						ast_pthread_mutex_lock(&pri->pvt[chan]->lock);
+						ast_mutex_lock(&pri->pvt[chan]->lock);
 						pri->pvt[chan]->call = NULL;
 						pri->pvt[chan]->resetting = 0;
 						if (pri->pvt[chan]->owner) {
 							if (option_verbose > 2) 
 								ast_verbose(VERBOSE_PREFIX_3 "Channel %d, span %d got hangup ACK\n", chan, pri->span);
 						}
-						ast_pthread_mutex_unlock(&pri->pvt[chan]->lock);
+						ast_mutex_unlock(&pri->pvt[chan]->lock);
 					}
 				}
 				break;
@@ -5968,7 +5968,7 @@ static void *pri_dchannel(void *vpri)
 					for (x=1;x<=pri->channels;x++) {
 						if (pri->pvt[x] && pri->pvt[x]->resetting) {
 							chan = x;
-							ast_pthread_mutex_lock(&pri->pvt[chan]->lock);
+							ast_mutex_lock(&pri->pvt[chan]->lock);
 							ast_log(LOG_DEBUG, "Assuming restart ack is really for channel %d span %d\n", chan, pri->span);
 							if (pri->pvt[chan]->owner) {
 								ast_log(LOG_WARNING, "Got restart ack on channel %d with owner\n", chan);
@@ -5977,7 +5977,7 @@ static void *pri_dchannel(void *vpri)
 							pri->pvt[chan]->resetting = 0;
 							if (option_verbose > 2)
 								ast_verbose(VERBOSE_PREFIX_3 "B-channel %d successfully restarted on span %d\n", chan, pri->span);
-							ast_pthread_mutex_unlock(&pri->pvt[chan]->lock);
+							ast_mutex_unlock(&pri->pvt[chan]->lock);
 							if (pri->resetting)
 								pri_check_restart(pri);
 							break;
@@ -5993,7 +5993,7 @@ static void *pri_dchannel(void *vpri)
 				}
 				if ((chan >= 1) && (chan <= pri->channels)) {
 					if (pri->pvt[chan]) {
-						ast_pthread_mutex_lock(&pri->pvt[chan]->lock);
+						ast_mutex_lock(&pri->pvt[chan]->lock);
 						if (pri->pvt[chan]->owner) {
 							ast_log(LOG_WARNING, "Got restart ack on channel %d with owner\n", chan);
 							pri->pvt[chan]->owner->_softhangup |= AST_SOFTHANGUP_DEV;
@@ -6001,7 +6001,7 @@ static void *pri_dchannel(void *vpri)
 						pri->pvt[chan]->resetting = 0;
 						if (option_verbose > 2)
 							ast_verbose(VERBOSE_PREFIX_3 "B-channel %d successfully restarted on span %d\n", chan, pri->span);
-						ast_pthread_mutex_unlock(&pri->pvt[chan]->lock);
+						ast_mutex_unlock(&pri->pvt[chan]->lock);
 						if (pri->resetting)
 							pri_check_restart(pri);
 					}
@@ -6031,7 +6031,7 @@ static void *pri_dchannel(void *vpri)
 			if (option_debug)
 				ast_log(LOG_DEBUG, "Got event %s (%d) on D-channel for span %d\n", event2str(x), x, pri->span);
 		}
-		pthread_mutex_unlock(&pri->lock);
+		ast_mutex_unlock(&pri->lock);
 	}
 	/* Never reached */
 	return NULL;
@@ -6302,7 +6302,7 @@ static int zap_show_channels(int fd, int argc, char **argv)
 	if (argc != 3)
 		return RESULT_SHOWUSAGE;
 
-	ast_pthread_mutex_lock(&iflock);
+	ast_mutex_lock(&iflock);
 	ast_cli(fd, FORMAT2, "Chan. Num.", "Extension", "Context", "Language", "MusicOnHold");
 	
 	tmp = iflist;
@@ -6310,7 +6310,7 @@ static int zap_show_channels(int fd, int argc, char **argv)
 		ast_cli(fd, FORMAT, tmp->channel, tmp->exten, tmp->context, tmp->language, tmp->musicclass);
 		tmp = tmp->next;
 	}
-	ast_pthread_mutex_unlock(&iflock);
+	ast_mutex_unlock(&iflock);
 	return RESULT_SUCCESS;
 #undef FORMAT
 #undef FORMAT2
@@ -6327,7 +6327,7 @@ static int zap_show_channel(int fd, int argc, char **argv)
 		return RESULT_SHOWUSAGE;
 	channel = atoi(argv[3]);
 
-	ast_pthread_mutex_lock(&iflock);
+	ast_mutex_lock(&iflock);
 	tmp = iflist;
 	while (tmp) {
 		if (tmp->channel == channel) {
@@ -6392,14 +6392,14 @@ static int zap_show_channel(int fd, int argc, char **argv)
 				ast_cli(fd, "Actual Confmute: %s\n", x ? "Yes" : "No");
 			}
 #endif
-			ast_pthread_mutex_unlock(&iflock);
+			ast_mutex_unlock(&iflock);
 			return RESULT_SUCCESS;
 		}
 		tmp = tmp->next;
 	}
 	
 	ast_cli(fd, "Unable to find given channel %d\n", channel);
-	ast_pthread_mutex_unlock(&iflock);
+	ast_mutex_unlock(&iflock);
 	return RESULT_FAILURE;
 }
 
@@ -6457,7 +6457,7 @@ int load_module()
 	}
 	
 
-	if (ast_pthread_mutex_lock(&iflock)) {
+	if (ast_mutex_lock(&iflock)) {
 		/* It's a little silly to lock it, but we mind as well just to be sure */
 		ast_log(LOG_ERROR, "Unable to lock interface list???\n");
 		return -1;
@@ -6469,7 +6469,7 @@ int load_module()
 			if (cur_signalling < 0) {
 				ast_log(LOG_ERROR, "Signalling must be specified before any channels are.\n");
 				ast_destroy(cfg);
-				ast_pthread_mutex_unlock(&iflock);
+				ast_mutex_unlock(&iflock);
 				unload_module();
 				return -1;
 			}
@@ -6486,7 +6486,7 @@ int load_module()
 				} else {
 					ast_log(LOG_ERROR, "Syntax error parsing '%s' at '%s'\n", v->value, chan);
 					ast_destroy(cfg);
-					ast_pthread_mutex_unlock(&iflock);
+					ast_mutex_unlock(&iflock);
 					unload_module();
 					return -1;
 				}
@@ -6504,7 +6504,7 @@ int load_module()
 					} else {
 						ast_log(LOG_ERROR, "Unable to register channel '%s'\n", v->value);
 						ast_destroy(cfg);
-						ast_pthread_mutex_unlock(&iflock);
+						ast_mutex_unlock(&iflock);
 						unload_module();
 						return -1;
 					}
@@ -6738,7 +6738,7 @@ int load_module()
 			else {
 				ast_log(LOG_ERROR, "Unknown switchtype '%s'\n", v->value);
 				ast_destroy(cfg);
-				ast_pthread_mutex_unlock(&iflock);
+				ast_mutex_unlock(&iflock);
 				unload_module();
 				return -1;
 			}
@@ -6755,7 +6755,7 @@ int load_module()
 			ast_log(LOG_WARNING, "Ignoring %s\n", v->name);
 		v = v->next;
 	}
-	ast_pthread_mutex_unlock(&iflock);
+	ast_mutex_unlock(&iflock);
 	/* Make sure we can register our Zap channel type */
 	if (ast_channel_register(type, tdesc, AST_FORMAT_SLINEAR |  AST_FORMAT_ULAW, zt_request)) {
 		ast_log(LOG_ERROR, "Unable to register channel class %s\n", type);
@@ -6814,7 +6814,7 @@ int unload_module()
 	ast_cli_unregister(&cli_show_channels);
 	ast_cli_unregister(&cli_show_channel);
 	ast_cli_unregister(&cli_destroy_channel);
-	if (!ast_pthread_mutex_lock(&iflock)) {
+	if (!ast_mutex_lock(&iflock)) {
 		/* Hangup all interfaces if they have an owner */
 		p = iflist;
 		while(p) {
@@ -6823,25 +6823,25 @@ int unload_module()
 			p = p->next;
 		}
 		iflist = NULL;
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 	} else {
 		ast_log(LOG_WARNING, "Unable to lock the monitor\n");
 		return -1;
 	}
-	if (!ast_pthread_mutex_lock(&monlock)) {
+	if (!ast_mutex_lock(&monlock)) {
 		if (monitor_thread) {
 			pthread_cancel(monitor_thread);
 			pthread_kill(monitor_thread, SIGURG);
 			pthread_join(monitor_thread, NULL);
 		}
 		monitor_thread = -2;
-		ast_pthread_mutex_unlock(&monlock);
+		ast_mutex_unlock(&monlock);
 	} else {
 		ast_log(LOG_WARNING, "Unable to lock the monitor\n");
 		return -1;
 	}
 
-	if (!ast_pthread_mutex_lock(&iflock)) {
+	if (!ast_mutex_lock(&iflock)) {
 		/* Destroy all the interfaces and free their memory */
 		p = iflist;
 		while(p) {
@@ -6857,7 +6857,7 @@ int unload_module()
 			free(pl);
 		}
 		iflist = NULL;
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 	} else {
 		ast_log(LOG_WARNING, "Unable to lock the monitor\n");
 		return -1;
@@ -6937,7 +6937,7 @@ static int reload_zt(void)
 	}
 	
 
-	if (ast_pthread_mutex_lock(&iflock)) {
+	if (ast_mutex_lock(&iflock)) {
 		/* It's a little silly to lock it, but we mind as well just to be sure */
 		ast_log(LOG_ERROR, "Unable to lock interface list???\n");
 		return -1;
@@ -6959,7 +6959,7 @@ static int reload_zt(void)
 			if (cur_signalling < 0) {
 				ast_log(LOG_ERROR, "Signalling must be specified before any channels are.\n");
 				ast_destroy(cfg);
-				ast_pthread_mutex_unlock(&iflock);
+				ast_mutex_unlock(&iflock);
 				return -1;
 			}
 			stringp=v->value;
@@ -6973,7 +6973,7 @@ static int reload_zt(void)
 				} else {
 					ast_log(LOG_ERROR, "Syntax error parsing '%s' at '%s'\n", v->value, chan);
 					ast_destroy(cfg);
-					ast_pthread_mutex_unlock(&iflock);
+					ast_mutex_unlock(&iflock);
 					return -1;
 				}
 				if (finish < start) {
@@ -6990,7 +6990,7 @@ static int reload_zt(void)
 					} else {
 						ast_log(LOG_ERROR, "Unable to register channel '%s'\n", v->value);
 						ast_destroy(cfg);
-						ast_pthread_mutex_unlock(&iflock);
+						ast_mutex_unlock(&iflock);
 						return -1;
 					}
 				}
@@ -7094,7 +7094,7 @@ static int reload_zt(void)
 			else {
 				ast_log(LOG_ERROR, "Unknown switchtype '%s'\n", v->value);
 				ast_destroy(cfg);
-				ast_pthread_mutex_unlock(&iflock);
+				ast_mutex_unlock(&iflock);
 				return -1;
 			}
 		} else if (!strcasecmp(v->name, "minunused")) {
@@ -7116,7 +7116,7 @@ static int reload_zt(void)
 		if (tmp->destroy) {
 			if (destroy_channel(prev, tmp, 0)) {
 				ast_log(LOG_ERROR, "Unable to destroy chan_zap channel %d\n", tmp->channel);
-				ast_pthread_mutex_unlock(&iflock);
+				ast_mutex_unlock(&iflock);
 				return -1;
 			}
 			tmp = tmp->next;
@@ -7126,7 +7126,7 @@ static int reload_zt(void)
 		}
 	}
 
-	ast_pthread_mutex_unlock(&iflock);
+	ast_mutex_unlock(&iflock);
 
 	ast_destroy(cfg);
 #if 0
@@ -7270,9 +7270,9 @@ int reload(void)
 int usecount()
 {
 	int res;
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	res = usecnt;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	return res;
 }
 
diff --git a/channels/chan_zap_old.c b/channels/chan_zap_old.c
index 79324cadfc75465db83baad782ebafc913e1c570..c81b6e5c6ed48fdbe00012880ded754b19cd51ae 100755
--- a/channels/chan_zap_old.c
+++ b/channels/chan_zap_old.c
@@ -188,14 +188,14 @@ static int gendigittimeout = 8000;
 static int matchdigittimeout = 3000;
 
 static int usecnt =0;
-static pthread_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t usecnt_lock = AST_MUTEX_INITIALIZER;
 
 /* Protect the interface list (of zt_pvt's) */
-static pthread_mutex_t iflock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t iflock = AST_MUTEX_INITIALIZER;
 
 /* Protect the monitoring thread, so only one process can kill or start it, and not
    when it's doing something critical. */
-static pthread_mutex_t monlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t monlock = AST_MUTEX_INITIALIZER;
 
 /* This is the thread for the monitor which checks for input on the channels
    which are not currently in use.  */
@@ -245,7 +245,7 @@ static int r2prot = -1;
 #ifdef ZAPATA_PRI
 struct zt_pri {
 	pthread_t master;			/* Thread of master */
-	pthread_mutex_t lock;		/* Mutex */
+	ast_mutex_t lock;		/* Mutex */
 	char idleext[AST_MAX_EXTENSION];		/* Where to idle extra calls */
 	char idlecontext[AST_MAX_EXTENSION];		/* What context to use for idle */
 	char idledial[AST_MAX_EXTENSION];		/* What to dial before dumping */
@@ -285,7 +285,7 @@ static inline int pri_grab(struct zt_pri *pri)
 {
 	int res;
 	/* Grab the lock first */
-    res = ast_pthread_mutex_lock(&pri->lock);
+    res = ast_mutex_lock(&pri->lock);
 	if (res)
 		return res;
 	/* Then break the select */
@@ -295,7 +295,7 @@ static inline int pri_grab(struct zt_pri *pri)
 
 static inline void pri_rel(struct zt_pri *pri)
 {
-	ast_pthread_mutex_unlock(&pri->lock);
+	ast_mutex_unlock(&pri->lock);
 }
 
 static int switchtype = PRI_SWITCH_NI2;
@@ -334,7 +334,7 @@ struct zt_subchannel {
 #define MAX_SLAVES	4
 
 static struct zt_pvt {
-	pthread_mutex_t lock;
+	ast_mutex_t lock;
 	struct ast_channel *owner;	/* Our current active owner (if applicable) */
 		/* Up to three channels can be associated with this call */
 		
@@ -1502,16 +1502,16 @@ static int zt_hangup(struct ast_channel *ast)
 	p->callwaitingrepeat = 0;
 	ast->pvt->pvt = NULL;
 	ast_setstate(ast, AST_STATE_DOWN);
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	usecnt--;
 	if (usecnt < 0) 
 		ast_log(LOG_WARNING, "Usecnt < 0???\n");
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	ast_update_use_count();
 	if (option_verbose > 2) 
 		ast_verbose( VERBOSE_PREFIX_3 "Hungup '%s'\n", ast->name);
 
-	ast_pthread_mutex_lock(&iflock);
+	ast_mutex_lock(&iflock);
 	tmp = iflist;
 	prev = NULL;
 	if (p->destroy) {
@@ -1525,7 +1525,7 @@ static int zt_hangup(struct ast_channel *ast)
 			}
 		}
 	}
-	ast_pthread_mutex_unlock(&iflock);
+	ast_mutex_unlock(&iflock);
 	return 0;
 }
 
@@ -1809,8 +1809,8 @@ static int zt_bridge(struct ast_channel *c0, struct ast_channel *c1, int flags,
 	/* cant do pseudo-channels here */
 	if ((!p0->sig) || (!p1->sig)) return -2;
 
-	ast_pthread_mutex_lock(&c0->lock);
-	ast_pthread_mutex_lock(&c1->lock);
+	ast_mutex_lock(&c0->lock);
+	ast_mutex_lock(&c1->lock);
 	op0 = p0 = c0->pvt->pvt;
 	op1 = p1 = c1->pvt->pvt;
 	ofd1 = c0->fds[0];
@@ -1824,12 +1824,12 @@ static int zt_bridge(struct ast_channel *c0, struct ast_channel *c1, int flags,
 
 
 
-	ast_pthread_mutex_lock(&p0->lock);
-	if (pthread_mutex_trylock(&p1->lock)) {
+	ast_mutex_lock(&p0->lock);
+	if (ast_mutex_trylock(&p1->lock)) {
 		/* Don't block, due to potential for deadlock */
-		ast_pthread_mutex_unlock(&p0->lock);
-		ast_pthread_mutex_unlock(&c0->lock);
-		ast_pthread_mutex_unlock(&c1->lock);
+		ast_mutex_unlock(&p0->lock);
+		ast_mutex_unlock(&c0->lock);
+		ast_mutex_unlock(&c1->lock);
 		ast_log(LOG_NOTICE, "Avoiding deadlock...\n");
 		return -3;
 	}
@@ -1923,11 +1923,11 @@ static int zt_bridge(struct ast_channel *c0, struct ast_channel *c1, int flags,
 	t1 = p0->subs[SUB_REAL].inthreeway;
 	t2 = p1->subs[SUB_REAL].inthreeway;
 
-	ast_pthread_mutex_unlock(&p0->lock);
-	ast_pthread_mutex_unlock(&p1->lock);
+	ast_mutex_unlock(&p0->lock);
+	ast_mutex_unlock(&p1->lock);
 
-	ast_pthread_mutex_unlock(&c0->lock);
-	ast_pthread_mutex_unlock(&c1->lock);
+	ast_mutex_unlock(&c0->lock);
+	ast_mutex_unlock(&c1->lock);
 
 	/* Native bridge failed */
 	if ((!master || !slave) && !nothingok)
@@ -1939,16 +1939,16 @@ static int zt_bridge(struct ast_channel *c0, struct ast_channel *c1, int flags,
 	for (;;) {
 		/* Here's our main loop...  Start by locking things, looking for private parts, 
 		   and then balking if anything is wrong */
-		ast_pthread_mutex_lock(&c0->lock);
-		ast_pthread_mutex_lock(&c1->lock);
+		ast_mutex_lock(&c0->lock);
+		ast_mutex_lock(&c1->lock);
 		p0 = c0->pvt->pvt;
 		p1 = c1->pvt->pvt;
 		if (op0 == p0)
 			i1 = zt_get_index(c0, p0, 1);
 		if (op1 == p1)
 			i2 = zt_get_index(c1, p1, 1);
-		ast_pthread_mutex_unlock(&c0->lock);
-		ast_pthread_mutex_unlock(&c1->lock);
+		ast_mutex_unlock(&c0->lock);
+		ast_mutex_unlock(&c1->lock);
 		if ((op0 != p0) || (op1 != p1) || 
 		    (ofd1 != c0->fds[0]) || 
 			(ofd2 != c1->fds[0]) ||
@@ -2709,7 +2709,7 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
 	struct ast_frame *f;
 	
 
-	ast_pthread_mutex_lock(&p->lock);
+	ast_mutex_lock(&p->lock);
 	
 	index = zt_get_index(ast, p, 0);
 	
@@ -2725,7 +2725,7 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
 	/* Hang up if we don't really exist */
 	if (index < 0)	{
 		ast_log(LOG_WARNING, "We dont exist?\n");
-		pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return NULL;
 	}
 	
@@ -2747,11 +2747,11 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
 		{
 			p->subs[index].f.subclass = AST_CONTROL_RADIO_UNKEY;
 		}
-		pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return &p->subs[index].f;
 	}
 	if (p->ringt == 1) {
-		pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return NULL;
 	}
 	else if (p->ringt > 0) 
@@ -2763,7 +2763,7 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
 		p->subs[index].f.frametype = AST_FRAME_CONTROL;
 		p->subs[index].f.subclass = AST_CONTROL_RINGING;
 		ast_setstate(ast, AST_STATE_RINGING);
-		pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return &p->subs[index].f;
 	}
 
@@ -2778,7 +2778,7 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
 		p->subs[index].f.frametype = AST_FRAME_CONTROL;
 		p->subs[index].f.subclass = AST_CONTROL_ANSWER;
 		ast_setstate(ast, AST_STATE_UP);
-		pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return &p->subs[index].f;
 	}	
 	
@@ -2822,7 +2822,7 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
 			p->subs[index].f.subclass = AST_CONTROL_ANSWER;
 			ast_setstate(ast, AST_STATE_UP);
 		}
-		pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return &p->subs[index].f;
 	}
 	
@@ -2843,7 +2843,7 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
 		}
 	} else {
 		ast_log(LOG_WARNING, "Don't know how to read frames in format %d\n", ast->pvt->rawreadformat);
-		pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return NULL;
 	}
 	readbuf = ((unsigned char *)p->subs[index].buffer) + AST_FRIENDLY_OFFSET;
@@ -2854,7 +2854,7 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
 	if (res < 0) {
 		if (res == -1) 
 			ast_log(LOG_WARNING, "zt_rec: %s\n", strerror(errno));
-		pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return NULL;
 	}
 	if (res != READ_SIZE) {
@@ -2884,7 +2884,7 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
 					}
 					p->callwaitcas = 0;
 					/* Return NULL */
-					pthread_mutex_unlock(&p->lock);
+					ast_mutex_unlock(&p->lock);
 					return &p->subs[index].f;
 				} else {
 					strncpy(p->subs[index].dtmfq + strlen(p->subs[index].dtmfq), zap_dtmfbuf(p->subs[index].z), sizeof(p->subs[index].dtmfq) - strlen(p->subs[index].dtmfq)-1);
@@ -2892,7 +2892,7 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
 				}
 			}
 		} else {
-			pthread_mutex_unlock(&p->lock);
+			ast_mutex_unlock(&p->lock);
 			return zt_handle_event(ast);
 		}
 		if (strlen(p->subs[index].dtmfq)) {
@@ -2916,12 +2916,12 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
 						ast_log(LOG_DEBUG, "Fax already handled\n");
 				p->subs[index].f.frametype = AST_FRAME_NULL;
 				p->subs[index].f.subclass = 0;
-				pthread_mutex_unlock(&p->lock);
+				ast_mutex_unlock(&p->lock);
 				return &p->subs[index].f;
 			}
 			p->subs[index].f.frametype = AST_FRAME_DTMF;
 		}
-		pthread_mutex_unlock(&p->lock);
+		ast_mutex_unlock(&p->lock);
 		return &p->subs[index].f;
 	}
 	if (p->tdd) { /* if in TDD mode, see if we receive that */
@@ -2940,7 +2940,7 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
 			p->subs[index].f.data = p->subs[index].buffer + AST_FRIENDLY_OFFSET;
 			p->subs[index].f.datalen = 1;
 			*((char *) p->subs[index].f.data) = c;
-			pthread_mutex_unlock(&p->lock);
+			ast_mutex_unlock(&p->lock);
 			return &p->subs[index].f;
 		}
 	}
@@ -2998,7 +2998,7 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
 		}
 	} else 
 		f = &p->subs[index].f; 
-	pthread_mutex_unlock(&p->lock);
+	ast_mutex_unlock(&p->lock);
 	return f;
 }
 
@@ -3240,9 +3240,9 @@ static struct ast_channel *zt_new(struct zt_pvt *i, int state, int startpbx, int
 		}
 		i->subs[index].owner = tmp;
 		ast_setstate(tmp, state);
-		ast_pthread_mutex_lock(&usecnt_lock);
+		ast_mutex_lock(&usecnt_lock);
 		usecnt++;
-		ast_pthread_mutex_unlock(&usecnt_lock);
+		ast_mutex_unlock(&usecnt_lock);
 		ast_update_use_count();
 		strncpy(tmp->context, i->context, sizeof(tmp->context)-1);
 		/* Copy call forward info */
@@ -4018,7 +4018,7 @@ static void *do_monitor(void *data)
 #endif
 	for(;;) {
 		/* Lock the interface list */
-		if (ast_pthread_mutex_lock(&iflock)) {
+		if (ast_mutex_lock(&iflock)) {
 			ast_log(LOG_ERROR, "Unable to grab interface lock\n");
 			return NULL;
 		}
@@ -4049,7 +4049,7 @@ static void *do_monitor(void *data)
 			i = i->next;
 		}
 		/* Okay, now that we know what to do, release the interface lock */
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 		
 		pthread_testcancel();
 		/* Wait at least a second for something to happen */
@@ -4065,7 +4065,7 @@ static void *do_monitor(void *data)
 		}
 		/* Alright, lock the interface list again, and let's look and see what has
 		   happened */
-		if (ast_pthread_mutex_lock(&iflock)) {
+		if (ast_mutex_lock(&iflock)) {
 			ast_log(LOG_WARNING, "Unable to lock the interface list\n");
 			continue;
 		}
@@ -4183,7 +4183,7 @@ static void *do_monitor(void *data)
 			}
 			i=i->next;
 		}
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 	}
 	/* Never reached */
 	return NULL;
@@ -4198,12 +4198,12 @@ static int restart_monitor(void)
 	/* If we're supposed to be stopped -- stay stopped */
 	if (monitor_thread == -2)
 		return 0;
-	if (ast_pthread_mutex_lock(&monlock)) {
+	if (ast_mutex_lock(&monlock)) {
 		ast_log(LOG_WARNING, "Unable to lock monitor\n");
 		return -1;
 	}
 	if (monitor_thread == pthread_self()) {
-		ast_pthread_mutex_unlock(&monlock);
+		ast_mutex_unlock(&monlock);
 		ast_log(LOG_WARNING, "Cannot kill myself\n");
 		return -1;
 	}
@@ -4219,7 +4219,7 @@ static int restart_monitor(void)
 	} else {
 		/* Start a new monitor */
 		if (pthread_create(&monitor_thread, &attr, do_monitor, NULL) < 0) {
-			ast_pthread_mutex_unlock(&monlock);
+			ast_mutex_unlock(&monlock);
 			ast_log(LOG_ERROR, "Unable to start monitor thread.\n");
 			return -1;
 		}
@@ -4227,7 +4227,7 @@ static int restart_monitor(void)
 #if 0
 	printf("Created thread %ld detached in restart monitor\n", monitor_thread);
 #endif
-	ast_pthread_mutex_unlock(&monlock);
+	ast_mutex_unlock(&monlock);
 	return 0;
 }
 
@@ -4729,7 +4729,7 @@ static struct ast_channel *zt_request(char *type, int format, void *data)
 		channelmatch = x;
 	}
 	/* Search for an unowned channel */
-	if (ast_pthread_mutex_lock(&iflock)) {
+	if (ast_mutex_lock(&iflock)) {
 		ast_log(LOG_ERROR, "Unable to lock interface list???\n");
 		return NULL;
 	}
@@ -4788,7 +4788,7 @@ static struct ast_channel *zt_request(char *type, int format, void *data)
 		}
 		p = p->next;
 	}
-	ast_pthread_mutex_unlock(&iflock);
+	ast_mutex_unlock(&iflock);
 	restart_monitor();
 	return tmp;
 }
@@ -4992,7 +4992,7 @@ static void *pri_dchannel(void *vpri)
 		FD_SET(pri->fd, &rfds);
 		FD_SET(pri->fd, &efds);
 		time(&t);
-		ast_pthread_mutex_lock(&pri->lock);
+		ast_mutex_lock(&pri->lock);
 		if (pri->resetting && pri->up) {
 			/* Look for a resetable channel and go */
 			if ((t - pri->lastreset) > 0) {
@@ -5111,12 +5111,12 @@ static void *pri_dchannel(void *vpri)
 			tv.tv_sec = 60;
 			tv.tv_usec = 0;
 		}
-		pthread_mutex_unlock(&pri->lock);
+		ast_mutex_unlock(&pri->lock);
 
 		e = NULL;
 		res = ast_select(pri->fd + 1, &rfds, NULL, &efds, &tv);
 
-		ast_pthread_mutex_lock(&pri->lock);
+		ast_mutex_lock(&pri->lock);
 		if (!res) {
 			/* Just a timeout, run the scheduler */
 			e = pri_schedule_run(pri->pri);
@@ -5421,7 +5421,7 @@ static void *pri_dchannel(void *vpri)
 			if (option_debug)
 				ast_log(LOG_DEBUG, "Got event %s (%d) on D-channel for span %d\n", event2str(x), x, pri->span);
 		}
-		pthread_mutex_unlock(&pri->lock);
+		ast_mutex_unlock(&pri->lock);
 	}
 	/* Never reached */
 	return NULL;
@@ -5690,7 +5690,7 @@ static int zap_show_channels(int fd, int argc, char **argv)
 	if (argc != 3)
 		return RESULT_SHOWUSAGE;
 
-	ast_pthread_mutex_lock(&iflock);
+	ast_mutex_lock(&iflock);
 	ast_cli(fd, FORMAT2, "Chan. Num.", "Extension", "Context", "Language", "MusicOnHold");
 	
 	tmp = iflist;
@@ -5698,7 +5698,7 @@ static int zap_show_channels(int fd, int argc, char **argv)
 		ast_cli(fd, FORMAT, tmp->channel, tmp->exten, tmp->context, tmp->language, tmp->musicclass);
 		tmp = tmp->next;
 	}
-	ast_pthread_mutex_unlock(&iflock);
+	ast_mutex_unlock(&iflock);
 	return RESULT_SUCCESS;
 #undef FORMAT
 #undef FORMAT2
@@ -5714,7 +5714,7 @@ static int zap_show_channel(int fd, int argc, char **argv)
 		return RESULT_SHOWUSAGE;
 	channel = atoi(argv[3]);
 
-	ast_pthread_mutex_lock(&iflock);
+	ast_mutex_lock(&iflock);
 	tmp = iflist;
 	while (tmp) {
 		if (tmp->channel == channel) {
@@ -5764,14 +5764,14 @@ static int zap_show_channel(int fd, int argc, char **argv)
 				ast_cli(fd, "\n");
 			}
 #endif
-			ast_pthread_mutex_unlock(&iflock);
+			ast_mutex_unlock(&iflock);
 			return RESULT_SUCCESS;
 		}
 		tmp = tmp->next;
 	}
 	
 	ast_cli(fd, "Unable to find given channel %d\n", channel);
-	ast_pthread_mutex_unlock(&iflock);
+	ast_mutex_unlock(&iflock);
 	return RESULT_FAILURE;
 }
 
@@ -5829,7 +5829,7 @@ int load_module()
 	}
 	
 
-	if (ast_pthread_mutex_lock(&iflock)) {
+	if (ast_mutex_lock(&iflock)) {
 		/* It's a little silly to lock it, but we mind as well just to be sure */
 		ast_log(LOG_ERROR, "Unable to lock interface list???\n");
 		return -1;
@@ -5841,7 +5841,7 @@ int load_module()
 			if (cur_signalling < 0) {
 				ast_log(LOG_ERROR, "Signalling must be specified before any channels are.\n");
 				ast_destroy(cfg);
-				ast_pthread_mutex_unlock(&iflock);
+				ast_mutex_unlock(&iflock);
 				unload_module();
 				return -1;
 			}
@@ -5858,7 +5858,7 @@ int load_module()
 				} else {
 					ast_log(LOG_ERROR, "Syntax error parsing '%s' at '%s'\n", v->value, chan);
 					ast_destroy(cfg);
-					ast_pthread_mutex_unlock(&iflock);
+					ast_mutex_unlock(&iflock);
 					unload_module();
 					return -1;
 				}
@@ -5876,7 +5876,7 @@ int load_module()
 					} else {
 						ast_log(LOG_ERROR, "Unable to register channel '%s'\n", v->value);
 						ast_destroy(cfg);
-						ast_pthread_mutex_unlock(&iflock);
+						ast_mutex_unlock(&iflock);
 						unload_module();
 						return -1;
 					}
@@ -6066,7 +6066,7 @@ int load_module()
 			else {
 				ast_log(LOG_ERROR, "Unknown switchtype '%s'\n", v->value);
 				ast_destroy(cfg);
-				ast_pthread_mutex_unlock(&iflock);
+				ast_mutex_unlock(&iflock);
 				unload_module();
 				return -1;
 			}
@@ -6081,7 +6081,7 @@ int load_module()
 			ast_log(LOG_DEBUG, "Ignoring %s\n", v->name);
 		v = v->next;
 	}
-	ast_pthread_mutex_unlock(&iflock);
+	ast_mutex_unlock(&iflock);
 	/* Make sure we can register our Zap channel type */
 	if (ast_channel_register(type, tdesc, AST_FORMAT_SLINEAR |  AST_FORMAT_ULAW, zt_request)) {
 		ast_log(LOG_ERROR, "Unable to register channel class %s\n", type);
@@ -6140,7 +6140,7 @@ int unload_module()
 	ast_cli_unregister(&cli_show_channels);
 	ast_cli_unregister(&cli_show_channel);
 	ast_cli_unregister(&cli_destroy_channel);
-	if (!ast_pthread_mutex_lock(&iflock)) {
+	if (!ast_mutex_lock(&iflock)) {
 		/* Hangup all interfaces if they have an owner */
 		p = iflist;
 		while(p) {
@@ -6149,25 +6149,25 @@ int unload_module()
 			p = p->next;
 		}
 		iflist = NULL;
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 	} else {
 		ast_log(LOG_WARNING, "Unable to lock the monitor\n");
 		return -1;
 	}
-	if (!ast_pthread_mutex_lock(&monlock)) {
+	if (!ast_mutex_lock(&monlock)) {
 		if (monitor_thread) {
 			pthread_cancel(monitor_thread);
 			pthread_kill(monitor_thread, SIGURG);
 			pthread_join(monitor_thread, NULL);
 		}
 		monitor_thread = -2;
-		ast_pthread_mutex_unlock(&monlock);
+		ast_mutex_unlock(&monlock);
 	} else {
 		ast_log(LOG_WARNING, "Unable to lock the monitor\n");
 		return -1;
 	}
 
-	if (!ast_pthread_mutex_lock(&iflock)) {
+	if (!ast_mutex_lock(&iflock)) {
 		/* Destroy all the interfaces and free their memory */
 		p = iflist;
 		while(p) {
@@ -6183,7 +6183,7 @@ int unload_module()
 			free(pl);
 		}
 		iflist = NULL;
-		ast_pthread_mutex_unlock(&iflock);
+		ast_mutex_unlock(&iflock);
 	} else {
 		ast_log(LOG_WARNING, "Unable to lock the monitor\n");
 		return -1;
@@ -6262,7 +6262,7 @@ static int reload_zt(void)
 	}
 	
 
-	if (ast_pthread_mutex_lock(&iflock)) {
+	if (ast_mutex_lock(&iflock)) {
 		/* It's a little silly to lock it, but we mind as well just to be sure */
 		ast_log(LOG_ERROR, "Unable to lock interface list???\n");
 		return -1;
@@ -6284,7 +6284,7 @@ static int reload_zt(void)
 			if (cur_signalling < 0) {
 				ast_log(LOG_ERROR, "Signalling must be specified before any channels are.\n");
 				ast_destroy(cfg);
-				ast_pthread_mutex_unlock(&iflock);
+				ast_mutex_unlock(&iflock);
 				return -1;
 			}
 			stringp=v->value;
@@ -6298,7 +6298,7 @@ static int reload_zt(void)
 				} else {
 					ast_log(LOG_ERROR, "Syntax error parsing '%s' at '%s'\n", v->value, chan);
 					ast_destroy(cfg);
-					ast_pthread_mutex_unlock(&iflock);
+					ast_mutex_unlock(&iflock);
 					return -1;
 				}
 				if (finish < start) {
@@ -6315,7 +6315,7 @@ static int reload_zt(void)
 					} else {
 						ast_log(LOG_ERROR, "Unable to register channel '%s'\n", v->value);
 						ast_destroy(cfg);
-						ast_pthread_mutex_unlock(&iflock);
+						ast_mutex_unlock(&iflock);
 						return -1;
 					}
 				}
@@ -6417,7 +6417,7 @@ static int reload_zt(void)
 			else {
 				ast_log(LOG_ERROR, "Unknown switchtype '%s'\n", v->value);
 				ast_destroy(cfg);
-				ast_pthread_mutex_unlock(&iflock);
+				ast_mutex_unlock(&iflock);
 				return -1;
 			}
 		} else if (!strcasecmp(v->name, "minunused")) {
@@ -6439,7 +6439,7 @@ static int reload_zt(void)
 		if (tmp->destroy) {
 			if (destroy_channel(prev, tmp, 0)) {
 				ast_log(LOG_ERROR, "Unable to destroy chan_zap channel %d\n", tmp->channel);
-				ast_pthread_mutex_unlock(&iflock);
+				ast_mutex_unlock(&iflock);
 				return -1;
 			}
 			tmp = tmp->next;
@@ -6449,7 +6449,7 @@ static int reload_zt(void)
 		}
 	}
 
-	ast_pthread_mutex_unlock(&iflock);
+	ast_mutex_unlock(&iflock);
 
 	ast_destroy(cfg);
 #if 0
@@ -6593,9 +6593,9 @@ int reload(void)
 int usecount()
 {
 	int res;
-	ast_pthread_mutex_lock(&usecnt_lock);
+	ast_mutex_lock(&usecnt_lock);
 	res = usecnt;
-	ast_pthread_mutex_unlock(&usecnt_lock);
+	ast_mutex_unlock(&usecnt_lock);
 	return res;
 }
 
diff --git a/cli.c b/cli.c
index d45f6b84bbddca71bd840c69f96afc3d773de7e8..4708f7f5766615d574afa4ca0b6ede35f1f9d6b7 100755
--- a/cli.c
+++ b/cli.c
@@ -44,7 +44,7 @@ void ast_cli(int fd, char *fmt, ...)
 	write(fd, stuff, strlen(stuff));
 }
 
-pthread_mutex_t clilock = AST_MUTEX_INITIALIZER;
+ast_mutex_t clilock = AST_MUTEX_INITIALIZER;
 
 
 struct ast_cli_entry *helpers = NULL;
@@ -155,7 +155,7 @@ static int handle_unload(int fd, int argc, char *argv[])
 #define MODLIST_FORMAT  "%-20s %-40.40s %-10d\n"
 #define MODLIST_FORMAT2 "%-20s %-40.40s %-10s\n"
 
-static pthread_mutex_t climodentrylock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t climodentrylock = AST_MUTEX_INITIALIZER;
 static int climodentryfd = -1;
 
 static int modlist_modentry(char *module, char *description, int usecnt)
@@ -263,12 +263,12 @@ static int handle_modlist(int fd, int argc, char *argv[])
 {
 	if (argc != 2)
 		return RESULT_SHOWUSAGE;
-	ast_pthread_mutex_lock(&climodentrylock);
+	ast_mutex_lock(&climodentrylock);
 	climodentryfd = fd;
 	ast_cli(fd, MODLIST_FORMAT2, "Module", "Description", "Use Count");
 	ast_update_module_list(modlist_modentry);
 	climodentryfd = -1;
-	ast_pthread_mutex_unlock(&climodentrylock);
+	ast_mutex_unlock(&climodentrylock);
 	return RESULT_SUCCESS;
 }
 
@@ -655,7 +655,7 @@ static char *find_best(char *argv[])
 int ast_cli_unregister(struct ast_cli_entry *e)
 {
 	struct ast_cli_entry *cur, *l=NULL;
-	ast_pthread_mutex_lock(&clilock);
+	ast_mutex_lock(&clilock);
 	cur = helpers;
 	while(cur) {
 		if (e == cur) {
@@ -674,7 +674,7 @@ int ast_cli_unregister(struct ast_cli_entry *e)
 		l = cur;
 		cur = cur->next;
 	}
-	ast_pthread_mutex_unlock(&clilock);
+	ast_mutex_unlock(&clilock);
 	return 0;
 }
 
@@ -683,10 +683,10 @@ int ast_cli_register(struct ast_cli_entry *e)
 	struct ast_cli_entry *cur, *l=NULL;
 	char fulle[80] ="", fulltst[80] ="";
 	static int len;
-	ast_pthread_mutex_lock(&clilock);
+	ast_mutex_lock(&clilock);
 	join2(fulle, sizeof(fulle), e->cmda);
 	if (find_cli(e->cmda, -1)) {
-		ast_pthread_mutex_unlock(&clilock);
+		ast_mutex_unlock(&clilock);
 		ast_log(LOG_WARNING, "Command '%s' already registered (or something close enough)\n", fulle);
 		return -1;
 	}
@@ -716,7 +716,7 @@ int ast_cli_register(struct ast_cli_entry *e)
 			helpers = e;
 		e->next = NULL;
 	}
-	ast_pthread_mutex_unlock(&clilock);
+	ast_mutex_unlock(&clilock);
 	return 0;
 }
 
@@ -926,7 +926,7 @@ static char *__ast_cli_generator(char *text, char *word, int state, int lock)
 	if ((dup = parse_args(text, &x, argv))) {
 		join(matchstr, sizeof(matchstr), argv);
 		if (lock)
-			ast_pthread_mutex_lock(&clilock);
+			ast_mutex_lock(&clilock);
 		e1 = builtins;
 		e2 = helpers;
 		while(e1->cmda[0] || e2) {
@@ -959,7 +959,7 @@ static char *__ast_cli_generator(char *text, char *word, int state, int lock)
 					}
 					if (res) {
 						if (lock)
-							ast_pthread_mutex_unlock(&clilock);
+							ast_mutex_unlock(&clilock);
 						free(dup);
 						return res ? strdup(res) : NULL;
 					}
@@ -970,13 +970,13 @@ static char *__ast_cli_generator(char *text, char *word, int state, int lock)
 				   command can have this occur */
 				fullcmd = e->generator(text, word, (strlen(word) ? (x - 1) : (x)), state);
 				if (lock)
-					ast_pthread_mutex_unlock(&clilock);
+					ast_mutex_unlock(&clilock);
 				return fullcmd;
 			}
 			
 		}
 		if (lock)
-			ast_pthread_mutex_unlock(&clilock);
+			ast_mutex_unlock(&clilock);
 		free(dup);
 	}
 	return NULL;
@@ -997,11 +997,11 @@ int ast_cli_command(int fd, char *s)
 	if ((dup = parse_args(s, &x, argv))) {
 		/* We need at least one entry, or ignore */
 		if (x > 0) {
-			ast_pthread_mutex_lock(&clilock);
+			ast_mutex_lock(&clilock);
 			e = find_cli(argv, 0);
 			if (e)
 				e->inuse++;
-			ast_pthread_mutex_unlock(&clilock);
+			ast_mutex_unlock(&clilock);
 			if (e) {
 				switch(e->handler(fd, x, argv)) {
 				case RESULT_SHOWUSAGE:
@@ -1011,9 +1011,9 @@ int ast_cli_command(int fd, char *s)
 			} else 
 				ast_cli(fd, "No such command '%s' (type 'help' for help)\n", find_best(argv));
 			if (e) {
-				ast_pthread_mutex_lock(&clilock);
+				ast_mutex_lock(&clilock);
 				e->inuse--;
-				ast_pthread_mutex_unlock(&clilock);
+				ast_mutex_unlock(&clilock);
 			}
 		}
 		free(dup);
diff --git a/codecs/codec_a_mu.c b/codecs/codec_a_mu.c
index 3d1496c6c88da1b12bd28c0826ae1765c9a2c150..4b66342622ba6bb919b7101f339b441d3d8ac469 100755
--- a/codecs/codec_a_mu.c
+++ b/codecs/codec_a_mu.c
@@ -27,7 +27,7 @@
 
 #define BUFFER_SIZE   8096	/* size for the translation buffers */
 
-static pthread_mutex_t localuser_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t localuser_lock = AST_MUTEX_INITIALIZER;
 static int localusecnt = 0;
 
 static char *tdesc = "A-law and Mulaw direct Coder/Decoder";
@@ -274,13 +274,13 @@ int
 unload_module (void)
 {
   int res;
-  ast_pthread_mutex_lock (&localuser_lock);
+  ast_mutex_lock (&localuser_lock);
   res = ast_unregister_translator (&ulawtoalaw);
   if (!res)
     res = ast_unregister_translator (&alawtoulaw);
   if (localusecnt)
     res = -1;
-  ast_pthread_mutex_unlock (&localuser_lock);
+  ast_mutex_unlock (&localuser_lock);
   return res;
 }
 
diff --git a/codecs/codec_adpcm.c b/codecs/codec_adpcm.c
index 641f28b7e14c9de21eccb8ad3e689b9ef7d8dc57..5845383678defcf0d5d45ed2eb2c9418826dd936 100755
--- a/codecs/codec_adpcm.c
+++ b/codecs/codec_adpcm.c
@@ -28,7 +28,7 @@
 
 #define BUFFER_SIZE   8096	/* size for the translation buffers */
 
-static pthread_mutex_t localuser_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t localuser_lock = AST_MUTEX_INITIALIZER;
 static int localusecnt = 0;
 
 static char *tdesc = "Adaptive Differential PCM Coder/Decoder";
@@ -500,13 +500,13 @@ int
 unload_module (void)
 {
   int res;
-  ast_pthread_mutex_lock (&localuser_lock);
+  ast_mutex_lock (&localuser_lock);
   res = ast_unregister_translator (&lintoadpcm);
   if (!res)
     res = ast_unregister_translator (&adpcmtolin);
   if (localusecnt)
     res = -1;
-  ast_pthread_mutex_unlock (&localuser_lock);
+  ast_mutex_unlock (&localuser_lock);
   return res;
 }
 
diff --git a/codecs/codec_alaw.c b/codecs/codec_alaw.c
index 192b112c9a97da10678db4cc344b0b8f61150c75..08baba4bd4c181d56bf4b91d49dfb206e258499a 100755
--- a/codecs/codec_alaw.c
+++ b/codecs/codec_alaw.c
@@ -26,7 +26,7 @@
 
 #define BUFFER_SIZE   8096	/* size for the translation buffers */
 
-static pthread_mutex_t localuser_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t localuser_lock = AST_MUTEX_INITIALIZER;
 static int localusecnt = 0;
 
 static char *tdesc = "A-law Coder/Decoder";
@@ -332,13 +332,13 @@ int
 unload_module (void)
 {
   int res;
-  ast_pthread_mutex_lock (&localuser_lock);
+  ast_mutex_lock (&localuser_lock);
   res = ast_unregister_translator (&lintoalaw);
   if (!res)
     res = ast_unregister_translator (&alawtolin);
   if (localusecnt)
     res = -1;
-  ast_pthread_mutex_unlock (&localuser_lock);
+  ast_mutex_unlock (&localuser_lock);
   return res;
 }
 
diff --git a/codecs/codec_g723_1.c b/codecs/codec_g723_1.c
index 94ae898aa1ce5e7d9fa6060861b55222fe9d75f3..423d246956ea0571eaf67cdbf6a73846034224d0 100755
--- a/codecs/codec_g723_1.c
+++ b/codecs/codec_g723_1.c
@@ -56,7 +56,7 @@
 #include "slin_g723_ex.h"
 #include "g723_slin_ex.h"
 
-static pthread_mutex_t localuser_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t localuser_lock = AST_MUTEX_INITIALIZER;
 static int localusecnt=0;
 
 #ifdef ANNEX_B
@@ -363,13 +363,13 @@ static struct ast_translator lintog723 =
 int unload_module(void)
 {
 	int res;
-	ast_pthread_mutex_lock(&localuser_lock);
+	ast_mutex_lock(&localuser_lock);
 	res = ast_unregister_translator(&lintog723);
 	if (!res)
 		res = ast_unregister_translator(&g723tolin);
 	if (localusecnt)
 		res = -1;
-	ast_pthread_mutex_unlock(&localuser_lock);
+	ast_mutex_unlock(&localuser_lock);
 	return res;
 }
 
diff --git a/codecs/codec_gsm.c b/codecs/codec_gsm.c
index 68efbf92bbb6d59bca502814667e59c83df13b57..f0efe1a825326d2a70c251981762a932ca9f5e6d 100755
--- a/codecs/codec_gsm.c
+++ b/codecs/codec_gsm.c
@@ -39,7 +39,7 @@
 #include "slin_gsm_ex.h"
 #include "gsm_slin_ex.h"
 
-static pthread_mutex_t localuser_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t localuser_lock = AST_MUTEX_INITIALIZER;
 static int localusecnt=0;
 
 static char *tdesc = "GSM/PCM16 (signed linear) Codec Translator";
@@ -253,13 +253,13 @@ static struct ast_translator lintogsm =
 int unload_module(void)
 {
 	int res;
-	ast_pthread_mutex_lock(&localuser_lock);
+	ast_mutex_lock(&localuser_lock);
 	res = ast_unregister_translator(&lintogsm);
 	if (!res)
 		res = ast_unregister_translator(&gsmtolin);
 	if (localusecnt)
 		res = -1;
-	ast_pthread_mutex_unlock(&localuser_lock);
+	ast_mutex_unlock(&localuser_lock);
 	return res;
 }
 
diff --git a/codecs/codec_ilbc.c b/codecs/codec_ilbc.c
index 014151b873a90a747af20c4951d25d588bc91ede..e11c9703e15ac157e1cfe435935644c965501000 100755
--- a/codecs/codec_ilbc.c
+++ b/codecs/codec_ilbc.c
@@ -35,7 +35,7 @@
 
 #define USE_ILBC_ENHANCER	0
 
-static pthread_mutex_t localuser_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t localuser_lock = AST_MUTEX_INITIALIZER;
 static int localusecnt=0;
 
 static char *tdesc = "iLBC/PCM16 (signed linear) Codec Translator";
@@ -245,13 +245,13 @@ static struct ast_translator lintoilbc =
 int unload_module(void)
 {
 	int res;
-	ast_pthread_mutex_lock(&localuser_lock);
+	ast_mutex_lock(&localuser_lock);
 	res = ast_unregister_translator(&lintoilbc);
 	if (!res)
 		res = ast_unregister_translator(&ilbctolin);
 	if (localusecnt)
 		res = -1;
-	ast_pthread_mutex_unlock(&localuser_lock);
+	ast_mutex_unlock(&localuser_lock);
 	return res;
 }
 
diff --git a/codecs/codec_lpc10.c b/codecs/codec_lpc10.c
index 3c5d2c3abdebbb5191311153c44f9c3c6dc47187..ffd1ddc23d8360c820a0a90e54ebfbc08c813bb1 100755
--- a/codecs/codec_lpc10.c
+++ b/codecs/codec_lpc10.c
@@ -43,7 +43,7 @@
 
 #define LPC10_BYTES_IN_COMPRESSED_FRAME (LPC10_BITS_IN_COMPRESSED_FRAME + 7)/8
 
-static pthread_mutex_t localuser_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t localuser_lock = AST_MUTEX_INITIALIZER;
 static int localusecnt=0;
 
 static char *tdesc = "LPC10 2.4kbps (signed linear) Voice Coder";
@@ -330,13 +330,13 @@ static struct ast_translator lintolpc10 =
 int unload_module(void)
 {
 	int res;
-	ast_pthread_mutex_lock(&localuser_lock);
+	ast_mutex_lock(&localuser_lock);
 	res = ast_unregister_translator(&lintolpc10);
 	if (!res)
 		res = ast_unregister_translator(&lpc10tolin);
 	if (localusecnt)
 		res = -1;
-	ast_pthread_mutex_unlock(&localuser_lock);
+	ast_mutex_unlock(&localuser_lock);
 	return res;
 }
 
diff --git a/codecs/codec_mp3_d.c b/codecs/codec_mp3_d.c
index 09215ddd7d00a2366ffd638cc4bf6d3e94bfb428..9ff3961aaba7fd1aec615263b9937b2767d03534 100755
--- a/codecs/codec_mp3_d.c
+++ b/codecs/codec_mp3_d.c
@@ -41,7 +41,7 @@
 #define MAX_FRAME_SIZE 1441
 #define MAX_OUTPUT_LEN 2304
 
-static pthread_mutex_t localuser_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t localuser_lock = AST_MUTEX_INITIALIZER;
 static int localusecnt=0;
 
 static char *tdesc = "MP3/PCM16 (signed linear) Translator (Decoder only)";
@@ -287,11 +287,11 @@ static struct ast_translator mp3tolin =
 int unload_module(void)
 {
 	int res;
-	ast_pthread_mutex_lock(&localuser_lock);
+	ast_mutex_lock(&localuser_lock);
 	res = ast_unregister_translator(&mp3tolin);
 	if (localusecnt)
 		res = -1;
-	ast_pthread_mutex_unlock(&localuser_lock);
+	ast_mutex_unlock(&localuser_lock);
 	return res;
 }
 
diff --git a/codecs/codec_speex.c b/codecs/codec_speex.c
index 3c2e4f51995d2064052c780ceb0f44a64522c908..ae731fafa350ed65eb9715bad7bca124e29006d0 100755
--- a/codecs/codec_speex.c
+++ b/codecs/codec_speex.c
@@ -37,7 +37,7 @@
 #include "slin_speex_ex.h"
 #include "speex_slin_ex.h"
 
-static pthread_mutex_t localuser_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t localuser_lock = AST_MUTEX_INITIALIZER;
 static int localusecnt=0;
 
 static char *tdesc = "Speex/PCM16 (signed linear) Codec Translator";
@@ -275,13 +275,13 @@ static struct ast_translator lintospeex =
 int unload_module(void)
 {
 	int res;
-	ast_pthread_mutex_lock(&localuser_lock);
+	ast_mutex_lock(&localuser_lock);
 	res = ast_unregister_translator(&lintospeex);
 	if (!res)
 		res = ast_unregister_translator(&speextolin);
 	if (localusecnt)
 		res = -1;
-	ast_pthread_mutex_unlock(&localuser_lock);
+	ast_mutex_unlock(&localuser_lock);
 	return res;
 }
 
diff --git a/codecs/codec_ulaw.c b/codecs/codec_ulaw.c
index d536bf052a8cc9ca1467224298e1ff05103ad975..41101897d36dde26e19b7ef421287929141138d2 100755
--- a/codecs/codec_ulaw.c
+++ b/codecs/codec_ulaw.c
@@ -26,7 +26,7 @@
 
 #define BUFFER_SIZE   8096	/* size for the translation buffers */
 
-static pthread_mutex_t localuser_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t localuser_lock = AST_MUTEX_INITIALIZER;
 static int localusecnt = 0;
 
 static char *tdesc = "Mu-law Coder/Decoder";
@@ -332,13 +332,13 @@ int
 unload_module (void)
 {
   int res;
-  ast_pthread_mutex_lock (&localuser_lock);
+  ast_mutex_lock (&localuser_lock);
   res = ast_unregister_translator (&lintoulaw);
   if (!res)
     res = ast_unregister_translator (&ulawtolin);
   if (localusecnt)
     res = -1;
-  ast_pthread_mutex_unlock (&localuser_lock);
+  ast_mutex_unlock (&localuser_lock);
   return res;
 }
 
diff --git a/db.c b/db.c
index 6e5be88e210c447f2b09c27fee2c81fc3339fd3c..815ace4b89bee10943dbb412d5a1591b125b27f5 100755
--- a/db.c
+++ b/db.c
@@ -37,7 +37,7 @@
 #include "astconf.h"
 
 static DB *astdb;
-static pthread_mutex_t dblock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t dblock = AST_MUTEX_INITIALIZER;
 
 static int dbinit(void) 
 {
@@ -84,7 +84,7 @@ int ast_db_deltree(const char *family, const char *keytree)
 	else
 		strcpy(prefix, "");
 	
-	ast_pthread_mutex_lock(&dblock);
+	ast_mutex_lock(&dblock);
 	if (dbinit()) 
 		return -1;
 	
@@ -102,7 +102,7 @@ int ast_db_deltree(const char *family, const char *keytree)
 		}
 	}
 	astdb->sync(astdb, 0);
-	ast_pthread_mutex_unlock(&dblock);
+	ast_mutex_unlock(&dblock);
 	return 0;
 }
 
@@ -112,9 +112,9 @@ int ast_db_put(const char *family, const char *keys, char *value)
 	DBT key, data;
 	int res;
 
-	ast_pthread_mutex_lock(&dblock);
+	ast_mutex_lock(&dblock);
 	if (dbinit()) {
-		ast_pthread_mutex_unlock(&dblock);
+		ast_mutex_unlock(&dblock);
 		return -1;
 	}
 
@@ -127,7 +127,7 @@ int ast_db_put(const char *family, const char *keys, char *value)
 	data.size = strlen(value) + 1;
 	res = astdb->put(astdb, &key, &data, 0);
 	astdb->sync(astdb, 0);
-	ast_pthread_mutex_unlock(&dblock);
+	ast_mutex_unlock(&dblock);
 	if (res)
 		ast_log(LOG_WARNING, "Unable to put value '%s' for key '%s' in family '%s'\n", value, keys, family);
 	return res;
@@ -139,9 +139,9 @@ int ast_db_get(const char *family, const char *keys, char *value, int valuelen)
 	DBT key, data;
 	int res;
 
-	ast_pthread_mutex_lock(&dblock);
+	ast_mutex_lock(&dblock);
 	if (dbinit()) {
-		ast_pthread_mutex_unlock(&dblock);
+		ast_mutex_unlock(&dblock);
 		return -1;
 	}
 
@@ -154,7 +154,7 @@ int ast_db_get(const char *family, const char *keys, char *value, int valuelen)
 	
 	res = astdb->get(astdb, &key, &data, 0);
 	
-	ast_pthread_mutex_unlock(&dblock);
+	ast_mutex_unlock(&dblock);
 
 	/* Be sure to NULL terminate our data either way */
 	if (res) {
@@ -180,9 +180,9 @@ int ast_db_del(const char *family, const char *keys)
 	DBT key;
 	int res;
 
-	ast_pthread_mutex_lock(&dblock);
+	ast_mutex_lock(&dblock);
 	if (dbinit()) {
-		ast_pthread_mutex_unlock(&dblock);
+		ast_mutex_unlock(&dblock);
 		return -1;
 	}
 	
@@ -194,7 +194,7 @@ int ast_db_del(const char *family, const char *keys)
 	res = astdb->del(astdb, &key, 0);
 	astdb->sync(astdb, 0);
 	
-	ast_pthread_mutex_unlock(&dblock);
+	ast_mutex_unlock(&dblock);
 
 	if (res) 
 		ast_log(LOG_DEBUG, "Unable to find key '%s' in family '%s'\n", keys, family);
@@ -276,9 +276,9 @@ static int database_show(int fd, int argc, char *argv[])
 		strcpy(prefix, "");
 	} else
 		return RESULT_SHOWUSAGE;
-	ast_pthread_mutex_lock(&dblock);
+	ast_mutex_lock(&dblock);
 	if (dbinit()) {
-		ast_pthread_mutex_unlock(&dblock);
+		ast_mutex_unlock(&dblock);
 		ast_cli(fd, "Database unavailable\n");
 		return RESULT_SUCCESS;	
 	}
@@ -300,7 +300,7 @@ static int database_show(int fd, int argc, char *argv[])
 				ast_cli(fd, "%-50s: %-25s\n", keys, values);
 		}
 	}
-	ast_pthread_mutex_unlock(&dblock);
+	ast_mutex_unlock(&dblock);
 	return RESULT_SUCCESS;	
 }
 
@@ -323,9 +323,9 @@ struct ast_db_entry *ast_db_gettree(const char *family, const char *keytree)
 			snprintf(prefix, sizeof(prefix), "/%s", family);
 	} else
 		strcpy(prefix, "");
-	ast_pthread_mutex_lock(&dblock);
+	ast_mutex_lock(&dblock);
 	if (dbinit()) {
-		ast_pthread_mutex_unlock(&dblock);
+		ast_mutex_unlock(&dblock);
 		ast_log(LOG_WARNING, "Database unavailable\n");
 		return NULL;	
 	}
@@ -358,7 +358,7 @@ struct ast_db_entry *ast_db_gettree(const char *family, const char *keytree)
 				}
 		}
 	}
-	ast_pthread_mutex_unlock(&dblock);
+	ast_mutex_unlock(&dblock);
 	return ret;	
 }
 
diff --git a/enum.c b/enum.c
index 73141f0a89b5af8f2cec1c6802747b196803d24d..4bb5bd3bb2b747e2ca50aee3f21620bae8049245 100755
--- a/enum.c
+++ b/enum.c
@@ -76,7 +76,7 @@ static struct enum_search {
 
 static int enumver = 0;
 
-static pthread_mutex_t enumlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t enumlock = AST_MUTEX_INITIALIZER;
 
 static int skip_name(unsigned char *s, int len)
 {
@@ -291,7 +291,7 @@ int ast_get_enum(struct ast_channel *chan, const char *number, char *dst, int ds
 #endif	
 	
 	for(;;) {
-		ast_pthread_mutex_lock(&enumlock);
+		ast_mutex_lock(&enumlock);
 		if (version != enumver) {
 			/* Ooh, a reload... */
 			s = toplevs;
@@ -301,7 +301,7 @@ int ast_get_enum(struct ast_channel *chan, const char *number, char *dst, int ds
 		if (s) {
 			strcpy(tmp + newpos, s->toplev);
 		}
-		ast_pthread_mutex_unlock(&enumlock);
+		ast_mutex_unlock(&enumlock);
 		if (!s)
 			break;
 		res = res_nsearch(&enumstate, tmp, C_IN, T_NAPTR, answer, sizeof(answer));
@@ -344,7 +344,7 @@ int ast_enum_init(void)
 	struct ast_variable *v;
 
 	/* Destroy existing list */
-	ast_pthread_mutex_lock(&enumlock);
+	ast_mutex_lock(&enumlock);
 	s = toplevs;
 	while(s) {
 		sl = s;
@@ -374,7 +374,7 @@ int ast_enum_init(void)
 		toplevs = enum_newtoplev(TOPLEV);
 	}
 	enumver++;
-	ast_pthread_mutex_unlock(&enumlock);
+	ast_mutex_unlock(&enumlock);
 	return 0;
 }
 
diff --git a/file.c b/file.c
index 314ad7f7594b1605d51a66f005eba5f1942aae26..bad5f814e55e5a5fbd4c4e4af0ccca10ab84501a 100755
--- a/file.c
+++ b/file.c
@@ -78,7 +78,7 @@ struct ast_filestream {
 	struct ast_channel *owner;
 };
 
-static pthread_mutex_t formatlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t formatlock = AST_MUTEX_INITIALIZER;
 
 static struct ast_format *formats = NULL;
 
@@ -94,14 +94,14 @@ int ast_format_register(char *name, char *exts, int format,
 						char * (*getcomment)(struct ast_filestream *))
 {
 	struct ast_format *tmp;
-	if (ast_pthread_mutex_lock(&formatlock)) {
+	if (ast_mutex_lock(&formatlock)) {
 		ast_log(LOG_WARNING, "Unable to lock format list\n");
 		return -1;
 	}
 	tmp = formats;
 	while(tmp) {
 		if (!strcasecmp(name, tmp->name)) {
-			ast_pthread_mutex_unlock(&formatlock);
+			ast_mutex_unlock(&formatlock);
 			ast_log(LOG_WARNING, "Tried to register '%s' format, already registered\n", name);
 			return -1;
 		}
@@ -110,7 +110,7 @@ int ast_format_register(char *name, char *exts, int format,
 	tmp = malloc(sizeof(struct ast_format));
 	if (!tmp) {
 		ast_log(LOG_WARNING, "Out of memory\n");
-		ast_pthread_mutex_unlock(&formatlock);
+		ast_mutex_unlock(&formatlock);
 		return -1;
 	}
 	strncpy(tmp->name, name, sizeof(tmp->name)-1);
@@ -127,7 +127,7 @@ int ast_format_register(char *name, char *exts, int format,
 	tmp->getcomment = getcomment;
 	tmp->next = formats;
 	formats = tmp;
-	ast_pthread_mutex_unlock(&formatlock);
+	ast_mutex_unlock(&formatlock);
 	if (option_verbose > 1)
 		ast_verbose( VERBOSE_PREFIX_2 "Registered file format %s, extension(s) %s\n", name, exts);
 	return 0;
@@ -136,7 +136,7 @@ int ast_format_register(char *name, char *exts, int format,
 int ast_format_unregister(char *name)
 {
 	struct ast_format *tmp, *tmpl = NULL;
-	if (ast_pthread_mutex_lock(&formatlock)) {
+	if (ast_mutex_lock(&formatlock)) {
 		ast_log(LOG_WARNING, "Unable to lock format list\n");
 		return -1;
 	}
@@ -148,7 +148,7 @@ int ast_format_unregister(char *name)
 			else
 				formats = tmp->next;
 			free(tmp);
-			ast_pthread_mutex_unlock(&formatlock);
+			ast_mutex_unlock(&formatlock);
 			if (option_verbose > 1)
 				ast_verbose( VERBOSE_PREFIX_2 "Unregistered format %s\n", name);
 			return 0;
@@ -310,7 +310,7 @@ static int ast_filehelper(char *filename, char *filename2, char *fmt, int action
 	if (action == ACTION_OPEN)
 		ret = -1;
 	/* Check for a specific format */
-	if (ast_pthread_mutex_lock(&formatlock)) {
+	if (ast_mutex_lock(&formatlock)) {
 		ast_log(LOG_WARNING, "Unable to lock format list\n");
 		if (action == ACTION_EXISTS)
 			return 0;
@@ -397,7 +397,7 @@ static int ast_filehelper(char *filename, char *filename2, char *fmt, int action
 		}
 		f = f->next;
 	}
-	ast_pthread_mutex_unlock(&formatlock);
+	ast_mutex_unlock(&formatlock);
 	if ((action == ACTION_EXISTS) || (action == ACTION_OPEN))
 		res = ret ? ret : -1;
 	return res;
@@ -731,7 +731,7 @@ struct ast_filestream *ast_writefile(char *filename, char *type, char *comment,
 	struct ast_filestream *fs=NULL;
 	char *fn;
 	char *ext;
-	if (ast_pthread_mutex_lock(&formatlock)) {
+	if (ast_mutex_lock(&formatlock)) {
 		ast_log(LOG_WARNING, "Unable to lock format list\n");
 		return NULL;
 	}
@@ -770,7 +770,7 @@ struct ast_filestream *ast_writefile(char *filename, char *type, char *comment,
 		}
 		f = f->next;
 	}
-	ast_pthread_mutex_unlock(&formatlock);
+	ast_mutex_unlock(&formatlock);
 	if (!f) 
 		ast_log(LOG_WARNING, "No such format '%s'\n", type);
 	return fs;
diff --git a/formats/format_g723.c b/formats/format_g723.c
index 8ce2ec266a9874c8318849bc2adb57e0ff6ac9a3..2431d3dee2750706469d7c8b75484e591bb9ffad 100755
--- a/formats/format_g723.c
+++ b/formats/format_g723.c
@@ -42,7 +42,7 @@ struct ast_filestream {
 };
 
 
-static pthread_mutex_t g723_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t g723_lock = AST_MUTEX_INITIALIZER;
 static int glistcnt = 0;
 
 static char *name = "g723sf";
@@ -56,7 +56,7 @@ static struct ast_filestream *g723_open(int fd)
 	   and be sure it's a valid file.  */
 	struct ast_filestream *tmp;
 	if ((tmp = malloc(sizeof(struct ast_filestream)))) {
-		if (ast_pthread_mutex_lock(&g723_lock)) {
+		if (ast_mutex_lock(&g723_lock)) {
 			ast_log(LOG_WARNING, "Unable to lock g723 list\n");
 			free(tmp);
 			return NULL;
@@ -73,7 +73,7 @@ static struct ast_filestream *g723_open(int fd)
 		tmp->orig.tv_usec = 0;
 		tmp->orig.tv_sec = 0;
 		glistcnt++;
-		ast_pthread_mutex_unlock(&g723_lock);
+		ast_mutex_unlock(&g723_lock);
 		ast_update_use_count();
 	}
 	return tmp;
@@ -86,7 +86,7 @@ static struct ast_filestream *g723_rewrite(int fd, char *comment)
 	   and be sure it's a valid file.  */
 	struct ast_filestream *tmp;
 	if ((tmp = malloc(sizeof(struct ast_filestream)))) {
-		if (ast_pthread_mutex_lock(&g723_lock)) {
+		if (ast_mutex_lock(&g723_lock)) {
 			ast_log(LOG_WARNING, "Unable to lock g723 list\n");
 			free(tmp);
 			return NULL;
@@ -98,7 +98,7 @@ static struct ast_filestream *g723_rewrite(int fd, char *comment)
 		tmp->orig.tv_usec = 0;
 		tmp->orig.tv_sec = 0;
 		glistcnt++;
-		ast_pthread_mutex_unlock(&g723_lock);
+		ast_mutex_unlock(&g723_lock);
 		ast_update_use_count();
 	} else
 		ast_log(LOG_WARNING, "Out of memory\n");
@@ -113,7 +113,7 @@ static struct ast_frame *g723_read(struct ast_filestream *s)
 static void g723_close(struct ast_filestream *s)
 {
 	struct ast_filestream *tmp, *tmpl = NULL;
-	if (ast_pthread_mutex_lock(&g723_lock)) {
+	if (ast_mutex_lock(&g723_lock)) {
 		ast_log(LOG_WARNING, "Unable to lock g723 list\n");
 		return;
 	}
@@ -136,7 +136,7 @@ static void g723_close(struct ast_filestream *s)
 			ast_sched_del(s->owner->sched, s->owner->streamid);
 		s->owner->streamid = -1;
 	}
-	ast_pthread_mutex_unlock(&g723_lock);
+	ast_mutex_unlock(&g723_lock);
 	ast_update_use_count();
 	if (!tmp) 
 		ast_log(LOG_WARNING, "Freeing a filestream we don't seem to own\n");
@@ -335,7 +335,7 @@ int load_module()
 int unload_module()
 {
 	struct ast_filestream *tmp, *tmpl;
-	if (ast_pthread_mutex_lock(&g723_lock)) {
+	if (ast_mutex_lock(&g723_lock)) {
 		ast_log(LOG_WARNING, "Unable to lock g723 list\n");
 		return -1;
 	}
@@ -347,19 +347,19 @@ int unload_module()
 		tmp = tmp->next;
 		free(tmpl);
 	}
-	ast_pthread_mutex_unlock(&g723_lock);
+	ast_mutex_unlock(&g723_lock);
 	return ast_format_unregister(name);
 }	
 
 int usecount()
 {
 	int res;
-	if (ast_pthread_mutex_lock(&g723_lock)) {
+	if (ast_mutex_lock(&g723_lock)) {
 		ast_log(LOG_WARNING, "Unable to lock g723 list\n");
 		return -1;
 	}
 	res = glistcnt;
-	ast_pthread_mutex_unlock(&g723_lock);
+	ast_mutex_unlock(&g723_lock);
 	return res;
 }
 
diff --git a/formats/format_g729.c b/formats/format_g729.c
index a2336c94b4d7cefd9f192b81e7437d30bf5cc8d2..81765985f750816b224cad768a7e293bae753396 100755
--- a/formats/format_g729.c
+++ b/formats/format_g729.c
@@ -48,7 +48,7 @@ struct ast_filestream {
 };
 
 
-static pthread_mutex_t g729_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t g729_lock = AST_MUTEX_INITIALIZER;
 static int glistcnt = 0;
 
 static char *name = "g729";
@@ -63,7 +63,7 @@ static struct ast_filestream *g729_open(int fd)
 	struct ast_filestream *tmp;
 	if ((tmp = malloc(sizeof(struct ast_filestream)))) {
 		memset(tmp, 0, sizeof(struct ast_filestream));
-		if (ast_pthread_mutex_lock(&g729_lock)) {
+		if (ast_mutex_lock(&g729_lock)) {
 			ast_log(LOG_WARNING, "Unable to lock g729 list\n");
 			free(tmp);
 			return NULL;
@@ -76,7 +76,7 @@ static struct ast_filestream *g729_open(int fd)
 		tmp->fr.src = name;
 		tmp->fr.mallocd = 0;
 		glistcnt++;
-		ast_pthread_mutex_unlock(&g729_lock);
+		ast_mutex_unlock(&g729_lock);
 		ast_update_use_count();
 	}
 	return tmp;
@@ -90,14 +90,14 @@ static struct ast_filestream *g729_rewrite(int fd, char *comment)
 	struct ast_filestream *tmp;
 	if ((tmp = malloc(sizeof(struct ast_filestream)))) {
 		memset(tmp, 0, sizeof(struct ast_filestream));
-		if (ast_pthread_mutex_lock(&g729_lock)) {
+		if (ast_mutex_lock(&g729_lock)) {
 			ast_log(LOG_WARNING, "Unable to lock g729 list\n");
 			free(tmp);
 			return NULL;
 		}
 		tmp->fd = fd;
 		glistcnt++;
-		ast_pthread_mutex_unlock(&g729_lock);
+		ast_mutex_unlock(&g729_lock);
 		ast_update_use_count();
 	} else
 		ast_log(LOG_WARNING, "Out of memory\n");
@@ -106,12 +106,12 @@ static struct ast_filestream *g729_rewrite(int fd, char *comment)
 
 static void g729_close(struct ast_filestream *s)
 {
-	if (ast_pthread_mutex_lock(&g729_lock)) {
+	if (ast_mutex_lock(&g729_lock)) {
 		ast_log(LOG_WARNING, "Unable to lock g729 list\n");
 		return;
 	}
 	glistcnt--;
-	ast_pthread_mutex_unlock(&g729_lock);
+	ast_mutex_unlock(&g729_lock);
 	ast_update_use_count();
 	close(s->fd);
 	free(s);
@@ -226,12 +226,12 @@ int unload_module()
 int usecount()
 {
 	int res;
-	if (ast_pthread_mutex_lock(&g729_lock)) {
+	if (ast_mutex_lock(&g729_lock)) {
 		ast_log(LOG_WARNING, "Unable to lock g729 list\n");
 		return -1;
 	}
 	res = glistcnt;
-	ast_pthread_mutex_unlock(&g729_lock);
+	ast_mutex_unlock(&g729_lock);
 	return res;
 }
 
diff --git a/formats/format_gsm.c b/formats/format_gsm.c
index 49d53df2757143307a30dc98db9bf5e2fcd627e6..078d79d3331a04b8bf4e4788d37e26266524aacd 100755
--- a/formats/format_gsm.c
+++ b/formats/format_gsm.c
@@ -50,7 +50,7 @@ struct ast_filestream {
 };
 
 
-static pthread_mutex_t gsm_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t gsm_lock = AST_MUTEX_INITIALIZER;
 static int glistcnt = 0;
 
 static char *name = "gsm";
@@ -65,7 +65,7 @@ static struct ast_filestream *gsm_open(int fd)
 	struct ast_filestream *tmp;
 	if ((tmp = malloc(sizeof(struct ast_filestream)))) {
 		memset(tmp, 0, sizeof(struct ast_filestream));
-		if (ast_pthread_mutex_lock(&gsm_lock)) {
+		if (ast_mutex_lock(&gsm_lock)) {
 			ast_log(LOG_WARNING, "Unable to lock gsm list\n");
 			free(tmp);
 			return NULL;
@@ -78,7 +78,7 @@ static struct ast_filestream *gsm_open(int fd)
 		tmp->fr.src = name;
 		tmp->fr.mallocd = 0;
 		glistcnt++;
-		ast_pthread_mutex_unlock(&gsm_lock);
+		ast_mutex_unlock(&gsm_lock);
 		ast_update_use_count();
 	}
 	return tmp;
@@ -92,14 +92,14 @@ static struct ast_filestream *gsm_rewrite(int fd, char *comment)
 	struct ast_filestream *tmp;
 	if ((tmp = malloc(sizeof(struct ast_filestream)))) {
 		memset(tmp, 0, sizeof(struct ast_filestream));
-		if (ast_pthread_mutex_lock(&gsm_lock)) {
+		if (ast_mutex_lock(&gsm_lock)) {
 			ast_log(LOG_WARNING, "Unable to lock gsm list\n");
 			free(tmp);
 			return NULL;
 		}
 		tmp->fd = fd;
 		glistcnt++;
-		ast_pthread_mutex_unlock(&gsm_lock);
+		ast_mutex_unlock(&gsm_lock);
 		ast_update_use_count();
 	} else
 		ast_log(LOG_WARNING, "Out of memory\n");
@@ -108,12 +108,12 @@ static struct ast_filestream *gsm_rewrite(int fd, char *comment)
 
 static void gsm_close(struct ast_filestream *s)
 {
-	if (ast_pthread_mutex_lock(&gsm_lock)) {
+	if (ast_mutex_lock(&gsm_lock)) {
 		ast_log(LOG_WARNING, "Unable to lock gsm list\n");
 		return;
 	}
 	glistcnt--;
-	ast_pthread_mutex_unlock(&gsm_lock);
+	ast_mutex_unlock(&gsm_lock);
 	ast_update_use_count();
 	close(s->fd);
 	free(s);
@@ -235,12 +235,12 @@ int unload_module()
 int usecount()
 {
 	int res;
-	if (ast_pthread_mutex_lock(&gsm_lock)) {
+	if (ast_mutex_lock(&gsm_lock)) {
 		ast_log(LOG_WARNING, "Unable to lock gsm list\n");
 		return -1;
 	}
 	res = glistcnt;
-	ast_pthread_mutex_unlock(&gsm_lock);
+	ast_mutex_unlock(&gsm_lock);
 	return res;
 }
 
diff --git a/formats/format_h263.c b/formats/format_h263.c
index 19a57ed5abc1f58e087c6b6e969c84b2d92967f5..6e0f8edad44c0babf3dbd18fa3c758afff1b8c6d 100755
--- a/formats/format_h263.c
+++ b/formats/format_h263.c
@@ -49,7 +49,7 @@ struct ast_filestream {
 };
 
 
-static pthread_mutex_t h263_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t h263_lock = AST_MUTEX_INITIALIZER;
 static int glistcnt = 0;
 
 static char *name = "h263";
@@ -71,7 +71,7 @@ static struct ast_filestream *h263_open(int fd)
 		
 	if ((tmp = malloc(sizeof(struct ast_filestream)))) {
 		memset(tmp, 0, sizeof(struct ast_filestream));
-		if (ast_pthread_mutex_lock(&h263_lock)) {
+		if (ast_mutex_lock(&h263_lock)) {
 			ast_log(LOG_WARNING, "Unable to lock h263 list\n");
 			free(tmp);
 			return NULL;
@@ -84,7 +84,7 @@ static struct ast_filestream *h263_open(int fd)
 		tmp->fr.src = name;
 		tmp->fr.mallocd = 0;
 		glistcnt++;
-		ast_pthread_mutex_unlock(&h263_lock);
+		ast_mutex_unlock(&h263_lock);
 		ast_update_use_count();
 	}
 	return tmp;
@@ -98,14 +98,14 @@ static struct ast_filestream *h263_rewrite(int fd, char *comment)
 	struct ast_filestream *tmp;
 	if ((tmp = malloc(sizeof(struct ast_filestream)))) {
 		memset(tmp, 0, sizeof(struct ast_filestream));
-		if (ast_pthread_mutex_lock(&h263_lock)) {
+		if (ast_mutex_lock(&h263_lock)) {
 			ast_log(LOG_WARNING, "Unable to lock h263 list\n");
 			free(tmp);
 			return NULL;
 		}
 		tmp->fd = fd;
 		glistcnt++;
-		ast_pthread_mutex_unlock(&h263_lock);
+		ast_mutex_unlock(&h263_lock);
 		ast_update_use_count();
 	} else
 		ast_log(LOG_WARNING, "Out of memory\n");
@@ -114,12 +114,12 @@ static struct ast_filestream *h263_rewrite(int fd, char *comment)
 
 static void h263_close(struct ast_filestream *s)
 {
-	if (ast_pthread_mutex_lock(&h263_lock)) {
+	if (ast_mutex_lock(&h263_lock)) {
 		ast_log(LOG_WARNING, "Unable to lock h263 list\n");
 		return;
 	}
 	glistcnt--;
-	ast_pthread_mutex_unlock(&h263_lock);
+	ast_mutex_unlock(&h263_lock);
 	ast_update_use_count();
 	close(s->fd);
 	free(s);
@@ -250,12 +250,12 @@ int unload_module()
 int usecount()
 {
 	int res;
-	if (ast_pthread_mutex_lock(&h263_lock)) {
+	if (ast_mutex_lock(&h263_lock)) {
 		ast_log(LOG_WARNING, "Unable to lock h263 list\n");
 		return -1;
 	}
 	res = glistcnt;
-	ast_pthread_mutex_unlock(&h263_lock);
+	ast_mutex_unlock(&h263_lock);
 	return res;
 }
 
diff --git a/formats/format_mp3.c b/formats/format_mp3.c
index 7f6b6992c0f6c64486e9af1ab0ffff2d1c6eff58..bff51d6868d032039c3b8d5b1b7b6cc6219fafe9 100755
--- a/formats/format_mp3.c
+++ b/formats/format_mp3.c
@@ -43,7 +43,7 @@ struct ast_filestream {
 
 
 static struct ast_filestream *glist = NULL;
-static pthread_mutex_t mp3_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t mp3_lock = AST_MUTEX_INITIALIZER;
 static int glistcnt = 0;
 
 static char *name = "mp3";
@@ -59,7 +59,7 @@ static struct ast_filestream *mp3_open(int fd)
 	   and be sure it's a valid file.  */
 	struct ast_filestream *tmp;
 	if ((tmp = malloc(sizeof(struct ast_filestream)))) {
-		if (ast_pthread_mutex_lock(&mp3_lock)) {
+		if (ast_mutex_lock(&mp3_lock)) {
 			ast_log(LOG_WARNING, "Unable to lock mp3 list\n");
 			free(tmp);
 			return NULL;
@@ -68,7 +68,7 @@ static struct ast_filestream *mp3_open(int fd)
 		tmp->last.tv_usec = 0;
 		tmp->last.tv_sec = 0;
 		glistcnt++;
-		ast_pthread_mutex_unlock(&mp3_lock);
+		ast_mutex_unlock(&mp3_lock);
 		ast_update_use_count();
 	}
 	return tmp;
@@ -81,14 +81,14 @@ static struct ast_filestream *mp3_rewrite(int fd, char *comment)
 	   and be sure it's a valid file.  */
 	struct ast_filestream *tmp;
 	if ((tmp = malloc(sizeof(struct ast_filestream)))) {
-		if (ast_pthread_mutex_lock(&mp3_lock)) {
+		if (ast_mutex_lock(&mp3_lock)) {
 			ast_log(LOG_WARNING, "Unable to lock mp3 list\n");
 			free(tmp);
 			return NULL;
 		}
 		tmp->fd = fd;
 		glistcnt++;
-		ast_pthread_mutex_unlock(&mp3_lock);
+		ast_mutex_unlock(&mp3_lock);
 		ast_update_use_count();
 	} else
 		ast_log(LOG_WARNING, "Out of memory\n");
@@ -97,12 +97,12 @@ static struct ast_filestream *mp3_rewrite(int fd, char *comment)
 
 static void mp3_close(struct ast_filestream *s)
 {
-	if (ast_pthread_mutex_lock(&mp3_lock)) {
+	if (ast_mutex_lock(&mp3_lock)) {
 		ast_log(LOG_WARNING, "Unable to lock mp3 list\n");
 		return;
 	}
 	glistcnt--;
-	ast_pthread_mutex_unlock(&mp3_lock);
+	ast_mutex_unlock(&mp3_lock);
 	ast_update_use_count();
 	close(s->fd);
 	free(s);
@@ -213,12 +213,12 @@ int unload_module()
 int usecount()
 {
 	int res;
-	if (ast_pthread_mutex_lock(&mp3_lock)) {
+	if (ast_mutex_lock(&mp3_lock)) {
 		ast_log(LOG_WARNING, "Unable to lock mp3 list\n");
 		return -1;
 	}
 	res = glistcnt;
-	ast_pthread_mutex_unlock(&mp3_lock);
+	ast_mutex_unlock(&mp3_lock);
 	return res;
 }
 
diff --git a/formats/format_pcm.c b/formats/format_pcm.c
index fe384ca5f6431a618a4b7f53986e49ebd0bd6c9a..ab3ba2205e70967a4492e700a784f6c69a3c472f 100755
--- a/formats/format_pcm.c
+++ b/formats/format_pcm.c
@@ -46,7 +46,7 @@ struct ast_filestream {
 };
 
 
-static pthread_mutex_t pcm_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t pcm_lock = AST_MUTEX_INITIALIZER;
 static int glistcnt = 0;
 
 static char *name = "pcm";
@@ -61,7 +61,7 @@ static struct ast_filestream *pcm_open(int fd)
 	struct ast_filestream *tmp;
 	if ((tmp = malloc(sizeof(struct ast_filestream)))) {
 		memset(tmp, 0, sizeof(struct ast_filestream));
-		if (pthread_mutex_lock(&pcm_lock)) {
+		if (ast_mutex_lock(&pcm_lock)) {
 			ast_log(LOG_WARNING, "Unable to lock pcm list\n");
 			free(tmp);
 			return NULL;
@@ -74,7 +74,7 @@ static struct ast_filestream *pcm_open(int fd)
 		tmp->fr.src = name;
 		tmp->fr.mallocd = 0;
 		glistcnt++;
-		pthread_mutex_unlock(&pcm_lock);
+		ast_mutex_unlock(&pcm_lock);
 		ast_update_use_count();
 	}
 	return tmp;
@@ -88,14 +88,14 @@ static struct ast_filestream *pcm_rewrite(int fd, char *comment)
 	struct ast_filestream *tmp;
 	if ((tmp = malloc(sizeof(struct ast_filestream)))) {
 		memset(tmp, 0, sizeof(struct ast_filestream));
-		if (pthread_mutex_lock(&pcm_lock)) {
+		if (ast_mutex_lock(&pcm_lock)) {
 			ast_log(LOG_WARNING, "Unable to lock pcm list\n");
 			free(tmp);
 			return NULL;
 		}
 		tmp->fd = fd;
 		glistcnt++;
-		pthread_mutex_unlock(&pcm_lock);
+		ast_mutex_unlock(&pcm_lock);
 		ast_update_use_count();
 	} else
 		ast_log(LOG_WARNING, "Out of memory\n");
@@ -104,11 +104,11 @@ static struct ast_filestream *pcm_rewrite(int fd, char *comment)
 
 static void pcm_close(struct ast_filestream *s)
 {
-	if (pthread_mutex_lock(&pcm_lock)) {
+	if (ast_mutex_lock(&pcm_lock)) {
 		ast_log(LOG_WARNING, "Unable to lock pcm list\n");
 		return;
 	}
-	pthread_mutex_unlock(&pcm_lock);
+	ast_mutex_unlock(&pcm_lock);
 	ast_update_use_count();
 	close(s->fd);
 	free(s);
@@ -215,12 +215,12 @@ int unload_module()
 int usecount()
 {
 	int res;
-	if (pthread_mutex_lock(&pcm_lock)) {
+	if (ast_mutex_lock(&pcm_lock)) {
 		ast_log(LOG_WARNING, "Unable to lock pcm list\n");
 		return -1;
 	}
 	res = glistcnt;
-	pthread_mutex_unlock(&pcm_lock);
+	ast_mutex_unlock(&pcm_lock);
 	return res;
 }
 
diff --git a/formats/format_pcm_alaw.c b/formats/format_pcm_alaw.c
index ef17680d7dce5097efacac9c55951819b5d2a7b5..abc450f24a21cc8a839786d0b2050c983dc1df2c 100755
--- a/formats/format_pcm_alaw.c
+++ b/formats/format_pcm_alaw.c
@@ -53,7 +53,7 @@ struct ast_filestream {
 };
 
 
-static pthread_mutex_t pcm_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t pcm_lock = AST_MUTEX_INITIALIZER;
 static int glistcnt = 0;
 
 static char *name = "alaw";
@@ -84,7 +84,7 @@ static struct ast_filestream *pcm_open(int fd)
 	struct ast_filestream *tmp;
 	if ((tmp = malloc(sizeof(struct ast_filestream)))) {
 		memset(tmp, 0, sizeof(struct ast_filestream));
-		if (pthread_mutex_lock(&pcm_lock)) {
+		if (ast_mutex_lock(&pcm_lock)) {
 			ast_log(LOG_WARNING, "Unable to lock pcm list\n");
 			free(tmp);
 			return NULL;
@@ -100,7 +100,7 @@ static struct ast_filestream *pcm_open(int fd)
 		tmp->start_time = get_time();
 #endif
 		glistcnt++;
-		pthread_mutex_unlock(&pcm_lock);
+		ast_mutex_unlock(&pcm_lock);
 		ast_update_use_count();
 	}
 	return tmp;
@@ -114,7 +114,7 @@ static struct ast_filestream *pcm_rewrite(int fd, char *comment)
 	struct ast_filestream *tmp;
 	if ((tmp = malloc(sizeof(struct ast_filestream)))) {
 		memset(tmp, 0, sizeof(struct ast_filestream));
-		if (pthread_mutex_lock(&pcm_lock)) {
+		if (ast_mutex_lock(&pcm_lock)) {
 			ast_log(LOG_WARNING, "Unable to lock pcm list\n");
 			free(tmp);
 			return NULL;
@@ -124,7 +124,7 @@ static struct ast_filestream *pcm_rewrite(int fd, char *comment)
 		tmp->start_time = get_time();
 #endif
 		glistcnt++;
-		pthread_mutex_unlock(&pcm_lock);
+		ast_mutex_unlock(&pcm_lock);
 		ast_update_use_count();
 	} else
 		ast_log(LOG_WARNING, "Out of memory\n");
@@ -133,12 +133,12 @@ static struct ast_filestream *pcm_rewrite(int fd, char *comment)
 
 static void pcm_close(struct ast_filestream *s)
 {
-	if (pthread_mutex_lock(&pcm_lock)) {
+	if (ast_mutex_lock(&pcm_lock)) {
 		ast_log(LOG_WARNING, "Unable to lock pcm list\n");
 		return;
 	}
 	glistcnt--;
-	pthread_mutex_unlock(&pcm_lock);
+	ast_mutex_unlock(&pcm_lock);
 	ast_update_use_count();
 	close(s->fd);
 	free(s);
@@ -293,12 +293,12 @@ int unload_module()
 int usecount()
 {
 	int res;
-	if (pthread_mutex_lock(&pcm_lock)) {
+	if (ast_mutex_lock(&pcm_lock)) {
 		ast_log(LOG_WARNING, "Unable to lock pcm list\n");
 		return -1;
 	}
 	res = glistcnt;
-	pthread_mutex_unlock(&pcm_lock);
+	ast_mutex_unlock(&pcm_lock);
 	return res;
 }
 
diff --git a/formats/format_vox.c b/formats/format_vox.c
index 00c8e16ebf1089cb89062e413d379faf2f97971b..9ea35ffd58a9699c11a11d8388387e67c1a6ebbf 100755
--- a/formats/format_vox.c
+++ b/formats/format_vox.c
@@ -48,7 +48,7 @@ struct ast_filestream {
 };
 
 
-static pthread_mutex_t vox_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t vox_lock = AST_MUTEX_INITIALIZER;
 static int glistcnt = 0;
 
 static char *name = "vox";
@@ -171,7 +171,7 @@ static struct ast_filestream *vox_open(int fd)
 	struct ast_filestream *tmp;
 	if ((tmp = malloc(sizeof(struct ast_filestream)))) {
 		memset(tmp, 0, sizeof(struct ast_filestream));
-		if (ast_pthread_mutex_lock(&vox_lock)) {
+		if (ast_mutex_lock(&vox_lock)) {
 			ast_log(LOG_WARNING, "Unable to lock vox list\n");
 			free(tmp);
 			return NULL;
@@ -185,7 +185,7 @@ static struct ast_filestream *vox_open(int fd)
 		tmp->fr.mallocd = 0;
 		tmp->lasttimeout = -1;
 		glistcnt++;
-		ast_pthread_mutex_unlock(&vox_lock);
+		ast_mutex_unlock(&vox_lock);
 		ast_update_use_count();
 	}
 	return tmp;
@@ -199,14 +199,14 @@ static struct ast_filestream *vox_rewrite(int fd, char *comment)
 	struct ast_filestream *tmp;
 	if ((tmp = malloc(sizeof(struct ast_filestream)))) {
 		memset(tmp, 0, sizeof(struct ast_filestream));
-		if (ast_pthread_mutex_lock(&vox_lock)) {
+		if (ast_mutex_lock(&vox_lock)) {
 			ast_log(LOG_WARNING, "Unable to lock vox list\n");
 			free(tmp);
 			return NULL;
 		}
 		tmp->fd = fd;
 		glistcnt++;
-		ast_pthread_mutex_unlock(&vox_lock);
+		ast_mutex_unlock(&vox_lock);
 		ast_update_use_count();
 	} else
 		ast_log(LOG_WARNING, "Out of memory\n");
@@ -215,12 +215,12 @@ static struct ast_filestream *vox_rewrite(int fd, char *comment)
 
 static void vox_close(struct ast_filestream *s)
 {
-	if (ast_pthread_mutex_lock(&vox_lock)) {
+	if (ast_mutex_lock(&vox_lock)) {
 		ast_log(LOG_WARNING, "Unable to lock vox list\n");
 		return;
 	}
 	glistcnt--;
-	ast_pthread_mutex_unlock(&vox_lock);
+	ast_mutex_unlock(&vox_lock);
 	ast_update_use_count();
 	close(s->fd);
 	free(s);
@@ -324,12 +324,12 @@ int unload_module()
 int usecount()
 {
 	int res;
-	if (ast_pthread_mutex_lock(&vox_lock)) {
+	if (ast_mutex_lock(&vox_lock)) {
 		ast_log(LOG_WARNING, "Unable to lock vox list\n");
 		return -1;
 	}
 	res = glistcnt;
-	ast_pthread_mutex_unlock(&vox_lock);
+	ast_mutex_unlock(&vox_lock);
 	return res;
 }
 
diff --git a/formats/format_wav.c b/formats/format_wav.c
index c80d47e748864c6bc48768b2b24b32a7e9b3c535..3771df354525d74c8156d8b2d377d288b351e3d6 100755
--- a/formats/format_wav.c
+++ b/formats/format_wav.c
@@ -52,7 +52,7 @@ struct ast_filestream {
 };
 
 
-static pthread_mutex_t wav_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t wav_lock = AST_MUTEX_INITIALIZER;
 static int glistcnt = 0;
 
 static char *name = "wav";
@@ -312,7 +312,7 @@ static struct ast_filestream *wav_open(int fd)
 			free(tmp);
 			return NULL;
 		}
-		if (ast_pthread_mutex_lock(&wav_lock)) {
+		if (ast_mutex_lock(&wav_lock)) {
 			ast_log(LOG_WARNING, "Unable to lock wav list\n");
 			free(tmp);
 			return NULL;
@@ -327,7 +327,7 @@ static struct ast_filestream *wav_open(int fd)
 		tmp->fr.mallocd = 0;
 		tmp->bytes = 0;
 		glistcnt++;
-		ast_pthread_mutex_unlock(&wav_lock);
+		ast_mutex_unlock(&wav_lock);
 		ast_update_use_count();
 	}
 	return tmp;
@@ -345,14 +345,14 @@ static struct ast_filestream *wav_rewrite(int fd, char *comment)
 			free(tmp);
 			return NULL;
 		}
-		if (ast_pthread_mutex_lock(&wav_lock)) {
+		if (ast_mutex_lock(&wav_lock)) {
 			ast_log(LOG_WARNING, "Unable to lock wav list\n");
 			free(tmp);
 			return NULL;
 		}
 		tmp->fd = fd;
 		glistcnt++;
-		ast_pthread_mutex_unlock(&wav_lock);
+		ast_mutex_unlock(&wav_lock);
 		ast_update_use_count();
 	} else
 		ast_log(LOG_WARNING, "Out of memory\n");
@@ -362,12 +362,12 @@ static struct ast_filestream *wav_rewrite(int fd, char *comment)
 static void wav_close(struct ast_filestream *s)
 {
 	char zero = 0;
-	if (ast_pthread_mutex_lock(&wav_lock)) {
+	if (ast_mutex_lock(&wav_lock)) {
 		ast_log(LOG_WARNING, "Unable to lock wav list\n");
 		return;
 	}
 	glistcnt--;
-	ast_pthread_mutex_unlock(&wav_lock);
+	ast_mutex_unlock(&wav_lock);
 	ast_update_use_count();
 	/* Pad to even length */
 	if (s->bytes & 0x1)
@@ -554,12 +554,12 @@ int unload_module()
 int usecount()
 {
 	int res;
-	if (ast_pthread_mutex_lock(&wav_lock)) {
+	if (ast_mutex_lock(&wav_lock)) {
 		ast_log(LOG_WARNING, "Unable to lock wav list\n");
 		return -1;
 	}
 	res = glistcnt;
-	ast_pthread_mutex_unlock(&wav_lock);
+	ast_mutex_unlock(&wav_lock);
 	return res;
 }
 
diff --git a/formats/format_wav_gsm.c b/formats/format_wav_gsm.c
index a9a1e83134a29a9b202a0f44ff4930cf857ed372..fbb97d6abc0b185fe387923fd815b8ec5df4dfbf 100755
--- a/formats/format_wav_gsm.c
+++ b/formats/format_wav_gsm.c
@@ -53,7 +53,7 @@ struct ast_filestream {
 };
 
 
-static pthread_mutex_t wav_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t wav_lock = AST_MUTEX_INITIALIZER;
 static int glistcnt = 0;
 
 static char *name = "wav49";
@@ -331,7 +331,7 @@ static struct ast_filestream *wav_open(int fd)
 			free(tmp);
 			return NULL;
 		}
-		if (ast_pthread_mutex_lock(&wav_lock)) {
+		if (ast_mutex_lock(&wav_lock)) {
 			ast_log(LOG_WARNING, "Unable to lock wav list\n");
 			free(tmp);
 			return NULL;
@@ -345,7 +345,7 @@ static struct ast_filestream *wav_open(int fd)
 		tmp->fr.mallocd = 0;
 		tmp->secondhalf = 0;
 		glistcnt++;
-		ast_pthread_mutex_unlock(&wav_lock);
+		ast_mutex_unlock(&wav_lock);
 		ast_update_use_count();
 	}
 	return tmp;
@@ -363,14 +363,14 @@ static struct ast_filestream *wav_rewrite(int fd, char *comment)
 			free(tmp);
 			return NULL;
 		}
-		if (ast_pthread_mutex_lock(&wav_lock)) {
+		if (ast_mutex_lock(&wav_lock)) {
 			ast_log(LOG_WARNING, "Unable to lock wav list\n");
 			free(tmp);
 			return NULL;
 		}
 		tmp->fd = fd;
 		glistcnt++;
-		ast_pthread_mutex_unlock(&wav_lock);
+		ast_mutex_unlock(&wav_lock);
 		ast_update_use_count();
 	} else
 		ast_log(LOG_WARNING, "Out of memory\n");
@@ -380,7 +380,7 @@ static struct ast_filestream *wav_rewrite(int fd, char *comment)
 static void wav_close(struct ast_filestream *s)
 {
 	char zero = 0;
-	ast_pthread_mutex_unlock(&wav_lock);
+	ast_mutex_unlock(&wav_lock);
 	ast_update_use_count();
 	/* Pad to even length */
 	if (s->bytes & 0x1)
@@ -533,12 +533,12 @@ int unload_module()
 int usecount()
 {
 	int res;
-	if (ast_pthread_mutex_lock(&wav_lock)) {
+	if (ast_mutex_lock(&wav_lock)) {
 		ast_log(LOG_WARNING, "Unable to lock wav list\n");
 		return -1;
 	}
 	res = glistcnt;
-	ast_pthread_mutex_unlock(&wav_lock);
+	ast_mutex_unlock(&wav_lock);
 	return res;
 }
 
diff --git a/frame.c b/frame.c
index ec5c59dda2205a69efa64e5c2c0397a45f20298c..6143671e7cf33723bb607aa8a84f15ec7d3b98b5 100755
--- a/frame.c
+++ b/frame.c
@@ -28,7 +28,7 @@
 #ifdef TRACE_FRAMES
 static int headers = 0;
 static struct ast_frame *headerlist = NULL;
-static pthread_mutex_t framelock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t framelock = AST_MUTEX_INITIALIZER;
 #endif
 
 #define SMOOTHER_SIZE 8000
@@ -154,12 +154,12 @@ static struct ast_frame *ast_frame_header_new(void)
 	if (f) {
 		headers++;
 		f->prev = NULL;
-		ast_pthread_mutex_lock(&framelock);
+		ast_mutex_lock(&framelock);
 		f->next = headerlist;
 		if (headerlist)
 			headerlist->prev = f;
 		headerlist = f;
-		pthread_mutex_unlock(&framelock);
+		ast_mutex_unlock(&framelock);
 	}
 #endif	
 	return f;
@@ -183,14 +183,14 @@ void ast_frfree(struct ast_frame *fr)
 	if (fr->mallocd & AST_MALLOCD_HDR) {
 #ifdef TRACE_FRAMES
 		headers--;
-		ast_pthread_mutex_lock(&framelock);
+		ast_mutex_lock(&framelock);
 		if (fr->next)
 			fr->next->prev = fr->prev;
 		if (fr->prev)
 			fr->prev->next = fr->next;
 		else
 			headerlist = fr->next;
-		pthread_mutex_unlock(&framelock);
+		ast_mutex_unlock(&framelock);
 #endif			
 		free(fr);
 	}
@@ -542,11 +542,11 @@ static int show_frame_stats(int fd, int argc, char *argv[])
 	ast_cli(fd, "---------------------------\n");
 	ast_cli(fd, "Total allocated headers: %d\n", headers);
 	ast_cli(fd, "Queue Dump:\n");
-	ast_pthread_mutex_lock(&framelock);
+	ast_mutex_lock(&framelock);
 	for (f=headerlist; f; f = f->next) {
 		ast_cli(fd, "%d.  Type %d, subclass %d from %s\n", x++, f->frametype, f->subclass, f->src ? f->src : "<Unknown>");
 	}
-	pthread_mutex_unlock(&framelock);
+	ast_mutex_unlock(&framelock);
 	return RESULT_SUCCESS;
 }
 
diff --git a/image.c b/image.c
index 7ee2b080ac744dacc990c1e7c2b7e3440e40a7fe..1b07b77b25a7b84ac0e9cc522e2c706a817f3fa2 100755
--- a/image.c
+++ b/image.c
@@ -33,23 +33,23 @@
 #include "astconf.h"
 
 static struct ast_imager *list;
-static pthread_mutex_t listlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t listlock = AST_MUTEX_INITIALIZER;
 
 int ast_image_register(struct ast_imager *img)
 {
 	if (option_verbose > 1)
 		ast_verbose(VERBOSE_PREFIX_2 "Registered format '%s' (%s)\n", img->name, img->desc);
-	ast_pthread_mutex_lock(&listlock);
+	ast_mutex_lock(&listlock);
 	img->next = list;
 	list = img;
-	ast_pthread_mutex_unlock(&listlock);
+	ast_mutex_unlock(&listlock);
 	return 0;
 }
 
 void ast_image_unregister(struct ast_imager *img)
 {
 	struct ast_imager *i, *prev = NULL;
-	ast_pthread_mutex_lock(&listlock);
+	ast_mutex_lock(&listlock);
 	i = list;
 	while(i) {
 		if (i == img) {
@@ -62,7 +62,7 @@ void ast_image_unregister(struct ast_imager *img)
 		prev = i;
 		i = i->next;
 	}
-	ast_pthread_mutex_unlock(&listlock);
+	ast_mutex_unlock(&listlock);
 	if (i && (option_verbose > 1))
 		ast_verbose(VERBOSE_PREFIX_2 "Registered format '%s' (%s)\n", img->name, img->desc);
 }
@@ -112,7 +112,7 @@ struct ast_frame *ast_read_image(char *filename, char *preflang, int format)
 	int len=0;
 	struct ast_frame *f = NULL;
 #if 0 /* We need to have some sort of read-only lock */
-	ast_pthread_mutex_lock(&listlock);
+	ast_mutex_lock(&listlock);
 #endif	
 	i = list;
 	while(!found && i) {
@@ -152,7 +152,7 @@ struct ast_frame *ast_read_image(char *filename, char *preflang, int format)
 	} else
 		ast_log(LOG_WARNING, "Image file '%s' not found\n", filename);
 #if 0
-	ast_pthread_mutex_unlock(&listlock);
+	ast_mutex_unlock(&listlock);
 #endif	
 	return f;
 }
diff --git a/include/asterisk/channel.h b/include/asterisk/channel.h
index 5fe9d22754028438edc1ed78ed9c01f22178f58d..7cd2470e0f32b08dc171cf3d3787bd8bef4b8d07 100755
--- a/include/asterisk/channel.h
+++ b/include/asterisk/channel.h
@@ -97,7 +97,7 @@ struct ast_channel {
 	/*! If anyone is blocking, this is them */
 	pthread_t blocker;			
 	/*! Lock, can be used to lock a channel for some operations */
-	pthread_mutex_t lock;			
+	ast_mutex_t lock;			
 	/*! Procedure causing blocking */
 	char *blockproc;			
 
diff --git a/include/asterisk/indications.h b/include/asterisk/indications.h
index 0ee0fac1d92a1126e97b00a2c40900570114cf93..9b8ebca5c9e9fdbb36d2d9e50aae754da427f088 100755
--- a/include/asterisk/indications.h
+++ b/include/asterisk/indications.h
@@ -22,6 +22,8 @@
 #ifndef _ASTERISK_INDICATIONS_H
 #define _ASTERISK_INDICATIONS_H
 
+#include <asterisk/lock.h>
+
 /* forward reference */
 struct ast_channel;
 
@@ -70,6 +72,6 @@ int ast_playtones_start(struct ast_channel *chan, int vol, const char* tonelist,
 void ast_playtones_stop(struct ast_channel *chan);
 
 extern struct tone_zone *tone_zones;
-extern pthread_mutex_t tzlock;
+extern ast_mutex_t tzlock;
 
 #endif
diff --git a/include/asterisk/linkedlists.h b/include/asterisk/linkedlists.h
index c1a3d9de356f416323eb339f746f3cecb8256e00..30e09a0156bb20cd11929e7660df226d4d221a25 100755
--- a/include/asterisk/linkedlists.h
+++ b/include/asterisk/linkedlists.h
@@ -2,25 +2,26 @@
 #define ASTERISK_LINKEDLISTS_H
 
 #include <pthread.h>
+#include <asterisk/lock.h>
 
 #define AST_LIST_LOCK(head)						\
-	ast_pthread_mutex_lock(&head->lock) 
+	ast_mutex_lock(&head->lock) 
 	
 #define AST_LIST_UNLOCK(head) 						\
-	ast_pthread_mutex_unlock(&head->lock)
+	ast_mutex_unlock(&head->lock)
 
 #define AST_LIST_HEAD(name, type)					\
 struct name {								\
 	struct type *first;						\
-	pthread_mutex_t lock;						\
+	ast_mutex_t lock;						\
 }
 
 #define AST_LIST_HEAD_INITIALIZER(head)					\
-	{ NULL, PTHREAD_MUTEX_INITIALIZER }
+	{ NULL, AST_MUTEX_INITIALIZER }
 	
 #define AST_LIST_HEAD_SET(head,entry) do {				\
 	(head)->first=(entry);						\
-	pthread_mutex_init(&(head)->lock,NULL);				\
+	ast_pthread_mutex_init(&(head)->lock,NULL);				\
 } while (0)
 
 #define AST_LIST_ENTRY(type)						\
@@ -39,7 +40,7 @@ struct {								\
 
 #define AST_LIST_HEAD_INIT(head) {						\
 	(head)->first = NULL;						\
-	pthread_mutex_init(&(head)->lock,NULL);				\
+	ast_pthread_mutex_init(&(head)->lock,NULL);				\
 }
 
 #define AST_LIST_INSERT_AFTER(listelm, elm, field) do {		\
diff --git a/include/asterisk/lock.h b/include/asterisk/lock.h
index d27e295b49470026ac32a58b766943a560afeeae..092672cae8434908212abc86fa0bfe64529c0130 100755
--- a/include/asterisk/lock.h
+++ b/include/asterisk/lock.h
@@ -28,12 +28,12 @@
 // #define AST_MUTEX_INITIALIZER      PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
 // #define AST_MUTEX_KIND             PTHREAD_MUTEX_RECURSIVE_NP
 #ifdef PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
-#define AST_MUTEX_INITIALIZER         PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
+#define AST_MUTEX_INITIALIZER         { PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP, NULL, 0, NULL, 0 }
 #else
 #ifdef PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
-#define AST_MUTEX_INITIALIZER         PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
+#define AST_MUTEX_INITIALIZER         { PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP, NULL, 0, NULL, 0 }
 #else
-#define AST_MUTEX_INITIALIZER         PTHREAD_MUTEX_INITIALIZER
+#define AST_MUTEX_INITIALIZER         { PTHREAD_MUTEX_INITIALIZER, NULL, 0, NULL, 0 }
 #endif
 #endif
 #ifdef PTHREAD_MUTEX_ERRORCHECK_NP
@@ -42,17 +42,20 @@
 #define AST_MUTEX_KIND                PTHREAD_MUTEX_ERRORCHECK
 #endif
 
-struct mutex_info {
-	pthread_mutex_t *mutex;
+struct ast_mutex_info {
+	pthread_mutex_t mutex;
 	char *file;
 	int lineno;
 	char *func;
-	struct mutex_info *next;
+	pthread_t thread;
 };
 
-static inline int ast_pthread_mutex_init(pthread_mutex_t *t) {
+typedef struct ast_mutex_info ast_mutex_t;
+
+static inline int ast_mutex_init(ast_mutex_t *t) {
 	static pthread_mutexattr_t  attr;
 	static int  init = 1;
+	int res;
 	extern int  pthread_mutexattr_setkind_np(pthread_mutexattr_t *, int);
 
 	if (init) {
@@ -60,45 +63,87 @@ static inline int ast_pthread_mutex_init(pthread_mutex_t *t) {
 		pthread_mutexattr_setkind_np(&attr, AST_MUTEX_KIND);
 		init = 0;
 	}
-	return pthread_mutex_init(t, &attr);
+	res = pthread_mutex_init(&t->mutex, &attr);
+	t->file = NULL;
+	t->lineno = 0;
+	t->func = 0;
+	t->thread  = 0;
+	return res;
 }
 
-static inline int __ast_pthread_mutex_lock(char *filename, int lineno, char *func, pthread_mutex_t *t) {
+static inline int ast_pthread_mutex_init(ast_mutex_t *t, pthread_mutexattr_t *attr) 
+{
 	int res;
-	int tries = TRIES;
-	do {
-		res = pthread_mutex_trylock(t);
-		/* If we can't run, yield */
-		if (res) {
-			sched_yield();
-			usleep(1);
-		}
-	} while(res && tries--);
-	if (res) {
-		fprintf(stderr, "%s line %d (%s): Error obtaining mutex: %s\n", 
-				filename, lineno, func, strerror(res));
-		if ((res = pthread_mutex_lock(t)))
-                        fprintf(stderr, "%s line %d (%s): Error waiting for mutex: %s\n", 
-                               filename, lineno, func, strerror(res));
-                else
-		        fprintf(stderr, "%s line %d (%s): Got it eventually...\n",
-			       filename, lineno, func);
+	res = pthread_mutex_init(&t->mutex, attr);
+	t->file = NULL;
+	t->lineno = 0;
+	t->func = 0;
+	t->thread  = 0;
+	return res;
+}
+
+static inline int __ast_pthread_mutex_lock(char *filename, int lineno, char *func, ast_mutex_t *t) {
+	int res;
+	res = pthread_mutex_lock(&t->mutex);
+	if (!res) {
+		t->file = filename;
+		t->lineno = lineno;
+		t->func = func;
+		t->thread = pthread_self();
+	} else {
+		fprintf(stderr, "%s line %d (%s): Error obtaining mutex: %s\n",
+			filename, lineno, func, strerror(errno));
 	}
 	return res;
 }
 
-#define ast_pthread_mutex_lock(a) __ast_pthread_mutex_lock(__FILE__, __LINE__, __PRETTY_FUNCTION__, a)
+#define ast_mutex_lock(a) __ast_pthread_mutex_lock(__FILE__, __LINE__, __PRETTY_FUNCTION__, a)
 
-static inline int __ast_pthread_mutex_unlock(char *filename, int lineno, char *func, pthread_mutex_t *t) {
+static inline int __ast_pthread_mutex_trylock(char *filename, int lineno, char *func, ast_mutex_t *t) {
 	int res;
-	res = pthread_mutex_unlock(t);
+	res = pthread_mutex_trylock(&t->mutex);
+	if (!res) {
+		t->file = filename;
+		t->lineno = lineno;
+		t->func = func;
+		t->thread = pthread_self();
+	}
+	return res;
+}
+
+#define ast_mutex_trylock(a) __ast_pthread_mutex_trylock(__FILE__, __LINE__, __PRETTY_FUNCTION__, a)
+
+static inline int __ast_pthread_mutex_unlock(char *filename, int lineno, char *func, ast_mutex_t *t) {
+	int res;
+	/* Assumes lock is actually held */
+	t->file = NULL;
+	t->lineno = 0;
+	t->func = NULL;
+	t->thread = 0;
+	res = pthread_mutex_unlock(&t->mutex);
 	if (res) 
 		fprintf(stderr, "%s line %d (%s): Error releasing mutex: %s\n", 
 				filename, lineno, func, strerror(res));
 	return res;
 }
 
-#define ast_pthread_mutex_unlock(a) __ast_pthread_mutex_unlock(__FILE__, __LINE__, __PRETTY_FUNCTION__, a)
+#define ast_mutex_unlock(a) __ast_pthread_mutex_unlock(__FILE__, __LINE__, __PRETTY_FUNCTION__, a)
+
+static inline int __ast_pthread_mutex_destroy(char *filename, int lineno, char *func, ast_mutex_t *t)
+{
+	int res;
+	t->file = NULL;
+	t->lineno = 0;
+	t->func = NULL;
+	t->thread = 0;
+	res = pthread_mutex_destroy(&t->mutex);
+	if (res) 
+		fprintf(stderr, "%s line %d (%s): Error destroying mutex: %s\n",
+				filename, lineno, func, strerror(res));
+	return res;
+}
+
+#define ast_mutex_destroy(a) __ast_pthread_mutex_destroy(__FILE__, __LINE__, __PRETTY_FUNCTION__, a)
 
 #else
 
@@ -109,10 +154,44 @@ static inline int __ast_pthread_mutex_unlock(char *filename, int lineno, char *f
 #define AST_MUTEX_KIND             PTHREAD_NORMAL
 #endif
 
-#define ast_pthread_mutex_init(mutex) pthread_mutex_init(mutex, NULL)
-#define ast_pthread_mutex_lock pthread_mutex_lock
-#define ast_pthread_mutex_unlock pthread_mutex_unlock
+typedef pthread_mutex_t ast_mutex_t;
+
+static inline int ast_mutex_lock(ast_mutex_t *t)
+{
+	return pthread_mutex_lock(t);
+}
+
+static inline int ast_mutex_unlock(ast_mutex_t *t)
+{
+	return pthread_mutex_unlock(t);
+}
+
+static inline int ast_mutex_trylock(ast_mutex_t *t)
+{
+	return pthread_mutex_trylock(t);
+}
+
+static inline int ast_pthread_mutex_init(ast_mutex_t *t, const pthread_mutexattr_t *mutexattr)
+{
+	return pthread_mutex_init(t, mutexattr);
+}
+
+static inline int ast_mutex_init(ast_mutex_t *t)
+{
+	return pthread_mutex_init(t, NULL);
+}
 
+static inline int ast_mutex_destroy(ast_mutex_t *t)
+{
+	return pthread_mutex_destroy(t);
+}
 #endif
 
+#define pthread_mutex_t use_ast_mutex_t_instead_of_pthread_mutex_t
+#define pthread_mutex_lock use_ast_mutex_lock_instead_of_pthread_mutex_lock
+#define pthread_mutex_unlock use_ast_mutex_unlock_instead_of_pthread_mutex_unlock
+#define pthread_mutex_trylock use_ast_mutex_trylock_instead_of_pthread_mutex_trylock
+#define pthread_mutex_init use_ast_pthread_mutex_init_instead_of_pthread_mutex_init
+#define pthread_mutex_destroy use_ast_pthread_mutex_destroy_instead_of_pthread_mutex_destroy
+
 #endif
diff --git a/include/asterisk/manager.h b/include/asterisk/manager.h
index d5171ecc2e009f376bad0f02b382b0a77a8ac505..66da69017926871b9a342de2301397ba5d2a5e13 100755
--- a/include/asterisk/manager.h
+++ b/include/asterisk/manager.h
@@ -23,6 +23,8 @@
 #include <netinet/in.h>
 #include <arpa/inet.h>
 
+#include <asterisk/lock.h>
+
 /* 
  * Call management packages are text fields of the form a: b.  There is
  * always exactly one space after the colon.
@@ -53,7 +55,7 @@
 
 struct mansession {
 	pthread_t t;
-	pthread_mutex_t lock;
+	ast_mutex_t lock;
 	struct sockaddr_in sin;
 	int fd;
 	int blocking;
diff --git a/include/asterisk/module.h b/include/asterisk/module.h
index 39eabce8e6b74c7a483593893748728b4c373f3b..b7a5184e8fc5bd5e2f9dc531cea71ff517457e24 100755
--- a/include/asterisk/module.h
+++ b/include/asterisk/module.h
@@ -152,7 +152,7 @@ void ast_unregister_atexit(void (*func)(void));
 								struct localuser *next; \
 							}
 
-#define LOCAL_USER_DECL static pthread_mutex_t localuser_lock = AST_MUTEX_INITIALIZER; \
+#define LOCAL_USER_DECL static ast_mutex_t localuser_lock = AST_MUTEX_INITIALIZER; \
 						static struct localuser *localusers = NULL; \
 						static int localusecnt = 0;
 
@@ -162,18 +162,18 @@ void ast_unregister_atexit(void (*func)(void));
 		ast_log(LOG_WARNING, "Out of memory\n"); \
 		return -1; \
 	} \
-	pthread_mutex_lock(&localuser_lock); \
+	ast_mutex_lock(&localuser_lock); \
 	u->chan = chan; \
 	u->next = localusers; \
 	localusers = u; \
 	localusecnt++; \
-	pthread_mutex_unlock(&localuser_lock); \
+	ast_mutex_unlock(&localuser_lock); \
 	ast_update_use_count(); \
 }
 
 #define LOCAL_USER_REMOVE(u) { \
 	struct localuser *uc, *ul = NULL; \
-	pthread_mutex_lock(&localuser_lock); \
+	ast_mutex_lock(&localuser_lock); \
 	uc = localusers; \
 	while (uc) { \
 		if (uc == u) { \
@@ -188,13 +188,13 @@ void ast_unregister_atexit(void (*func)(void));
 	}\
 	free(u); \
 	localusecnt--; \
-	pthread_mutex_unlock(&localuser_lock); \
+	ast_mutex_unlock(&localuser_lock); \
 	ast_update_use_count(); \
 }
 
 #define STANDARD_HANGUP_LOCALUSERS { \
 	struct localuser *u, *ul; \
-	pthread_mutex_lock(&localuser_lock); \
+	ast_mutex_lock(&localuser_lock); \
 	u = localusers; \
 	while(u) { \
 		ast_softhangup(u->chan, AST_SOFTHANGUP_APPUNLOAD); \
@@ -202,14 +202,14 @@ void ast_unregister_atexit(void (*func)(void));
 		u = u->next; \
 		free(ul); \
 	} \
-	pthread_mutex_unlock(&localuser_lock); \
+	ast_mutex_unlock(&localuser_lock); \
 	localusecnt=0; \
 }
 
 #define STANDARD_USECOUNT(res) { \
-	pthread_mutex_lock(&localuser_lock); \
+	ast_mutex_lock(&localuser_lock); \
 	res = localusecnt; \
-	pthread_mutex_unlock(&localuser_lock); \
+	ast_mutex_unlock(&localuser_lock); \
 }
 	
 	
diff --git a/indications.c b/indications.c
index 62500a790448fd3a3249e976eddb9c7e0450b22a..180b948b27904aba6cefabf302d4badad05cb852 100755
--- a/indications.c
+++ b/indications.c
@@ -27,9 +27,6 @@
 #include <asterisk/channel.h>
 #include <asterisk/logger.h>
 
-#define PTHREAD_MUTEX_LOCK(a) ast_pthread_mutex_lock(a)
-#define PTHREAD_MUTEX_UNLOCK(a) ast_pthread_mutex_unlock(a)
-
 struct playtones_item {
 	int freq1;
 	int freq2;
@@ -213,7 +210,7 @@ static struct tone_zone *current_tonezone;
 
 /* Protect the tone_zones list (highly unlikely that two things would change
  * it at the same time, but still! */
-pthread_mutex_t tzlock = AST_MUTEX_INITIALIZER;
+ast_mutex_t tzlock = AST_MUTEX_INITIALIZER;
 
 /* Set global indication country */
 int ast_set_indication_country(const char *country)
@@ -243,7 +240,7 @@ struct tone_zone *ast_get_indication_zone(const char *country)
 	if (country == NULL)
 		return 0;	/* not a single country insight */
 
-	if (PTHREAD_MUTEX_LOCK(&tzlock)) {
+	if (ast_mutex_lock(&tzlock)) {
 		ast_log(LOG_WARNING, "Unable to lock tone_zones list\n");
 		return 0;
 	}
@@ -255,12 +252,12 @@ struct tone_zone *ast_get_indication_zone(const char *country)
 					country = tz->alias;
 					break;
 				}
-				PTHREAD_MUTEX_UNLOCK(&tzlock);
+				ast_mutex_unlock(&tzlock);
 				return tz;
 			}
 		}
 	} while (++alias_loop<20 && tz);
-	PTHREAD_MUTEX_UNLOCK(&tzlock);
+	ast_mutex_unlock(&tzlock);
 	if (alias_loop==20)
 		ast_log(LOG_NOTICE,"Alias loop for '%s' forcefull broken\n",country);
 	/* nothing found, sorry */
@@ -280,19 +277,19 @@ struct tone_zone_sound *ast_get_indication_tone(const struct tone_zone *zone, co
 	if (zone == NULL)
 		return 0;	/* not a single country insight */
 
-	if (PTHREAD_MUTEX_LOCK(&tzlock)) {
+	if (ast_mutex_lock(&tzlock)) {
 		ast_log(LOG_WARNING, "Unable to lock tone_zones list\n");
 		return 0;
 	}
 	for (ts=zone->tones; ts; ts=ts->next) {
 		if (strcasecmp(indication,ts->name)==0) {
 			/* found indication! */
-			PTHREAD_MUTEX_UNLOCK(&tzlock);
+			ast_mutex_unlock(&tzlock);
 			return ts;
 		}
 	}
 	/* nothing found, sorry */
-	PTHREAD_MUTEX_UNLOCK(&tzlock);
+	ast_mutex_unlock(&tzlock);
 	return 0;
 }
 
@@ -316,7 +313,7 @@ int ast_register_indication_country(struct tone_zone *zone)
 {
 	struct tone_zone *tz,*pz;
 
-	if (PTHREAD_MUTEX_LOCK(&tzlock)) {
+	if (ast_mutex_lock(&tzlock)) {
 		ast_log(LOG_WARNING, "Unable to lock tone_zones list\n");
 		return -1;
 	}
@@ -333,7 +330,7 @@ int ast_register_indication_country(struct tone_zone *zone)
 				current_tonezone = zone;
 			/* now free the previous zone */
 			free_zone(tz);
-			PTHREAD_MUTEX_UNLOCK(&tzlock);
+			ast_mutex_unlock(&tzlock);
 			return 0;
 		}
 	}
@@ -343,7 +340,7 @@ int ast_register_indication_country(struct tone_zone *zone)
 		pz->next = zone;
 	else
 		tone_zones = zone;
-	PTHREAD_MUTEX_UNLOCK(&tzlock);
+	ast_mutex_unlock(&tzlock);
 
 	ast_verbose(VERBOSE_PREFIX_3 "Registered indication country '%s'\n",zone->country);
 	return 0;
@@ -356,7 +353,7 @@ int ast_unregister_indication_country(const char *country)
 	struct tone_zone *tz, *pz = NULL, *tmp;
 	int res = -1;
 
-	if (PTHREAD_MUTEX_LOCK(&tzlock)) {
+	if (ast_mutex_lock(&tzlock)) {
 		ast_log(LOG_WARNING, "Unable to lock tone_zones list\n");
 		return -1;
 	}
@@ -387,7 +384,7 @@ int ast_unregister_indication_country(const char *country)
 			tz = tz->next;
 		}
 	}
-	PTHREAD_MUTEX_UNLOCK(&tzlock);
+	ast_mutex_unlock(&tzlock);
 	return res;
 }
 
@@ -401,7 +398,7 @@ int ast_register_indication(struct tone_zone *zone, const char *indication, cons
 	if (zone->alias[0])
 		return -1;
 
-	if (PTHREAD_MUTEX_LOCK(&tzlock)) {
+	if (ast_mutex_lock(&tzlock)) {
 		ast_log(LOG_WARNING, "Unable to lock tone_zones list\n");
 		return -2;
 	}
@@ -418,7 +415,7 @@ int ast_register_indication(struct tone_zone *zone, const char *indication, cons
 		ts = malloc(sizeof(struct tone_zone_sound));
 		if (!ts) {
 			ast_log(LOG_WARNING, "Out of memory\n");
-			PTHREAD_MUTEX_UNLOCK(&tzlock);
+			ast_mutex_unlock(&tzlock);
 			return -2;
 		}
 		ts->next = NULL;
@@ -427,14 +424,14 @@ int ast_register_indication(struct tone_zone *zone, const char *indication, cons
 	ts->data = strdup(tonelist);
 	if (ts->name==NULL || ts->data==NULL) {
 		ast_log(LOG_WARNING, "Out of memory\n");
-		PTHREAD_MUTEX_UNLOCK(&tzlock);
+		ast_mutex_unlock(&tzlock);
 		return -2;
 	}
 	if (ps)
 		ps->next = ts;
 	else
 		zone->tones = ts;
-	PTHREAD_MUTEX_UNLOCK(&tzlock);
+	ast_mutex_unlock(&tzlock);
 	return 0;
 }
 
@@ -448,7 +445,7 @@ int ast_unregister_indication(struct tone_zone *zone, const char *indication)
 	if (zone->alias[0])
 		return -1;
 
-	if (PTHREAD_MUTEX_LOCK(&tzlock)) {
+	if (ast_mutex_lock(&tzlock)) {
 		ast_log(LOG_WARNING, "Unable to lock tone_zones list\n");
 		return -1;
 	}
@@ -474,6 +471,6 @@ int ast_unregister_indication(struct tone_zone *zone, const char *indication)
 		}
 	}
 	/* indication not found, goodbye */
-	PTHREAD_MUTEX_UNLOCK(&tzlock);
+	ast_mutex_unlock(&tzlock);
 	return res;
 }
diff --git a/loader.c b/loader.c
index 757352f78eb59a70aa6fcb83861672a2c69f5d2f..de5674c12d7fc32d7557391a9ca24990c20fea38 100755
--- a/loader.c
+++ b/loader.c
@@ -94,7 +94,7 @@ static struct loadupdate {
 	struct loadupdate *next;
 } *updaters = NULL;
 
-static pthread_mutex_t modlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t modlock = AST_MUTEX_INITIALIZER;
 
 static struct module *module_list=NULL;
 
@@ -102,7 +102,7 @@ int ast_unload_resource(char *resource_name, int force)
 {
 	struct module *m, *ml = NULL;
 	int res = -1;
-	if (ast_pthread_mutex_lock(&modlock))
+	if (ast_mutex_lock(&modlock))
 		ast_log(LOG_WARNING, "Failed to lock\n");
 	m = module_list;
 	while(m) {
@@ -112,7 +112,7 @@ int ast_unload_resource(char *resource_name, int force)
 					ast_log(LOG_WARNING, "Warning:  Forcing removal of module %s with use count %d\n", resource_name, res);
 				else {
 					ast_log(LOG_WARNING, "Soft unload failed, '%s' has use count %d\n", resource_name, res);
-					ast_pthread_mutex_unlock(&modlock);
+					ast_mutex_unlock(&modlock);
 					return -1;
 				}
 			}
@@ -120,7 +120,7 @@ int ast_unload_resource(char *resource_name, int force)
 			if (res) {
 				ast_log(LOG_WARNING, "Firm unload failed for %s\n", resource_name);
 				if (force <= AST_FORCE_FIRM) {
-					ast_pthread_mutex_unlock(&modlock);
+					ast_mutex_unlock(&modlock);
 					return -1;
 				} else
 					ast_log(LOG_WARNING, "** Dangerous **: Unloading resource anyway, at user request\n");
@@ -135,7 +135,7 @@ int ast_unload_resource(char *resource_name, int force)
 		ml = m;
 		m = m->next;
 	}
-	ast_pthread_mutex_unlock(&modlock);
+	ast_mutex_unlock(&modlock);
 	ast_update_use_count();
 	return res;
 }
@@ -150,7 +150,7 @@ void ast_module_reload(void)
 	ast_rtp_reload();
 	time(&ast_lastreloadtime);
 
-	ast_pthread_mutex_lock(&modlock);
+	ast_mutex_lock(&modlock);
 	m = module_list;
 	while(m) {
 		if (m->reload) {
@@ -160,7 +160,7 @@ void ast_module_reload(void)
 		}
 		m = m->next;
 	}
-	ast_pthread_mutex_unlock(&modlock);
+	ast_mutex_unlock(&modlock);
 }
 
 int ast_load_resource(char *resource_name)
@@ -198,13 +198,13 @@ int ast_load_resource(char *resource_name)
 #endif
 	}
 	
-	if (ast_pthread_mutex_lock(&modlock))
+	if (ast_mutex_lock(&modlock))
 		ast_log(LOG_WARNING, "Failed to lock\n");
 	m = module_list;
 	while(m) {
 		if (!strcasecmp(m->resource, resource_name)) {
 			ast_log(LOG_WARNING, "Module '%s' already exists\n", resource_name);
-			ast_pthread_mutex_unlock(&modlock);
+			ast_mutex_unlock(&modlock);
 			return -1;
 		}
 		m = m->next;
@@ -212,7 +212,7 @@ int ast_load_resource(char *resource_name)
 	m = malloc(sizeof(struct module));	
 	if (!m) {
 		ast_log(LOG_WARNING, "Out of memory\n");
-		ast_pthread_mutex_unlock(&modlock);
+		ast_mutex_unlock(&modlock);
 		return -1;
 	}
 	strncpy(m->resource, resource_name, sizeof(m->resource)-1);
@@ -225,7 +225,7 @@ int ast_load_resource(char *resource_name)
 	if (!m->lib) {
 		ast_log(LOG_WARNING, "%s\n", dlerror());
 		free(m);
-		ast_pthread_mutex_unlock(&modlock);
+		ast_mutex_unlock(&modlock);
 		return -1;
 	}
 	m->load_module = dlsym(m->lib, "load_module");
@@ -279,7 +279,7 @@ int ast_load_resource(char *resource_name)
 		ast_log(LOG_WARNING, "%d error(s) loading module %s, aborted\n", errors, fn);
 		dlclose(m->lib);
 		free(m);
-		ast_pthread_mutex_unlock(&modlock);
+		ast_mutex_unlock(&modlock);
 		return -1;
 	}
 	if (!fully_booted) {
@@ -294,7 +294,7 @@ int ast_load_resource(char *resource_name)
 	m->next = module_list;
 	
 	module_list = m;
-	ast_pthread_mutex_unlock(&modlock);
+	ast_mutex_unlock(&modlock);
 	if ((res = m->load_module())) {
 		ast_log(LOG_WARNING, "%s: load_module failed, returning %d\n", m->resource, res);
 		ast_unload_resource(resource_name, 0);
@@ -307,7 +307,7 @@ int ast_load_resource(char *resource_name)
 static int ast_resource_exists(char *resource)
 {
 	struct module *m;
-	if (ast_pthread_mutex_lock(&modlock))
+	if (ast_mutex_lock(&modlock))
 		ast_log(LOG_WARNING, "Failed to lock\n");
 	m = module_list;
 	while(m) {
@@ -315,7 +315,7 @@ static int ast_resource_exists(char *resource)
 			break;
 		m = m->next;
 	}
-	ast_pthread_mutex_unlock(&modlock);
+	ast_mutex_unlock(&modlock);
 	if (m)
 		return -1;
 	else
@@ -414,14 +414,14 @@ void ast_update_use_count(void)
 	/* Notify any module monitors that the use count for a 
 	   resource has changed */
 	struct loadupdate *m;
-	if (ast_pthread_mutex_lock(&modlock))
+	if (ast_mutex_lock(&modlock))
 		ast_log(LOG_WARNING, "Failed to lock\n");
 	m = updaters;
 	while(m) {
 		m->updater();
 		m = m->next;
 	}
-	ast_pthread_mutex_unlock(&modlock);
+	ast_mutex_unlock(&modlock);
 	
 }
 
@@ -429,7 +429,7 @@ int ast_update_module_list(int (*modentry)(char *module, char *description, int
 {
 	struct module *m;
 	int unlock = -1;
-	if (pthread_mutex_trylock(&modlock))
+	if (ast_mutex_trylock(&modlock))
 		unlock = 0;
 	m = module_list;
 	while(m) {
@@ -437,7 +437,7 @@ int ast_update_module_list(int (*modentry)(char *module, char *description, int
 		m = m->next;
 	}
 	if (unlock)
-		ast_pthread_mutex_unlock(&modlock);
+		ast_mutex_unlock(&modlock);
 	return 0;
 }
 
@@ -447,11 +447,11 @@ int ast_loader_register(int (*v)(void))
 	/* XXX Should be more flexible here, taking > 1 verboser XXX */
 	if ((tmp = malloc(sizeof (struct loadupdate)))) {
 		tmp->updater = v;
-		if (ast_pthread_mutex_lock(&modlock))
+		if (ast_mutex_lock(&modlock))
 			ast_log(LOG_WARNING, "Failed to lock\n");
 		tmp->next = updaters;
 		updaters = tmp;
-		ast_pthread_mutex_unlock(&modlock);
+		ast_mutex_unlock(&modlock);
 		return 0;
 	}
 	return -1;
@@ -461,7 +461,7 @@ int ast_loader_unregister(int (*v)(void))
 {
 	int res = -1;
 	struct loadupdate *tmp, *tmpl=NULL;
-	if (ast_pthread_mutex_lock(&modlock))
+	if (ast_mutex_lock(&modlock))
 		ast_log(LOG_WARNING, "Failed to lock\n");
 	tmp = updaters;
 	while(tmp) {
@@ -477,6 +477,6 @@ int ast_loader_unregister(int (*v)(void))
 	}
 	if (tmp)
 		res = 0;
-	ast_pthread_mutex_unlock(&modlock);
+	ast_mutex_unlock(&modlock);
 	return res;
 }
diff --git a/logger.c b/logger.c
index 66375de27a1ad01f38a3a3be1cd62e86daccdf67..30d37b11faf573c9fbcc4acbb0df0a4621951b3b 100755
--- a/logger.c
+++ b/logger.c
@@ -31,8 +31,8 @@
 
 #define MAX_MSG_QUEUE 200
 
-static pthread_mutex_t msglist_lock = AST_MUTEX_INITIALIZER;
-static pthread_mutex_t loglock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t msglist_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t loglock = AST_MUTEX_INITIALIZER;
 
 static struct msglist {
 	char *msg;
@@ -131,7 +131,7 @@ static void init_logger_chain(void)
 	struct ast_config *cfg;
 	struct ast_variable *var;
 
-	ast_pthread_mutex_lock(&loglock);
+	ast_mutex_lock(&loglock);
 
 	/* Free anything that is here */
 	f = logfiles;
@@ -145,13 +145,13 @@ static void init_logger_chain(void)
 
 	logfiles = NULL;
 
-	ast_pthread_mutex_unlock(&loglock);
+	ast_mutex_unlock(&loglock);
 	cfg = ast_load("logger.conf");
-	ast_pthread_mutex_lock(&loglock);
+	ast_mutex_lock(&loglock);
 	
 	/* If no config file, we're fine */
 	if (!cfg) {
-		ast_pthread_mutex_unlock(&loglock);
+		ast_mutex_unlock(&loglock);
 		return;
 	}
 	var = ast_variable_browse(cfg, "logfiles");
@@ -168,7 +168,7 @@ static void init_logger_chain(void)
 		logfiles = make_logfile("ignore", "", -1);
 	}
 	ast_destroy(cfg);
-	ast_pthread_mutex_unlock(&loglock);
+	ast_mutex_unlock(&loglock);
 	
 
 }
@@ -199,13 +199,13 @@ int init_logger(void)
 int reload_logger(void)
 {
 	char tmp[AST_CONFIG_MAX_PATH];
-	ast_pthread_mutex_lock(&loglock);
+	ast_mutex_lock(&loglock);
 	if (eventlog)
 		fclose(eventlog);
 	mkdir((char *)ast_config_AST_LOG_DIR, 0755);
 	snprintf(tmp, sizeof(tmp), "%s/%s", (char *)ast_config_AST_LOG_DIR, EVENTLOG);
 	eventlog = fopen((char *)tmp, "a");
-	ast_pthread_mutex_unlock(&loglock);
+	ast_mutex_unlock(&loglock);
 
 	if (eventlog) {
 		init_logger_chain();
@@ -235,7 +235,7 @@ extern void ast_log(int level, const char *file, int line, const char *function,
 	if (!option_verbose && !option_debug && (!level)) {
 		return;
 	}
-	ast_pthread_mutex_lock(&loglock);
+	ast_mutex_lock(&loglock);
 	if (level == 1 /* Event */) {
 		time(&t);
 		localtime_r(&t,&tm);
@@ -285,7 +285,7 @@ extern void ast_log(int level, const char *file, int line, const char *function,
 			fflush(stdout);
 		}
 	}
-	ast_pthread_mutex_unlock(&loglock);
+	ast_mutex_unlock(&loglock);
 }
 
 extern void ast_verbose(const char *fmt, ...)
@@ -297,7 +297,7 @@ extern void ast_verbose(const char *fmt, ...)
 	struct verb *v;
 	va_list ap;
 	va_start(ap, fmt);
-	ast_pthread_mutex_lock(&msglist_lock);
+	ast_mutex_lock(&msglist_lock);
 	vsnprintf(stuff + pos, sizeof(stuff) - pos, fmt, ap);
 	opos = pos;
 	pos = strlen(stuff);
@@ -346,20 +346,20 @@ extern void ast_verbose(const char *fmt, ...)
 	else 
 		replacelast = pos = 0;
 	va_end(ap);
-	ast_pthread_mutex_unlock(&msglist_lock);
+	ast_mutex_unlock(&msglist_lock);
 }
 
 int ast_verbose_dmesg(void (*v)(const char *string, int opos, int replacelast, int complete))
 {
 	struct msglist *m;
 	m = list;
-	ast_pthread_mutex_lock(&msglist_lock);
+	ast_mutex_lock(&msglist_lock);
 	while(m) {
 		/* Send all the existing entries that we have queued (i.e. they're likely to have missed) */
 		v(m->msg, 0, 0, 1);
 		m = m->next;
 	}
-	ast_pthread_mutex_unlock(&msglist_lock);
+	ast_mutex_unlock(&msglist_lock);
 	return 0;
 }
 
@@ -370,7 +370,7 @@ int ast_register_verbose(void (*v)(const char *string, int opos, int replacelast
 	/* XXX Should be more flexible here, taking > 1 verboser XXX */
 	if ((tmp = malloc(sizeof (struct verb)))) {
 		tmp->verboser = v;
-		ast_pthread_mutex_lock(&msglist_lock);
+		ast_mutex_lock(&msglist_lock);
 		tmp->next = verboser;
 		verboser = tmp;
 		m = list;
@@ -379,7 +379,7 @@ int ast_register_verbose(void (*v)(const char *string, int opos, int replacelast
 			v(m->msg, 0, 0, 1);
 			m = m->next;
 		}
-		ast_pthread_mutex_unlock(&msglist_lock);
+		ast_mutex_unlock(&msglist_lock);
 		return 0;
 	}
 	return -1;
@@ -389,7 +389,7 @@ int ast_unregister_verbose(void (*v)(const char *string, int opos, int replacela
 {
 	int res = -1;
 	struct verb *tmp, *tmpl=NULL;
-	ast_pthread_mutex_lock(&msglist_lock);
+	ast_mutex_lock(&msglist_lock);
 	tmp = verboser;
 	while(tmp) {
 		if (tmp->verboser == v)	{
@@ -405,6 +405,6 @@ int ast_unregister_verbose(void (*v)(const char *string, int opos, int replacela
 	}
 	if (tmp)
 		res = 0;
-	ast_pthread_mutex_unlock(&msglist_lock);
+	ast_mutex_unlock(&msglist_lock);
 	return res;
 }
diff --git a/manager.c b/manager.c
index 3cbdb1d7401d4288e109817609d80dd64fadfbe8..1162c18fc11082463bdf8523e0c488c7dd50051b 100755
--- a/manager.c
+++ b/manager.c
@@ -42,7 +42,7 @@ static int enabled = 0;
 static int portno = DEFAULT_MANAGER_PORT;
 static int asock = -1;
 static pthread_t t;
-static pthread_mutex_t sessionlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t sessionlock = AST_MUTEX_INITIALIZER;
 
 static struct permalias {
 	int num;
@@ -60,19 +60,19 @@ static struct permalias {
 
 static struct mansession *sessions = NULL;
 static struct manager_action *first_action = NULL;
-static pthread_mutex_t actionlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t actionlock = AST_MUTEX_INITIALIZER;
 
 static int handle_showmancmds(int fd, int argc, char *argv[])
 {
 	struct manager_action *cur = first_action;
 
-	ast_pthread_mutex_lock(&actionlock);
+	ast_mutex_lock(&actionlock);
 	while(cur) { /* Walk the list of actions */
 		ast_cli(fd, "\t%s  %s\r\n",cur->action, cur->synopsis);
 		cur = cur->next;
 	}
 
-	ast_pthread_mutex_unlock(&actionlock);
+	ast_mutex_unlock(&actionlock);
 	return RESULT_SUCCESS;
 }
 
@@ -80,7 +80,7 @@ static int handle_showmanconn(int fd, int argc, char *argv[])
 {
 	struct mansession *s;
 
-	ast_pthread_mutex_lock(&sessionlock);
+	ast_mutex_lock(&sessionlock);
 	s = sessions;
 	ast_cli(fd, "  Username\tIP Address\n");
 	while(s) {
@@ -88,7 +88,7 @@ static int handle_showmanconn(int fd, int argc, char *argv[])
 		s = s->next;
 	}
 
-	ast_pthread_mutex_unlock(&sessionlock);
+	ast_mutex_unlock(&sessionlock);
 	return RESULT_SUCCESS;
 }
 
@@ -112,7 +112,7 @@ static struct ast_cli_entry show_manconn_cli =
 static void destroy_session(struct mansession *s)
 {
 	struct mansession *cur, *prev = NULL;
-	ast_pthread_mutex_lock(&sessionlock);
+	ast_mutex_lock(&sessionlock);
 	cur = sessions;
 	while(cur) {
 		if (cur == s)
@@ -130,7 +130,7 @@ static void destroy_session(struct mansession *s)
 		free(s);
 	} else
 		ast_log(LOG_WARNING, "Trying to delete non-existant session %p?\n", s);
-	ast_pthread_mutex_unlock(&sessionlock);
+	ast_mutex_unlock(&sessionlock);
 	
 }
 
@@ -147,21 +147,21 @@ char *astman_get_header(struct message *m, char *var)
 
 void astman_send_error(struct mansession *s, char *error)
 {
-	ast_pthread_mutex_lock(&s->lock);
+	ast_mutex_lock(&s->lock);
 	ast_cli(s->fd, "Response: Error\r\n");
 	ast_cli(s->fd, "Message: %s\r\n\r\n", error);
-	ast_pthread_mutex_unlock(&s->lock);
+	ast_mutex_unlock(&s->lock);
 }
 
 void astman_send_response(struct mansession *s, char *resp, char *msg)
 {
-	ast_pthread_mutex_lock(&s->lock);
+	ast_mutex_lock(&s->lock);
 	ast_cli(s->fd, "Response: %s\r\n", resp);
 	if (msg)
 		ast_cli(s->fd, "Message: %s\r\n\r\n", msg);
 	else
 		ast_cli(s->fd, "\r\n");
-	ast_pthread_mutex_unlock(&s->lock);
+	ast_mutex_unlock(&s->lock);
 }
 
 void astman_send_ack(struct mansession *s, char *msg)
@@ -385,15 +385,15 @@ static int action_redirect(struct mansession *s, struct message *m)
 static int action_command(struct mansession *s, struct message *m)
 {
 	char *cmd = astman_get_header(m, "Command");
-	ast_pthread_mutex_lock(&s->lock);
+	ast_mutex_lock(&s->lock);
 	s->blocking = 1;
-	ast_pthread_mutex_unlock(&s->lock);
+	ast_mutex_unlock(&s->lock);
 	ast_cli(s->fd, "Response: Follows\r\n");
 	ast_cli_command(s->fd, cmd);
 	ast_cli(s->fd, "--END COMMAND--\r\n\r\n");
-	ast_pthread_mutex_lock(&s->lock);
+	ast_mutex_lock(&s->lock);
 	s->blocking = 0;
-	ast_pthread_mutex_unlock(&s->lock);
+	ast_mutex_unlock(&s->lock);
 	return 0;
 }
 
@@ -549,9 +549,9 @@ static int process_message(struct mansession *s, struct message *m)
 			authtype = astman_get_header(m, "AuthType");
 			if (!strcasecmp(authtype, "MD5")) {
 				if (!s->challenge || !strlen(s->challenge)) {
-					ast_pthread_mutex_lock(&s->lock);
+					ast_mutex_lock(&s->lock);
 					snprintf(s->challenge, sizeof(s->challenge), "%d", rand());
-					ast_pthread_mutex_unlock(&s->lock);
+					ast_mutex_unlock(&s->lock);
 				}
 				ast_cli(s->fd, "Response: Success\r\nChallenge: %s\r\n\r\n", s->challenge);
 				return 0;
@@ -619,9 +619,9 @@ static int get_input(struct mansession *s, char *output)
 	if (res < 0) {
 		ast_log(LOG_WARNING, "Select returned error: %s\n", strerror(errno));
 	} else if (res > 0) {
-		ast_pthread_mutex_lock(&s->lock);
+		ast_mutex_lock(&s->lock);
 		res = read(s->fd, s->inbuf + s->inlen, sizeof(s->inbuf) - 1 - s->inlen);
-		ast_pthread_mutex_unlock(&s->lock);
+		ast_mutex_unlock(&s->lock);
 		if (res < 1)
 			return -1;
 	}
@@ -636,9 +636,9 @@ static void *session_do(void *data)
 	struct message m;
 	int res;
 	
-	ast_pthread_mutex_lock(&s->lock);
+	ast_mutex_lock(&s->lock);
 	ast_cli(s->fd, "Asterisk Call Manager/1.0\r\n");
-	ast_pthread_mutex_unlock(&s->lock);
+	ast_mutex_unlock(&s->lock);
 	memset(&m, 0, sizeof(&m));
 	for (;;) {
 		res = get_input(s, m.headers[m.hdrcount]);
@@ -702,12 +702,12 @@ static void *accept_thread(void *ignore)
 		} 
 		memset(s, 0, sizeof(struct mansession));
 		memcpy(&s->sin, &sin, sizeof(sin));
-		ast_pthread_mutex_init(&s->lock);
+		ast_mutex_init(&s->lock);
 		s->fd = as;
-		ast_pthread_mutex_lock(&sessionlock);
+		ast_mutex_lock(&sessionlock);
 		s->next = sessions;
 		sessions = s;
-		ast_pthread_mutex_unlock(&sessionlock);
+		ast_mutex_unlock(&sessionlock);
 		if (pthread_create(&t, &attr, session_do, s))
 			destroy_session(s);
 	}
@@ -721,11 +721,11 @@ int manager_event(int category, char *event, char *fmt, ...)
 	char tmp[4096];
 	va_list ap;
 
-	ast_pthread_mutex_lock(&sessionlock);
+	ast_mutex_lock(&sessionlock);
 	s = sessions;
 	while(s) {
 		if ((s->readperm & category) == category) {
-			ast_pthread_mutex_lock(&s->lock);
+			ast_mutex_lock(&s->lock);
 			if (!s->blocking) {
 				ast_cli(s->fd, "Event: %s\r\n", event);
 				va_start(ap, fmt);
@@ -734,31 +734,31 @@ int manager_event(int category, char *event, char *fmt, ...)
 				write(s->fd, tmp, strlen(tmp));
 				ast_cli(s->fd, "\r\n");
 			}
-			ast_pthread_mutex_unlock(&s->lock);
+			ast_mutex_unlock(&s->lock);
 		}
 		s = s->next;
 	}
-	ast_pthread_mutex_unlock(&sessionlock);
+	ast_mutex_unlock(&sessionlock);
 	return 0;
 }
 
 int ast_manager_unregister( char *action ) {
 	struct manager_action *cur = first_action, *prev = first_action;
 
-	ast_pthread_mutex_lock(&actionlock);
+	ast_mutex_lock(&actionlock);
 	while( cur ) { 		
 		if (!strcasecmp(action, cur->action)) {
 			prev->next = cur->next;
 			free(cur);
 			if (option_verbose > 1) 
 				ast_verbose(VERBOSE_PREFIX_2 "Manager unregistered action %s\n", action);
-			ast_pthread_mutex_unlock(&actionlock);
+			ast_mutex_unlock(&actionlock);
 			return 0;
 		}
 		prev = cur;
 		cur = cur->next;
 	}
-	ast_pthread_mutex_unlock(&actionlock);
+	ast_mutex_unlock(&actionlock);
 	return 0;
 }
 
@@ -774,7 +774,7 @@ int ast_manager_register( char *action, int auth,
 {
 	struct manager_action *cur = first_action, *prev = NULL;
 
-	ast_pthread_mutex_lock(&actionlock);
+	ast_mutex_lock(&actionlock);
 	while(cur) { /* Walk the list of actions */
 		prev = cur; 
 		cur = cur->next;
@@ -782,7 +782,7 @@ int ast_manager_register( char *action, int auth,
 	cur = malloc( sizeof(struct manager_action) );
 	if( !cur ) {
 		ast_log(LOG_WARNING, "Manager: out of memory trying to register action\n");
-		ast_pthread_mutex_unlock(&actionlock);
+		ast_mutex_unlock(&actionlock);
 		return -1;
 	}
 	strncpy( cur->action, action, 255 );
@@ -796,7 +796,7 @@ int ast_manager_register( char *action, int auth,
 
 	if (option_verbose > 1) 
 		ast_verbose(VERBOSE_PREFIX_2 "Manager registered action %s\n", action);
-	ast_pthread_mutex_unlock(&actionlock);
+	ast_mutex_unlock(&actionlock);
 	return 0;
 }
 
diff --git a/pbx.c b/pbx.c
index 7e1c0a1ee46ca4371f578635f72c4b12712e6f75..ff1740afe4eafc6acaa15797329a13d17a649110 100755
--- a/pbx.c
+++ b/pbx.c
@@ -102,7 +102,7 @@ struct ast_context {
 	/* Name of the context */
 	char name[AST_MAX_EXTENSION];
 	/* A lock to prevent multiple threads from clobbering the context */
-	pthread_mutex_t lock;
+	ast_mutex_t lock;
 	/* The root of the list of extensions */
 	struct ast_exten *root;
 	/* Link them together */
@@ -335,18 +335,18 @@ static struct pbx_builtin {
 };
 
 /* Lock for the application list */
-static pthread_mutex_t applock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t applock = AST_MUTEX_INITIALIZER;
 static struct ast_context *contexts = NULL;
 /* Lock for the ast_context list */
-static pthread_mutex_t conlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t conlock = AST_MUTEX_INITIALIZER;
 static struct ast_app *apps = NULL;
 
 /* Lock for switches */
-static pthread_mutex_t switchlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t switchlock = AST_MUTEX_INITIALIZER;
 struct ast_switch *switches = NULL;
 
 /* Lock for extension state notifys */
-static pthread_mutex_t hintlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t hintlock = AST_MUTEX_INITIALIZER;
 static int stateid = 1;
 struct ast_hint *hints = NULL;
 struct ast_state_cb *statecbs = NULL;
@@ -409,7 +409,7 @@ int pbx_exec(struct ast_channel *c, /* Channel */
 struct ast_app *pbx_findapp(char *app) 
 {
 	struct ast_app *tmp;
-	if (ast_pthread_mutex_lock(&applock)) {
+	if (ast_mutex_lock(&applock)) {
 		ast_log(LOG_WARNING, "Unable to obtain application lock\n");
 		return NULL;
 	}
@@ -419,14 +419,14 @@ struct ast_app *pbx_findapp(char *app)
 			break;
 		tmp = tmp->next;
 	}
-	ast_pthread_mutex_unlock(&applock);
+	ast_mutex_unlock(&applock);
 	return tmp;
 }
 
 static struct ast_switch *pbx_findswitch(char *sw)
 {
 	struct ast_switch *asw;
-	if (ast_pthread_mutex_lock(&switchlock)) {
+	if (ast_mutex_lock(&switchlock)) {
 		ast_log(LOG_WARNING, "Unable to obtain application lock\n");
 		return NULL;
 	}
@@ -436,7 +436,7 @@ static struct ast_switch *pbx_findswitch(char *sw)
 			break;
 		asw = asw->next;
 	}
-	ast_pthread_mutex_unlock(&switchlock);
+	ast_mutex_unlock(&switchlock);
 	return asw;
 }
 
@@ -589,7 +589,7 @@ static int extension_close(char *pattern, char *data, int needmore)
 struct ast_context *ast_context_find(char *name)
 {
 	struct ast_context *tmp;
-	ast_pthread_mutex_lock(&conlock);
+	ast_mutex_lock(&conlock);
 	if (name) {
 		tmp = contexts;
 		while(tmp) {
@@ -599,7 +599,7 @@ struct ast_context *ast_context_find(char *name)
 		}
 	} else
 		tmp = contexts;
-	ast_pthread_mutex_unlock(&conlock);
+	ast_mutex_unlock(&conlock);
 	return tmp;
 }
 
@@ -1092,7 +1092,7 @@ static int pbx_extension_helper(struct ast_channel *c, char *context, char *exte
 	char tmp[80];
 	char tmp2[80];
 	char tmp3[256];
-	if (ast_pthread_mutex_lock(&conlock)) {
+	if (ast_mutex_lock(&conlock)) {
 		ast_log(LOG_WARNING, "Unable to obtain lock\n");
 		if ((action == HELPER_EXISTS) || (action == HELPER_CANMATCH) || (action == HELPER_MATCHMORE))
 			return 0;
@@ -1103,20 +1103,20 @@ static int pbx_extension_helper(struct ast_channel *c, char *context, char *exte
 	if (e) {
 		switch(action) {
 		case HELPER_CANMATCH:
-			pthread_mutex_unlock(&conlock);
+			ast_mutex_unlock(&conlock);
 			return -1;
 		case HELPER_EXISTS:
-			pthread_mutex_unlock(&conlock);
+			ast_mutex_unlock(&conlock);
 			return -1;
 		case HELPER_MATCHMORE:
-			pthread_mutex_unlock(&conlock);
+			ast_mutex_unlock(&conlock);
 			return -1;
 		case HELPER_SPAWN:
 			newstack++;
 			/* Fall through */
 		case HELPER_EXEC:
 			app = pbx_findapp(e->app);
-			pthread_mutex_unlock(&conlock);
+			ast_mutex_unlock(&conlock);
 			if (app) {
 				if (c->context != context)
 					strncpy(c->context, context, sizeof(c->context-1));
@@ -1144,19 +1144,19 @@ static int pbx_extension_helper(struct ast_channel *c, char *context, char *exte
 	} else if (sw) {
 		switch(action) {
 		case HELPER_CANMATCH:
-			pthread_mutex_unlock(&conlock);
+			ast_mutex_unlock(&conlock);
 			return -1;
 		case HELPER_EXISTS:
-			pthread_mutex_unlock(&conlock);
+			ast_mutex_unlock(&conlock);
 			return -1;
 		case HELPER_MATCHMORE:
-			pthread_mutex_unlock(&conlock);
+			ast_mutex_unlock(&conlock);
 			return -1;
 		case HELPER_SPAWN:
 			newstack++;
 			/* Fall through */
 		case HELPER_EXEC:
-			pthread_mutex_unlock(&conlock);
+			ast_mutex_unlock(&conlock);
 			if (sw->exec)
 				res = sw->exec(c, context, exten, priority, callerid, newstack, data);
 			else {
@@ -1169,7 +1169,7 @@ static int pbx_extension_helper(struct ast_channel *c, char *context, char *exte
 			return -1;
 		}
 	} else {
-		pthread_mutex_unlock(&conlock);
+		ast_mutex_unlock(&conlock);
 		switch(status) {
 		case STATUS_NO_CONTEXT:
 			if ((action != HELPER_EXISTS) && (action != HELPER_MATCHMORE))
@@ -1203,12 +1203,12 @@ static struct ast_exten *ast_hint_extension(struct ast_channel *c, char *context
 	char *incstack[AST_PBX_MAX_STACK];
 	int stacklen = 0;
 
-	if (ast_pthread_mutex_lock(&conlock)) {
+	if (ast_mutex_lock(&conlock)) {
 		ast_log(LOG_WARNING, "Unable to obtain lock\n");
 		return NULL;
 	}
 	e = pbx_find_extension(c, context, exten, PRIORITY_HINT, "", HELPER_EXISTS, incstack, &stacklen, &status, &sw, &data);
-	ast_pthread_mutex_unlock(&conlock);	
+	ast_mutex_unlock(&conlock);	
 	return e;
 }
 
@@ -1300,7 +1300,7 @@ int ast_device_state_changed(const char *fmt, ...)
 	*rest = 0;
     }
         
-    pthread_mutex_lock(&hintlock);
+    ast_mutex_lock(&hintlock);
 
     list = hints;
     
@@ -1343,7 +1343,7 @@ int ast_device_state_changed(const char *fmt, ...)
 	list = list->next;
     }
 
-    pthread_mutex_unlock(&hintlock);
+    ast_mutex_unlock(&hintlock);
     return 1;
 }
 			
@@ -1356,13 +1356,13 @@ int ast_extension_state_add(char *context, char *exten,
 
     /* No context and extension add callback to statecbs list */
     if (!context && !exten) {
-	pthread_mutex_lock(&hintlock);
+	ast_mutex_lock(&hintlock);
 
 	cblist = statecbs;
 	while (cblist) {
 	    if (cblist->callback == callback) {
 		cblist->data = data;
-		pthread_mutex_unlock(&hintlock);
+		ast_mutex_unlock(&hintlock);
 	    }
 	    
 	    cblist = cblist->next;
@@ -1371,7 +1371,7 @@ int ast_extension_state_add(char *context, char *exten,
 	/* Now inserts the callback */
 	cblist = malloc(sizeof(struct ast_state_cb));
 	if (!cblist) {
-	    pthread_mutex_unlock(&hintlock);
+	    ast_mutex_unlock(&hintlock);
 	    return -1;
 	}
 	memset(cblist, 0, sizeof(struct ast_state_cb));
@@ -1382,7 +1382,7 @@ int ast_extension_state_add(char *context, char *exten,
         cblist->next = statecbs;
 	statecbs = cblist;
 
-	pthread_mutex_unlock(&hintlock);
+	ast_mutex_unlock(&hintlock);
 	return 0;
     }
 
@@ -1395,7 +1395,7 @@ int ast_extension_state_add(char *context, char *exten,
         return -1;
     }
     
-    pthread_mutex_lock(&hintlock);
+    ast_mutex_lock(&hintlock);
     list = hints;        
     
     while (list) {
@@ -1405,14 +1405,14 @@ int ast_extension_state_add(char *context, char *exten,
     }
 
     if (!list) {
-	pthread_mutex_unlock(&hintlock);
+	ast_mutex_unlock(&hintlock);
 	return -1;
     }
 
     /* Now inserts the callback */
     cblist = malloc(sizeof(struct ast_state_cb));
     if (!cblist) {
-	pthread_mutex_unlock(&hintlock);
+	ast_mutex_unlock(&hintlock);
 	return -1;
     }
     memset(cblist, 0, sizeof(struct ast_state_cb));
@@ -1423,7 +1423,7 @@ int ast_extension_state_add(char *context, char *exten,
     cblist->next = list->callbacks;
     list->callbacks = cblist;
 
-    pthread_mutex_unlock(&hintlock);
+    ast_mutex_unlock(&hintlock);
     return cblist->id;
 }
 
@@ -1435,7 +1435,7 @@ int ast_extension_state_del(int id, ast_state_cb_type callback)
     if (!id && !callback)
 	return -1;
             
-    pthread_mutex_lock(&hintlock);
+    ast_mutex_lock(&hintlock);
 
     /* id is zero is a callback without extension */
     if (!id) {
@@ -1450,14 +1450,14 @@ int ast_extension_state_del(int id, ast_state_cb_type callback)
 
 		free(cblist);
 
-	        pthread_mutex_unlock(&hintlock);
+	        ast_mutex_unlock(&hintlock);
 		return 0;
 	    }
 	    cbprev = cblist;
 	    cblist = cblist->next;
 	}
 
-        pthread_mutex_lock(&hintlock);
+        ast_mutex_lock(&hintlock);
 	return -1;
     }
 
@@ -1475,7 +1475,7 @@ int ast_extension_state_del(int id, ast_state_cb_type callback)
 		
 		free(cblist);
 		
-		pthread_mutex_unlock(&hintlock);
+		ast_mutex_unlock(&hintlock);
 		return 0;		
 	    }		
     	    cbprev = cblist;				
@@ -1484,7 +1484,7 @@ int ast_extension_state_del(int id, ast_state_cb_type callback)
 	list = list->next;
     }
     
-    pthread_mutex_unlock(&hintlock);
+    ast_mutex_unlock(&hintlock);
     return -1;
 }
 
@@ -1494,13 +1494,13 @@ static int ast_add_hint(struct ast_exten *e)
 
     if (!e) return -1;
     
-    pthread_mutex_lock(&hintlock);
+    ast_mutex_lock(&hintlock);
     list = hints;        
     
     /* Search if hint exists, do nothing */
     while (list) {
 	if (list->exten == e) {
-	    pthread_mutex_unlock(&hintlock);
+	    ast_mutex_unlock(&hintlock);
 	    return -1;
 	}
 	list = list->next;    
@@ -1508,7 +1508,7 @@ static int ast_add_hint(struct ast_exten *e)
 
     list = malloc(sizeof(struct ast_hint));
     if (!list) {
-	pthread_mutex_unlock(&hintlock);
+	ast_mutex_unlock(&hintlock);
 	return -1;
     }
     /* Initialize and insert new item */
@@ -1518,7 +1518,7 @@ static int ast_add_hint(struct ast_exten *e)
     list->next = hints;
     hints = list;
 
-    pthread_mutex_unlock(&hintlock);
+    ast_mutex_unlock(&hintlock);
     return 0;
 }
 
@@ -1526,19 +1526,19 @@ static int ast_change_hint(struct ast_exten *oe, struct ast_exten *ne)
 { 
     struct ast_hint *list;
 
-    pthread_mutex_lock(&hintlock);
+    ast_mutex_lock(&hintlock);
     
     list = hints;
     
     while(list) {
 	if (list->exten == oe) {
 	    list->exten = ne;
-	    pthread_mutex_unlock(&hintlock);	
+	    ast_mutex_unlock(&hintlock);	
 	    return 0;
 	}
 	list = list->next;
     }
-    pthread_mutex_unlock(&hintlock);
+    ast_mutex_unlock(&hintlock);
 
     return -1;
 }
@@ -1552,7 +1552,7 @@ static int ast_remove_hint(struct ast_exten *e)
     if (!e) 
 	return -1;
 
-    pthread_mutex_lock(&hintlock);
+    ast_mutex_lock(&hintlock);
 
     list = hints;    
     while(list) {
@@ -1575,7 +1575,7 @@ static int ast_remove_hint(struct ast_exten *e)
 
 	    free(list);
 	    
-	    pthread_mutex_unlock(&hintlock);
+	    ast_mutex_unlock(&hintlock);
 	    return 0;
 	} else {
 	    prev = list;
@@ -1583,7 +1583,7 @@ static int ast_remove_hint(struct ast_exten *e)
 	}
     }
 
-    pthread_mutex_unlock(&hintlock);
+    ast_mutex_unlock(&hintlock);
     return -1;
 }
 
@@ -1901,7 +1901,7 @@ int ast_context_remove_include2(struct ast_context *con, char *include, char *re
 {
 	struct ast_include *i, *pi = NULL;
 
-	if (ast_pthread_mutex_lock(&con->lock)) return -1;
+	if (ast_mutex_lock(&con->lock)) return -1;
 
 	/* walk includes */
 	i = con->includes;
@@ -1916,7 +1916,7 @@ int ast_context_remove_include2(struct ast_context *con, char *include, char *re
 				con->includes = i->next;
 			/* free include and return */
 			free(i);
-			ast_pthread_mutex_unlock(&con->lock);
+			ast_mutex_unlock(&con->lock);
 			return 0;
 		}
 		pi = i;
@@ -1924,7 +1924,7 @@ int ast_context_remove_include2(struct ast_context *con, char *include, char *re
 	}
 
 	/* we can't find the right include */
-	ast_pthread_mutex_unlock(&con->lock);
+	ast_mutex_unlock(&con->lock);
 	return -1;
 }
 
@@ -1973,7 +1973,7 @@ int ast_context_remove_switch2(struct ast_context *con, char *sw, char *data, ch
 {
 	struct ast_sw *i, *pi = NULL;
 
-	if (ast_pthread_mutex_lock(&con->lock)) return -1;
+	if (ast_mutex_lock(&con->lock)) return -1;
 
 	/* walk switchs */
 	i = con->alts;
@@ -1988,7 +1988,7 @@ int ast_context_remove_switch2(struct ast_context *con, char *sw, char *data, ch
 				con->alts = i->next;
 			/* free switch and return */
 			free(i);
-			ast_pthread_mutex_unlock(&con->lock);
+			ast_mutex_unlock(&con->lock);
 			return 0;
 		}
 		pi = i;
@@ -1996,7 +1996,7 @@ int ast_context_remove_switch2(struct ast_context *con, char *sw, char *data, ch
 	}
 
 	/* we can't find the right switch */
-	ast_pthread_mutex_unlock(&con->lock);
+	ast_mutex_unlock(&con->lock);
 	return -1;
 }
 
@@ -2045,7 +2045,7 @@ int ast_context_remove_extension2(struct ast_context *con, char *extension, int
 {
 	struct ast_exten *exten, *prev_exten = NULL;
 
-	if (ast_pthread_mutex_lock(&con->lock)) return -1;
+	if (ast_mutex_lock(&con->lock)) return -1;
 
 	/* go through all extensions in context and search the right one ... */
 	exten = con->root;
@@ -2078,7 +2078,7 @@ int ast_context_remove_extension2(struct ast_context *con, char *extension, int
 					peer = exten;
 				}
 
-				ast_pthread_mutex_unlock(&con->lock);
+				ast_mutex_unlock(&con->lock);
 				return 0;
 			} else {
 				/* remove only extension with exten->priority == priority */
@@ -2121,7 +2121,7 @@ int ast_context_remove_extension2(struct ast_context *con, char *extension, int
 						peer->datad(peer->data);
 						free(peer);
 
-						ast_pthread_mutex_unlock(&con->lock);
+						ast_mutex_unlock(&con->lock);
 						return 0;
 					} else {
 						/* this is not right extension, skip to next peer */
@@ -2130,7 +2130,7 @@ int ast_context_remove_extension2(struct ast_context *con, char *extension, int
 					}
 				}
 
-				ast_pthread_mutex_unlock(&con->lock);
+				ast_mutex_unlock(&con->lock);
 				return -1;
 			}
 		}
@@ -2140,7 +2140,7 @@ int ast_context_remove_extension2(struct ast_context *con, char *extension, int
 	}
 
 	/* we can't find right extension */
-	ast_pthread_mutex_unlock(&con->lock);
+	ast_mutex_unlock(&con->lock);
 	return -1;
 }
 
@@ -2149,7 +2149,7 @@ int ast_register_application(char *app, int (*execute)(struct ast_channel *, voi
 {
 	struct ast_app *tmp, *prev, *cur;
 	char tmps[80];
-	if (ast_pthread_mutex_lock(&applock)) {
+	if (ast_mutex_lock(&applock)) {
 		ast_log(LOG_ERROR, "Unable to lock application list\n");
 		return -1;
 	}
@@ -2157,7 +2157,7 @@ int ast_register_application(char *app, int (*execute)(struct ast_channel *, voi
 	while(tmp) {
 		if (!strcasecmp(app, tmp->name)) {
 			ast_log(LOG_WARNING, "Already have an application '%s'\n", app);
-			ast_pthread_mutex_unlock(&applock);
+			ast_mutex_unlock(&applock);
 			return -1;
 		}
 		tmp = tmp->next;
@@ -2187,19 +2187,19 @@ int ast_register_application(char *app, int (*execute)(struct ast_channel *, voi
 		}
 	} else {
 		ast_log(LOG_WARNING, "Out of memory\n");
-		ast_pthread_mutex_unlock(&applock);
+		ast_mutex_unlock(&applock);
 		return -1;
 	}
 	if (option_verbose > 1)
 		ast_verbose( VERBOSE_PREFIX_2 "Registered application '%s'\n", term_color(tmps, tmp->name, COLOR_BRCYAN, 0, sizeof(tmps)));
-	ast_pthread_mutex_unlock(&applock);
+	ast_mutex_unlock(&applock);
 	return 0;
 }
 
 int ast_register_switch(struct ast_switch *sw)
 {
 	struct ast_switch *tmp, *prev=NULL;
-	if (ast_pthread_mutex_lock(&switchlock)) {
+	if (ast_mutex_lock(&switchlock)) {
 		ast_log(LOG_ERROR, "Unable to lock switch lock\n");
 		return -1;
 	}
@@ -2211,7 +2211,7 @@ int ast_register_switch(struct ast_switch *sw)
 		tmp = tmp->next;
 	}
 	if (tmp) {	
-		ast_pthread_mutex_unlock(&switchlock);
+		ast_mutex_unlock(&switchlock);
 		ast_log(LOG_WARNING, "Switch '%s' already found\n", sw->name);
 		return -1;
 	}
@@ -2220,14 +2220,14 @@ int ast_register_switch(struct ast_switch *sw)
 		prev->next = sw;
 	else
 		switches = sw;
-	ast_pthread_mutex_unlock(&switchlock);
+	ast_mutex_unlock(&switchlock);
 	return 0;
 }
 
 void ast_unregister_switch(struct ast_switch *sw)
 {
 	struct ast_switch *tmp, *prev=NULL;
-	if (ast_pthread_mutex_lock(&switchlock)) {
+	if (ast_mutex_lock(&switchlock)) {
 		ast_log(LOG_ERROR, "Unable to lock switch lock\n");
 		return;
 	}
@@ -2244,7 +2244,7 @@ void ast_unregister_switch(struct ast_switch *sw)
 		prev = tmp;
 		tmp = tmp->next;
 	}
-	ast_pthread_mutex_unlock(&switchlock);
+	ast_mutex_unlock(&switchlock);
 }
 
 /*
@@ -2287,7 +2287,7 @@ static char *complete_show_application(char *line, char *word,
 	int which = 0;
 
 	/* try to lock applications list ... */
-	if (ast_pthread_mutex_lock(&applock)) {
+	if (ast_mutex_lock(&applock)) {
 		ast_log(LOG_ERROR, "Unable to lock application list\n");
 		return NULL;
 	}
@@ -2300,7 +2300,7 @@ static char *complete_show_application(char *line, char *word,
 			/* ... if this is right app serve it ... */
 			if (++which > state) {
 				char *ret = strdup(a->name);
-				ast_pthread_mutex_unlock(&applock);
+				ast_mutex_unlock(&applock);
 				return ret;
 			}
 		}
@@ -2308,7 +2308,7 @@ static char *complete_show_application(char *line, char *word,
 	}
 
 	/* no application match */
-	ast_pthread_mutex_unlock(&applock);
+	ast_mutex_unlock(&applock);
 	return NULL; 
 }
 
@@ -2321,7 +2321,7 @@ static int handle_show_application(int fd, int argc, char *argv[])
 	if (argc < 3) return RESULT_SHOWUSAGE;
 
 	/* try to lock applications list ... */
-	if (ast_pthread_mutex_lock(&applock)) {
+	if (ast_mutex_lock(&applock)) {
 		ast_log(LOG_ERROR, "Unable to lock application list\n");
 		return -1;
 	}
@@ -2349,7 +2349,7 @@ static int handle_show_application(int fd, int argc, char *argv[])
 		a = a->next; 
 	}
 
-	ast_pthread_mutex_unlock(&applock);
+	ast_mutex_unlock(&applock);
 
 	/* we found at least one app? no? */
 	if (no_registered_app) {
@@ -2369,7 +2369,7 @@ static int handle_show_switches(int fd, int argc, char *argv[])
 	}
 	/* ... we have applications ... */
 	ast_cli(fd, "\n    -= Registered Asterisk Alternative Switches =-\n");
-	if (ast_pthread_mutex_lock(&switchlock)) {
+	if (ast_mutex_lock(&switchlock)) {
 		ast_log(LOG_ERROR, "Unable to lock switches\n");
 		return -1;
 	}
@@ -2378,7 +2378,7 @@ static int handle_show_switches(int fd, int argc, char *argv[])
 		ast_cli(fd, "%s: %s\n", sw->name, sw->description);
 		sw = sw->next;
 	}
-	ast_pthread_mutex_unlock(&switchlock);
+	ast_mutex_unlock(&switchlock);
 	return RESULT_SUCCESS;
 }
 
@@ -2390,7 +2390,7 @@ static int handle_show_applications(int fd, int argc, char *argv[])
 	struct ast_app *a;
 
 	/* try to lock applications list ... */
-	if (ast_pthread_mutex_lock(&applock)) {
+	if (ast_mutex_lock(&applock)) {
 		ast_log(LOG_ERROR, "Unable to lock application list\n");
 		return -1;
 	}
@@ -2401,7 +2401,7 @@ static int handle_show_applications(int fd, int argc, char *argv[])
 	/* ... have we got at least one application (first)? no? */
 	if (!a) {
 		ast_cli(fd, "There is no registered applications\n");
-		ast_pthread_mutex_unlock(&applock);
+		ast_mutex_unlock(&applock);
 		return -1;
 	}
 
@@ -2418,7 +2418,7 @@ static int handle_show_applications(int fd, int argc, char *argv[])
 	}
 
 	/* ... unlock and return */
-	ast_pthread_mutex_unlock(&applock);
+	ast_mutex_unlock(&applock);
 
 	return RESULT_SUCCESS;
 }
@@ -2678,7 +2678,7 @@ static struct ast_cli_entry show_switches_cli =
 
 int ast_unregister_application(char *app) {
 	struct ast_app *tmp, *tmpl = NULL;
-	if (ast_pthread_mutex_lock(&applock)) {
+	if (ast_mutex_lock(&applock)) {
 		ast_log(LOG_ERROR, "Unable to lock application list\n");
 		return -1;
 	}
@@ -2691,13 +2691,13 @@ int ast_unregister_application(char *app) {
 				apps = tmp->next;
 			if (option_verbose > 1)
 				ast_verbose( VERBOSE_PREFIX_2 "Unregistered application '%s'\n", tmp->name);
-			ast_pthread_mutex_unlock(&applock);
+			ast_mutex_unlock(&applock);
 			return 0;
 		}
 		tmpl = tmp;
 		tmp = tmp->next;
 	}
-	ast_pthread_mutex_unlock(&applock);
+	ast_mutex_unlock(&applock);
 	return -1;
 }
 
@@ -2706,17 +2706,17 @@ struct ast_context *ast_context_create(struct ast_context **extcontexts, char *n
 	struct ast_context *tmp, **local_contexts;
 	if (!extcontexts) {
 		local_contexts = &contexts;
-		ast_pthread_mutex_lock(&conlock);
+		ast_mutex_lock(&conlock);
 	} else
 		local_contexts = extcontexts;
 
 	tmp = *local_contexts;
 	while(tmp) {
 		if (!strcasecmp(tmp->name, name)) {
-			ast_pthread_mutex_unlock(&conlock);
+			ast_mutex_unlock(&conlock);
 			ast_log(LOG_WARNING, "Tried to register context '%s', already in use\n", name);
 			if (!extcontexts)
-				ast_pthread_mutex_unlock(&conlock);
+				ast_mutex_unlock(&conlock);
 			return NULL;
 		}
 		tmp = tmp->next;
@@ -2724,7 +2724,7 @@ struct ast_context *ast_context_create(struct ast_context **extcontexts, char *n
 	tmp = malloc(sizeof(struct ast_context));
 	if (tmp) {
 		memset(tmp, 0, sizeof(struct ast_context));
-		ast_pthread_mutex_init(&tmp->lock);
+		ast_mutex_init(&tmp->lock);
 		strncpy(tmp->name, name, sizeof(tmp->name)-1);
 		tmp->root = NULL;
 		tmp->registrar = registrar;
@@ -2740,7 +2740,7 @@ struct ast_context *ast_context_create(struct ast_context **extcontexts, char *n
 		ast_log(LOG_WARNING, "Out of memory\n");
 	
 	if (!extcontexts)
-		ast_pthread_mutex_unlock(&conlock);
+		ast_mutex_unlock(&conlock);
 	return tmp;
 }
 
@@ -2749,7 +2749,7 @@ void __ast_context_destroy(struct ast_context *con, char *registrar, int lock);
 void ast_merge_contexts_and_delete(struct ast_context **extcontexts, char *registrar) {
 	struct ast_context *tmp, *lasttmp = NULL;
 	tmp = *extcontexts;
-	ast_pthread_mutex_lock(&conlock);
+	ast_mutex_lock(&conlock);
 	if (registrar) {
 		__ast_context_destroy(NULL,registrar,0);
 		while (tmp) {
@@ -2769,7 +2769,7 @@ void ast_merge_contexts_and_delete(struct ast_context **extcontexts, char *regis
 		*extcontexts = NULL;
 	} else 
 		ast_log(LOG_WARNING, "Requested contexts didn't get merged\n");
-	ast_pthread_mutex_unlock(&conlock);
+	ast_mutex_unlock(&conlock);
 	return;	
 }
 
@@ -3099,7 +3099,7 @@ int ast_context_add_include2(struct ast_context *con, char *value,
 	new_include->registrar = registrar;
 
 	/* ... try to lock this context ... */
-	if (ast_pthread_mutex_lock(&con->lock)) {
+	if (ast_mutex_lock(&con->lock)) {
 		free(new_include);
 		errno = EBUSY;
 		return -1;
@@ -3110,7 +3110,7 @@ int ast_context_add_include2(struct ast_context *con, char *value,
 	while (i) {
 		if (!strcasecmp(i->name, new_include->name)) {
 			free(new_include);
-			ast_pthread_mutex_unlock(&con->lock);
+			ast_mutex_unlock(&con->lock);
 			errno = EEXIST;
 			return -1;
 		}
@@ -3125,7 +3125,7 @@ int ast_context_add_include2(struct ast_context *con, char *value,
 		con->includes = new_include;
 	if (option_verbose > 2)
 		ast_verbose(VERBOSE_PREFIX_3 "Including context '%s' in context '%s'\n", new_include->name, ast_get_context_name(con)); 
-	ast_pthread_mutex_unlock(&con->lock);
+	ast_mutex_unlock(&con->lock);
 
 	return 0;
 }
@@ -3194,7 +3194,7 @@ int ast_context_add_switch2(struct ast_context *con, char *value,
 	new_sw->registrar = registrar;
 
 	/* ... try to lock this context ... */
-	if (ast_pthread_mutex_lock(&con->lock)) {
+	if (ast_mutex_lock(&con->lock)) {
 		free(new_sw);
 		errno = EBUSY;
 		return -1;
@@ -3205,7 +3205,7 @@ int ast_context_add_switch2(struct ast_context *con, char *value,
 	while (i) {
 		if (!strcasecmp(i->name, new_sw->name)) {
 			free(new_sw);
-			ast_pthread_mutex_unlock(&con->lock);
+			ast_mutex_unlock(&con->lock);
 			errno = EEXIST;
 			return -1;
 		}
@@ -3220,7 +3220,7 @@ int ast_context_add_switch2(struct ast_context *con, char *value,
 		con->alts = new_sw;
 	if (option_verbose > 2)
 		ast_verbose(VERBOSE_PREFIX_3 "Including switch '%s/%s' in context '%s'\n", new_sw->name, new_sw->data, ast_get_context_name(con)); 
-	ast_pthread_mutex_unlock(&con->lock);
+	ast_mutex_unlock(&con->lock);
 
 	return 0;
 }
@@ -3257,7 +3257,7 @@ int ast_context_remove_ignorepat2(struct ast_context *con, char *ignorepat, char
 {
 	struct ast_ignorepat *ip, *ipl = NULL;
 
-	if (ast_pthread_mutex_lock(&con->lock)) {
+	if (ast_mutex_lock(&con->lock)) {
 		errno = EBUSY;
 		return -1;
 	}
@@ -3273,13 +3273,13 @@ int ast_context_remove_ignorepat2(struct ast_context *con, char *ignorepat, char
 				con->ignorepats = ip->next;
 				free(ip);
 			}
-			ast_pthread_mutex_unlock(&con->lock);
+			ast_mutex_unlock(&con->lock);
 			return 0;
 		}
 		ipl = ip; ip = ip->next;
 	}
 
-	ast_pthread_mutex_unlock(&con->lock);
+	ast_mutex_unlock(&con->lock);
 	errno = EINVAL;
 	return -1;
 }
@@ -3325,13 +3325,13 @@ int ast_context_add_ignorepat2(struct ast_context *con, char *value, char *regis
 	strncpy(ignorepat->pattern, value, sizeof(ignorepat->pattern)-1);
 	ignorepat->next = NULL;
 	ignorepat->registrar = registrar;
-	ast_pthread_mutex_lock(&con->lock);
+	ast_mutex_lock(&con->lock);
 	ignorepatc = con->ignorepats;
 	while(ignorepatc) {
 		ignorepatl = ignorepatc;
 		if (!strcasecmp(ignorepatc->pattern, value)) {
 			/* Already there */
-			pthread_mutex_unlock(&con->lock);
+			ast_mutex_unlock(&con->lock);
 			errno = EEXIST;
 			return -1;
 		}
@@ -3341,7 +3341,7 @@ int ast_context_add_ignorepat2(struct ast_context *con, char *value, char *regis
 		ignorepatl->next = ignorepat;
 	else
 		con->ignorepats = ignorepat;
-	pthread_mutex_unlock(&con->lock);
+	ast_mutex_unlock(&con->lock);
 	return 0;
 	
 }
@@ -3397,7 +3397,7 @@ int ast_async_goto(struct ast_channel *chan, char *context, char *exten, int pri
 {
 	int res = 0;
 	if (needlock)
-		ast_pthread_mutex_lock(&chan->lock);
+		ast_mutex_lock(&chan->lock);
 	if (chan->pbx) {
 		/* This channel is currently in the PBX */
 		if (context && strlen(context))
@@ -3408,7 +3408,7 @@ int ast_async_goto(struct ast_channel *chan, char *context, char *exten, int pri
 			chan->priority = priority - 1;
 		ast_softhangup_nolock(chan, AST_SOFTHANGUP_ASYNCGOTO);
 		if (needlock)
-			ast_pthread_mutex_unlock(&chan->lock);
+			ast_mutex_unlock(&chan->lock);
 	} else {
 		/* In order to do it when the channel doesn't really exist within
 		   the PBX, we have to make a new channel, masquerade, and start the PBX
@@ -3436,7 +3436,7 @@ int ast_async_goto(struct ast_channel *chan, char *context, char *exten, int pri
 			else
 				tmpchan->priority = chan->priority;
 			if (needlock)
-				ast_pthread_mutex_unlock(&chan->lock);
+				ast_mutex_unlock(&chan->lock);
 			
 			/* Masquerade into temp channel */
 			ast_channel_masquerade(tmpchan, chan);
@@ -3454,7 +3454,7 @@ int ast_async_goto(struct ast_channel *chan, char *context, char *exten, int pri
 		} else {
 			res = -1;
 			if (needlock)
-				ast_pthread_mutex_unlock(&chan->lock);
+				ast_mutex_unlock(&chan->lock);
 		}
 	}
 	return res;
@@ -3552,7 +3552,7 @@ int ast_add_extension2(struct ast_context *con,
 		errno = ENOMEM;
 		return -1;
 	}
-	if (ast_pthread_mutex_lock(&con->lock)) {
+	if (ast_mutex_lock(&con->lock)) {
 		free(tmp);
 		/* And properly destroy the data */
 		datad(data);
@@ -3601,7 +3601,7 @@ int ast_add_extension2(struct ast_context *con,
 						/* Destroy the old one */
 						e->datad(e->data);
 						free(e);
-						ast_pthread_mutex_unlock(&con->lock);
+						ast_mutex_unlock(&con->lock);
 						if (tmp->priority == PRIORITY_HINT)
 						    ast_change_hint(e, tmp);
 						/* And immediately return success. */
@@ -3611,7 +3611,7 @@ int ast_add_extension2(struct ast_context *con,
 						ast_log(LOG_WARNING, "Unable to register extension '%s', priority %d in '%s', already in use\n", tmp->exten, tmp->priority, con->name);
 						tmp->datad(tmp->data);
 						free(tmp);
-						ast_pthread_mutex_unlock(&con->lock);
+						ast_mutex_unlock(&con->lock);
 						errno = EEXIST;
 						return -1;
 					}
@@ -3634,7 +3634,7 @@ int ast_add_extension2(struct ast_context *con,
 						tmp->peer = con->root->peer;
 						con->root = tmp;
 					}
-					ast_pthread_mutex_unlock(&con->lock);
+					ast_mutex_unlock(&con->lock);
 					/* And immediately return success. */
 					if (tmp->priority == PRIORITY_HINT)
 					    ast_add_hint(tmp);
@@ -3648,7 +3648,7 @@ int ast_add_extension2(struct ast_context *con,
 			/* If we make it here, then it's time for us to go at the very end.
 			   ep *must* be defined or we couldn't have gotten here. */
 			ep->peer = tmp;
-			ast_pthread_mutex_unlock(&con->lock);
+			ast_mutex_unlock(&con->lock);
 			if (tmp->priority == PRIORITY_HINT)
 			    ast_add_hint(tmp);
 			
@@ -3667,7 +3667,7 @@ int ast_add_extension2(struct ast_context *con,
 				/* We're at the top of the list */
 				con->root = tmp;
 			}
-			ast_pthread_mutex_unlock(&con->lock);
+			ast_mutex_unlock(&con->lock);
 			if (tmp->priority == PRIORITY_HINT)
 			    ast_add_hint(tmp);
 
@@ -3684,7 +3684,7 @@ int ast_add_extension2(struct ast_context *con,
 		el->next = tmp;
 	else
 		con->root = tmp;
-	ast_pthread_mutex_unlock(&con->lock);
+	ast_mutex_unlock(&con->lock);
 	if (tmp->priority == PRIORITY_HINT)
 	    ast_add_hint(tmp);
 	LOG;
@@ -3938,14 +3938,14 @@ void __ast_context_destroy(struct ast_context *con, char *registrar, int lock)
 	struct ast_sw *sw, *swl= NULL;
 	struct ast_exten *e, *el, *en;
 	if (lock)
-		ast_pthread_mutex_lock(&conlock);
+		ast_mutex_lock(&conlock);
 	tmp = contexts;
 	while(tmp) {
 		if (((tmp->name && con && con->name && !strcasecmp(tmp->name, con->name)) || !con) &&
 		    (!registrar || !strcasecmp(registrar, tmp->registrar))) {
 			/* Okay, let's lock the structure to be sure nobody else
 			   is searching through it. */
-			if (ast_pthread_mutex_lock(&tmp->lock)) {
+			if (ast_mutex_lock(&tmp->lock)) {
 				ast_log(LOG_WARNING, "Unable to lock context lock\n");
 				return;
 			}
@@ -3955,7 +3955,7 @@ void __ast_context_destroy(struct ast_context *con, char *registrar, int lock)
 				contexts = tmp->next;
 			/* Okay, now we're safe to let it go -- in a sense, we were
 			   ready to let it go as soon as we locked it. */
-			ast_pthread_mutex_unlock(&tmp->lock);
+			ast_mutex_unlock(&tmp->lock);
 			for (tmpi = tmp->includes; tmpi; ) {
 				/* Free includes */
 				tmpil = tmpi;
@@ -3988,14 +3988,14 @@ void __ast_context_destroy(struct ast_context *con, char *registrar, int lock)
 				continue;
 			}
 			if (lock)
-				ast_pthread_mutex_unlock(&conlock);
+				ast_mutex_unlock(&conlock);
 			return;
 		}
 		tmpl = tmp;
 		tmp = tmp->next;
 	}
 	if (lock)
-		ast_pthread_mutex_unlock(&conlock);
+		ast_mutex_unlock(&conlock);
 }
 
 void ast_context_destroy(struct ast_context *con, char *registrar)
@@ -4435,12 +4435,12 @@ int load_pbx(void)
  */
 int ast_lock_contexts()
 {
-	return ast_pthread_mutex_lock(&conlock);
+	return ast_mutex_lock(&conlock);
 }
 
 int ast_unlock_contexts()
 {
-	return ast_pthread_mutex_unlock(&conlock);
+	return ast_mutex_unlock(&conlock);
 }
 
 /*
@@ -4448,12 +4448,12 @@ int ast_unlock_contexts()
  */
 int ast_lock_context(struct ast_context *con)
 {
-	return ast_pthread_mutex_lock(&con->lock);
+	return ast_mutex_lock(&con->lock);
 }
 
 int ast_unlock_context(struct ast_context *con)
 {
-	return ast_pthread_mutex_unlock(&con->lock);
+	return ast_mutex_unlock(&con->lock);
 }
 
 /*
diff --git a/pbx/pbx_config.c b/pbx/pbx_config.c
index 1514503c37cec25db586821232a0d092ca346a33..c6c6190fbff7bf5c1ce79bdade76f3f37bc6676f 100755
--- a/pbx/pbx_config.c
+++ b/pbx/pbx_config.c
@@ -42,7 +42,7 @@ static char *registrar = "pbx_config";
 static int static_config = 0;
 static int write_protect_config = 1;
 
-static pthread_mutex_t save_dialplan_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t save_dialplan_lock = AST_MUTEX_INITIALIZER;
 
 static struct ast_context *local_contexts = NULL;
 
@@ -916,7 +916,7 @@ static int handle_save_dialplan(int fd, int argc, char *argv[])
 
 	if (argc != 2 && argc != 3) return RESULT_SHOWUSAGE;
 
-	if (ast_pthread_mutex_lock(&save_dialplan_lock)) {
+	if (ast_mutex_lock(&save_dialplan_lock)) {
 		ast_cli(fd,
 			"Failed to lock dialplan saving (another proccess saving?)\n");
 		return RESULT_FAILURE;
@@ -945,7 +945,7 @@ static int handle_save_dialplan(int fd, int argc, char *argv[])
 	/* try to lock contexts list */
 	if (ast_lock_contexts()) {
 		ast_cli(fd, "Failed to lock contexts list\n");
-		ast_pthread_mutex_unlock(&save_dialplan_lock);
+		ast_mutex_unlock(&save_dialplan_lock);
 		return RESULT_FAILURE;
 	}
 
@@ -954,7 +954,7 @@ static int handle_save_dialplan(int fd, int argc, char *argv[])
 		ast_cli(fd, "Failed to create file '%s'\n",
 			filename);
 		ast_unlock_contexts();
-		ast_pthread_mutex_unlock(&save_dialplan_lock);
+		ast_mutex_unlock(&save_dialplan_lock);
 		return RESULT_FAILURE;
 	}
 
@@ -1077,7 +1077,7 @@ static int handle_save_dialplan(int fd, int argc, char *argv[])
 	}	
 
 	ast_unlock_contexts();
-	ast_pthread_mutex_unlock(&save_dialplan_lock);
+	ast_mutex_unlock(&save_dialplan_lock);
 	fclose(output);
 
 	if (incomplete) {
diff --git a/pbx/pbx_gtkconsole.c b/pbx/pbx_gtkconsole.c
index 4a6db3c870f48726cc21bb240e85f6f0f876a05f..13e29097bdf9834b467ebc6d2fc5e430f5fdfc6f 100755
--- a/pbx/pbx_gtkconsole.c
+++ b/pbx/pbx_gtkconsole.c
@@ -41,7 +41,7 @@
 #include "../asterisk.h"
 #include "../astconf.h"
 
-static pthread_mutex_t verb_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t verb_lock = AST_MUTEX_INITIALIZER;
 
 static pthread_t console_thread;
 
@@ -125,10 +125,10 @@ static void __verboser(char *stuff, int opos, int replacelast, int complete)
 
 static void verboser(char *stuff, int opos, int replacelast, int complete) 
 {
-	ast_pthread_mutex_lock(&verb_lock);
+	ast_mutex_lock(&verb_lock);
 	/* Lock appropriately if we're really being called in verbose mode */
 	__verboser(stuff, opos, replacelast, complete);
-	ast_pthread_mutex_unlock(&verb_lock);
+	ast_mutex_unlock(&verb_lock);
 }
 
 static void cliinput(void *data, int source, GdkInputCondition ic)
diff --git a/res/res_crypto.c b/res/res_crypto.c
index 94263bea9e00a0e62736a947980f31d0cae0f02d..2a2e5cb8b9d75788158194b2271c5b38472f5ed4 100755
--- a/res/res_crypto.c
+++ b/res/res_crypto.c
@@ -59,7 +59,7 @@
 static char base64[64];
 static char b2a[256];
 
-static pthread_mutex_t keylock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t keylock = AST_MUTEX_INITIALIZER;
 
 #define KEY_NEEDS_PASSCODE (1 << 16)
 
@@ -120,7 +120,7 @@ static int pw_cb(char *buf, int size, int rwflag, void *userdata)
 struct ast_key *ast_key_get(char *kname, int ktype)
 {
 	struct ast_key *key;
-	ast_pthread_mutex_lock(&keylock);
+	ast_mutex_lock(&keylock);
 	key = keys;
 	while(key) {
 		if (!strcmp(kname, key->name) &&
@@ -128,7 +128,7 @@ struct ast_key *ast_key_get(char *kname, int ktype)
 			break;
 		key = key->next;
 	}
-	ast_pthread_mutex_unlock(&keylock);
+	ast_mutex_unlock(&keylock);
 	return key;
 }
 
@@ -156,7 +156,7 @@ static struct ast_key *try_load_key (char *dir, char *fname, int ifd, int ofd, i
 	/* Get actual filename */
 	snprintf(ffname, sizeof(ffname), "%s/%s", dir, fname);
 
-	ast_pthread_mutex_lock(&keylock);
+	ast_mutex_lock(&keylock);
 	key = keys;
 	while(key) {
 		/* Look for an existing version already */
@@ -164,7 +164,7 @@ static struct ast_key *try_load_key (char *dir, char *fname, int ifd, int ofd, i
 			break;
 		key = key->next;
 	}
-	ast_pthread_mutex_unlock(&keylock);
+	ast_mutex_unlock(&keylock);
 
 	/* Open file */
 	f = fopen(ffname, "r");
@@ -213,7 +213,7 @@ static struct ast_key *try_load_key (char *dir, char *fname, int ifd, int ofd, i
 	   fill it with what we know */
 	/* Gotta lock if this one already exists */
 	if (found)
-		ast_pthread_mutex_lock(&keylock);
+		ast_mutex_lock(&keylock);
 	/* First the filename */
 	strncpy(key->fn, ffname, sizeof(key->fn));
 	/* Then the name */
@@ -262,12 +262,12 @@ static struct ast_key *try_load_key (char *dir, char *fname, int ifd, int ofd, i
 		*not2 = 1;
 	}
 	if (found)
-		ast_pthread_mutex_unlock(&keylock);
+		ast_mutex_unlock(&keylock);
 	if (!found) {
-		ast_pthread_mutex_lock(&keylock);
+		ast_mutex_lock(&keylock);
 		key->next = keys;
 		keys = key;
-		ast_pthread_mutex_unlock(&keylock);
+		ast_mutex_unlock(&keylock);
 	}
 	return key;
 }
@@ -456,13 +456,13 @@ static void crypto_load(int ifd, int ofd)
 	struct dirent *ent;
 	int note = 0;
 	/* Mark all keys for deletion */
-	ast_pthread_mutex_lock(&keylock);
+	ast_mutex_lock(&keylock);
 	key = keys;
 	while(key) {
 		key->delme = 1;
 		key = key->next;
 	}
-	ast_pthread_mutex_unlock(&keylock);
+	ast_mutex_unlock(&keylock);
 	/* Load new keys */
 	dir = opendir((char *)ast_config_AST_KEY_DIR);
 	if (dir) {
@@ -475,7 +475,7 @@ static void crypto_load(int ifd, int ofd)
 	if (note) {
 		ast_log(LOG_NOTICE, "Please run the command 'init keys' to enter the passcodes for the keys\n");
 	}
-	ast_pthread_mutex_lock(&keylock);
+	ast_mutex_lock(&keylock);
 	key = keys;
 	last = NULL;
 	while(key) {
@@ -494,7 +494,7 @@ static void crypto_load(int ifd, int ofd)
 			last = key;
 		key = nkey;
 	}
-	ast_pthread_mutex_unlock(&keylock);
+	ast_mutex_unlock(&keylock);
 }
 
 static void md52sum(char *sum, unsigned char *md5)
@@ -509,7 +509,7 @@ static int show_keys(int fd, int argc, char *argv[])
 	struct ast_key *key;
 	char sum[16 * 2 + 1];
 
-	ast_pthread_mutex_lock(&keylock);
+	ast_mutex_lock(&keylock);
 	key = keys;
 	ast_cli(fd, "%-18s %-8s %-16s %-33s\n", "Key Name", "Type", "Status", "Sum");
 	while(key) {
@@ -520,7 +520,7 @@ static int show_keys(int fd, int argc, char *argv[])
 				
 		key = key->next;
 	}
-	ast_pthread_mutex_unlock(&keylock);
+	ast_mutex_unlock(&keylock);
 	return RESULT_SUCCESS;
 }
 
diff --git a/res/res_indications.c b/res/res_indications.c
index 5f039f6c7a67e14634a07e2526bc0c8191ce5712..0983efbca426315ccc8eac26b2b81e8933fad0c3 100755
--- a/res/res_indications.c
+++ b/res/res_indications.c
@@ -133,7 +133,7 @@ static int handle_show_indications(int fd, int argc, char *argv[])
 	char buf[256];
 	int found_country = 0;
 
-	if (ast_pthread_mutex_lock(&tzlock)) {
+	if (ast_mutex_lock(&tzlock)) {
 		ast_log(LOG_WARNING, "Unable to lock tone_zones list\n");
 		return 0;
 	}
@@ -144,7 +144,7 @@ static int handle_show_indications(int fd, int argc, char *argv[])
 		for (tz=tone_zones; tz; tz=tz->next) {
 			ast_cli(fd,"%-7.7s %-7.7s %s\n", tz->country, tz->alias, tz->description);
 		}
-		ast_pthread_mutex_unlock(&tzlock);
+		ast_mutex_unlock(&tzlock);
 		return 0;
 	}
 	/* there was a request for specific country(ies), lets humor them */
@@ -174,7 +174,7 @@ static int handle_show_indications(int fd, int argc, char *argv[])
 	}
 	if (!found_country)
 		ast_cli(fd,"No countries matched your criteria.\n");
-	ast_pthread_mutex_unlock(&tzlock);
+	ast_mutex_unlock(&tzlock);
 	return -1;
 }
 
diff --git a/res/res_monitor.c b/res/res_monitor.c
index f663561528b68c5793264340e5cd43bbf821a1ec..d7f73dd1fc342f1dad52266f7d5e97c253f84c9f 100755
--- a/res/res_monitor.c
+++ b/res/res_monitor.c
@@ -15,7 +15,7 @@
 
 #define AST_MONITOR_DIR	INSTALL_PREFIX "/var/spool/asterisk/monitor"
 
-static pthread_mutex_t monitorlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t monitorlock = AST_MUTEX_INITIALIZER;
 
 static unsigned long seq = 0;
 
@@ -48,7 +48,7 @@ int ast_monitor_start(	struct ast_channel *chan, const char *format_spec,
 	int res = 0;
 
 	if( need_lock ) {
-		if (ast_pthread_mutex_lock(&chan->lock)) {
+		if (ast_mutex_lock(&chan->lock)) {
 			ast_log(LOG_WARNING, "Unable to lock channel\n");
 			return -1;
 		}
@@ -77,13 +77,13 @@ int ast_monitor_start(	struct ast_channel *chan, const char *format_spec,
 						AST_MONITOR_DIR, fname_base );
 			*monitor->filename_base = 0;
 		} else {
-			ast_pthread_mutex_lock( &monitorlock );
+			ast_mutex_lock( &monitorlock );
 			snprintf(	monitor->read_filename, FILENAME_MAX, "%s/audio-in-%ld",
 						AST_MONITOR_DIR, seq );
 			snprintf(	monitor->write_filename, FILENAME_MAX, "%s/audio-out-%ld",
 						AST_MONITOR_DIR, seq );
 			seq++;
-			ast_pthread_mutex_unlock( &monitorlock );
+			ast_mutex_unlock( &monitorlock );
 
 			channel_name = strdup( chan->name );
 			while( ( p = strchr( channel_name, '/' ) ) ) {
@@ -113,7 +113,7 @@ int ast_monitor_start(	struct ast_channel *chan, const char *format_spec,
 			ast_log(	LOG_WARNING, "Could not create file %s\n",
 						monitor->read_filename );
 			free( monitor );
-			ast_pthread_mutex_unlock(&chan->lock);
+			ast_mutex_unlock(&chan->lock);
 			return -1;
 		}
 		if( ast_fileexists( monitor->write_filename, NULL, NULL ) > 0 ) {
@@ -126,7 +126,7 @@ int ast_monitor_start(	struct ast_channel *chan, const char *format_spec,
 						monitor->write_filename );
 			ast_closestream( monitor->read_stream );
 			free( monitor );
-			ast_pthread_mutex_unlock(&chan->lock);
+			ast_mutex_unlock(&chan->lock);
 			return -1;
 		}
 		chan->monitor = monitor;
@@ -137,7 +137,7 @@ int ast_monitor_start(	struct ast_channel *chan, const char *format_spec,
 	}
 
 	if( need_lock ) {
-		ast_pthread_mutex_unlock(&chan->lock);
+		ast_mutex_unlock(&chan->lock);
 	}
 	return res;
 }
@@ -146,7 +146,7 @@ int ast_monitor_start(	struct ast_channel *chan, const char *format_spec,
 int ast_monitor_stop( struct ast_channel *chan, int need_lock )
 {
 	if(need_lock) {
-		if(ast_pthread_mutex_lock(&chan->lock)) {
+		if(ast_mutex_lock(&chan->lock)) {
 			ast_log(LOG_WARNING, "Unable to lock channel\n");
 			return -1;
 		}
@@ -196,7 +196,7 @@ int ast_monitor_stop( struct ast_channel *chan, int need_lock )
 	}
 
 	if( need_lock ) {
-		ast_pthread_mutex_unlock(&chan->lock);
+		ast_mutex_unlock(&chan->lock);
 	}
 	return 0;
 }
@@ -213,7 +213,7 @@ int ast_monitor_change_fname(	struct ast_channel *chan,
 	}
 	
 	if( need_lock ) {
-		if (ast_pthread_mutex_lock(&chan->lock)) {
+		if (ast_mutex_lock(&chan->lock)) {
 			ast_log(LOG_WARNING, "Unable to lock channel\n");
 			return -1;
 		}
@@ -230,7 +230,7 @@ int ast_monitor_change_fname(	struct ast_channel *chan,
 	}
 
 	if( need_lock ) {
-		ast_pthread_mutex_unlock(&chan->lock);
+		ast_mutex_unlock(&chan->lock);
 	}
 	return 0;
 }
diff --git a/res/res_musiconhold.c b/res/res_musiconhold.c
index e1ae942e763402cfaf4006dbe999d02333a45847..9ef8e55a39828eaa6d28ecad8af1bc96ff0f896f 100755
--- a/res/res_musiconhold.c
+++ b/res/res_musiconhold.c
@@ -91,7 +91,7 @@ struct mohdata {
 
 static struct mohclass *mohclasses;
 
-static pthread_mutex_t moh_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t moh_lock = AST_MUTEX_INITIALIZER;
 
 #define MPG_123 "/usr/bin/mpg123"
 #define MAX_MP3S 256
@@ -283,7 +283,7 @@ static void *monmp3thread(void *data)
 				ast_log(LOG_DEBUG, "Read %d bytes of audio while expecting %d\n", res2, res * 2);
 			continue;
 		}
-		ast_pthread_mutex_lock(&moh_lock);
+		ast_mutex_lock(&moh_lock);
 		moh = class->members;
 		while(moh) {
 			/* Write data */
@@ -292,7 +292,7 @@ static void *monmp3thread(void *data)
 				    ast_log(LOG_DEBUG, "Only wrote %d of %d bytes to pipe\n", res, res2);
 			moh = moh->next;
 		}
-		pthread_mutex_unlock(&moh_lock);
+		ast_mutex_unlock(&moh_lock);
 	}
 	return NULL;
 }
@@ -373,7 +373,7 @@ static void moh_release(struct ast_channel *chan, void *data)
 {
 	struct mohdata *moh = data, *prev, *cur;
 	int oldwfmt;
-	ast_pthread_mutex_lock(&moh_lock);
+	ast_mutex_lock(&moh_lock);
 	/* Unlink */
 	prev = NULL;
 	cur = moh->parent->members;
@@ -388,7 +388,7 @@ static void moh_release(struct ast_channel *chan, void *data)
 		prev = cur;
 		cur = cur->next;
 	}
-	ast_pthread_mutex_unlock(&moh_lock);
+	ast_mutex_unlock(&moh_lock);
 	close(moh->pipe[0]);
 	close(moh->pipe[1]);
 	oldwfmt = moh->origwfmt;
@@ -405,7 +405,7 @@ static void *moh_alloc(struct ast_channel *chan, void *params)
 {
 	struct mohdata *res;
 	struct mohclass *class;
-	ast_pthread_mutex_lock(&moh_lock);
+	ast_mutex_lock(&moh_lock);
 	class = get_mohbyname(params);
 	if (class)
 		res = mohalloc(class);
@@ -414,7 +414,7 @@ static void *moh_alloc(struct ast_channel *chan, void *params)
 			ast_log(LOG_WARNING, "No class: %s\n", (char *)params);
 		res = NULL;
 	}
-	ast_pthread_mutex_unlock(&moh_lock);
+	ast_mutex_unlock(&moh_lock);
 	if (res) {
 		res->origwfmt = chan->writeformat;
 		if (ast_set_write_format(chan, AST_FORMAT_SLINEAR)) {
@@ -478,9 +478,9 @@ static int moh_register(char *classname, char *mode, char *param, char *miscargs
 {
 	struct mohclass *moh;
 	int x;
-	ast_pthread_mutex_lock(&moh_lock);
+	ast_mutex_lock(&moh_lock);
 	moh = get_mohbyname(classname);
-	ast_pthread_mutex_unlock(&moh_lock);
+	ast_mutex_unlock(&moh_lock);
 	if (moh) {
 		ast_log(LOG_WARNING, "Music on Hold '%s' already exists\n", classname);
 		return -1;
@@ -523,10 +523,10 @@ static int moh_register(char *classname, char *mode, char *param, char *miscargs
 		free(moh);
 		return -1;
 	}
-	ast_pthread_mutex_lock(&moh_lock);
+	ast_mutex_lock(&moh_lock);
 	moh->next = mohclasses;
 	mohclasses = moh;
-	ast_pthread_mutex_unlock(&moh_lock);
+	ast_mutex_unlock(&moh_lock);
 	return 0;
 }
 
@@ -575,17 +575,17 @@ static void ast_moh_destroy(void)
 {
 	struct mohclass *moh;
 	char buff[8192];
-	int bytes, tbytes, stime = 0;
+	int bytes, tbytes=0, stime = 0;
 	if (option_verbose > 1)
 		ast_verbose(VERBOSE_PREFIX_2 "Destroying any remaining musiconhold processes\n");
-	ast_pthread_mutex_lock(&moh_lock);
+	ast_mutex_lock(&moh_lock);
 	moh = mohclasses;
 	while(moh) {
 		if (moh->pid) {
 			ast_log(LOG_DEBUG, "killing %d!\n", moh->pid);
 			stime = time(NULL);
 			kill(moh->pid, SIGABRT);
-			while (bytes = read(moh->srcfd, buff, 8192) && time(NULL) < stime + 5) {
+			while ((bytes = read(moh->srcfd, buff, 8192)) && time(NULL) < stime + 5) {
 				tbytes = tbytes + bytes;
 			}
 			ast_log(LOG_DEBUG, "mpg123 pid %d and child died after %d bytes read\n", moh->pid, tbytes);
@@ -594,7 +594,7 @@ static void ast_moh_destroy(void)
 			}
 		moh = moh->next;
 	}
-	ast_pthread_mutex_unlock(&moh_lock);
+	ast_mutex_unlock(&moh_lock);
 }
 
 int load_module(void)
diff --git a/res/res_parking.c b/res/res_parking.c
index 821dcee79117c42efb84f9decab5f82b42082b2c..828be881b15a1212d7daeb9e53dc39782aa69fe1 100755
--- a/res/res_parking.c
+++ b/res/res_parking.c
@@ -83,7 +83,7 @@ struct parkeduser {
 
 static struct parkeduser *parkinglot;
 
-static pthread_mutex_t parking_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t parking_lock = AST_MUTEX_INITIALIZER;
 
 static pthread_t parking_thread;
 
@@ -109,7 +109,7 @@ int ast_park_call(struct ast_channel *chan, struct ast_channel *peer, int timeou
 	int x;
 	pu = malloc(sizeof(struct parkeduser));
 	if (pu) {
-		ast_pthread_mutex_lock(&parking_lock);
+		ast_mutex_lock(&parking_lock);
 		for (x=parking_start;x<=parking_stop;x++) {
 			cur = parkinglot;
 			while(cur) {
@@ -151,7 +151,7 @@ int ast_park_call(struct ast_channel *chan, struct ast_channel *peer, int timeou
 				pu->priority = chan->priority;
 			pu->next = parkinglot;
 			parkinglot = pu;
-			ast_pthread_mutex_unlock(&parking_lock);
+			ast_mutex_unlock(&parking_lock);
 			/* Wake up the (presumably select()ing) thread */
 			pthread_kill(parking_thread, SIGURG);
 			if (option_verbose > 1) 
@@ -162,7 +162,7 @@ int ast_park_call(struct ast_channel *chan, struct ast_channel *peer, int timeou
 		} else {
 			ast_log(LOG_WARNING, "No more parking spaces\n");
 			free(pu);
-			ast_pthread_mutex_unlock(&parking_lock);
+			ast_mutex_unlock(&parking_lock);
 			return -1;
 		}
 	} else {
@@ -412,7 +412,7 @@ static void *do_parking_thread(void *ignore)
 	for (;;) {
 		ms = -1;
 		max = -1;
-		ast_pthread_mutex_lock(&parking_lock);
+		ast_mutex_lock(&parking_lock);
 		pl = NULL;
 		pu = parkinglot;
 		gettimeofday(&tv, NULL);
@@ -488,7 +488,7 @@ std:					for (x=0;x<AST_MAX_FDS;x++) {
 				}
 			}
 		}
-		ast_pthread_mutex_unlock(&parking_lock);
+		ast_mutex_unlock(&parking_lock);
 		rfds = nrfds;
 		efds = nefds;
 		tv.tv_sec = ms / 1000;
@@ -514,7 +514,7 @@ static int park_exec(struct ast_channel *chan, void *data)
 	}
 	LOCAL_USER_ADD(u);
 	park = atoi((char *)data);
-	ast_pthread_mutex_lock(&parking_lock);
+	ast_mutex_lock(&parking_lock);
 	pu = parkinglot;
 	while(pu) {
 		if (pu->parkingnum == park) {
@@ -527,7 +527,7 @@ static int park_exec(struct ast_channel *chan, void *data)
 		pl = pu;
 		pu = pu->next;
 	}
-	ast_pthread_mutex_unlock(&parking_lock);
+	ast_mutex_unlock(&parking_lock);
 	if (pu) {
 		peer = pu->chan;
 		free(pu);
@@ -578,7 +578,7 @@ static int handle_parkedcalls(int fd, int argc, char *argv[])
 	ast_cli(fd, "%4s %25s (%-15s %-12s %-4s) %-6s \n", "Num", "Channel"
 		, "Context", "Extension", "Pri", "Timeout");
 
-	ast_pthread_mutex_lock(&parking_lock);
+	ast_mutex_lock(&parking_lock);
 
 	cur=parkinglot;
 	while(cur) {
@@ -589,7 +589,7 @@ static int handle_parkedcalls(int fd, int argc, char *argv[])
 		cur = cur->next;
 	}
 
-	ast_pthread_mutex_unlock(&parking_lock);
+	ast_mutex_unlock(&parking_lock);
 
 	return RESULT_SUCCESS;
 }
diff --git a/rtp.c b/rtp.c
index 34b1d48fb25e37f43674978e75c2018b0c989f38..ba40c61bccad0224d47acd4aeb7b6ce95accaf76 100755
--- a/rtp.c
+++ b/rtp.c
@@ -1136,20 +1136,20 @@ int ast_rtp_bridge(struct ast_channel *c0, struct ast_channel *c1, int flags, st
 	/* if need DTMF, cant native bridge */
 	if (flags & (AST_BRIDGE_DTMF_CHANNEL_0 | AST_BRIDGE_DTMF_CHANNEL_1))
 		return -2;
-	ast_pthread_mutex_lock(&c0->lock);
-	ast_pthread_mutex_lock(&c1->lock);
+	ast_mutex_lock(&c0->lock);
+	ast_mutex_lock(&c1->lock);
 	pr0 = get_proto(c0);
 	pr1 = get_proto(c1);
 	if (!pr0) {
 		ast_log(LOG_WARNING, "Can't find native functions for channel '%s'\n", c0->name);
-		ast_pthread_mutex_unlock(&c0->lock);
-		ast_pthread_mutex_unlock(&c1->lock);
+		ast_mutex_unlock(&c0->lock);
+		ast_mutex_unlock(&c1->lock);
 		return -1;
 	}
 	if (!pr1) {
 		ast_log(LOG_WARNING, "Can't find native functions for channel '%s'\n", c1->name);
-		ast_pthread_mutex_unlock(&c0->lock);
-		ast_pthread_mutex_unlock(&c1->lock);
+		ast_mutex_unlock(&c0->lock);
+		ast_mutex_unlock(&c1->lock);
 		return -1;
 	}
 	pvt0 = c0->pvt->pvt;
@@ -1166,8 +1166,8 @@ int ast_rtp_bridge(struct ast_channel *c0, struct ast_channel *c1, int flags, st
 		vp1 = NULL;
 	if (!p0 || !p1) {
 		/* Somebody doesn't want to play... */
-		ast_pthread_mutex_unlock(&c0->lock);
-		ast_pthread_mutex_unlock(&c1->lock);
+		ast_mutex_unlock(&c0->lock);
+		ast_mutex_unlock(&c1->lock);
 		return -2;
 	}
 	if (pr0->set_rtp_peer(c0, p1, vp1)) 
@@ -1186,8 +1186,8 @@ int ast_rtp_bridge(struct ast_channel *c0, struct ast_channel *c1, int flags, st
 		if (vp0)
 			ast_rtp_get_peer(p0, &vac0);
 	}
-	ast_pthread_mutex_unlock(&c0->lock);
-	ast_pthread_mutex_unlock(&c1->lock);
+	ast_mutex_unlock(&c0->lock);
+	ast_mutex_unlock(&c1->lock);
 	cs[0] = c0;
 	cs[1] = c1;
 	cs[2] = NULL;
diff --git a/translate.c b/translate.c
index 366287d3e8b137d0a323787aaa780c514085575c..01c52309be0199853b29708eaa5d56850ee8998c 100755
--- a/translate.c
+++ b/translate.c
@@ -39,7 +39,7 @@
 /* This could all be done more efficiently *IF* we chained packets together
    by default, but it would also complicate virtually every application. */
    
-static pthread_mutex_t list_lock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t list_lock = AST_MUTEX_INITIALIZER;
 static struct ast_translator *list = NULL;
 
 struct ast_translator_dir {
@@ -259,7 +259,7 @@ static int show_translation(int fd, int argc, char *argv[])
 		return RESULT_SHOWUSAGE;
 	ast_cli(fd, "                        Translation times between formats (in milliseconds)\n");
 	ast_cli(fd, "                                 Destination Format\n");
-	ast_pthread_mutex_lock(&list_lock);
+	ast_mutex_lock(&list_lock);
 	for (x=0;x<SHOW_TRANS; x++) {
 		if (x == 1) 
 			strcpy(line, "  Src  ");
@@ -276,7 +276,7 @@ static int show_translation(int fd, int argc, char *argv[])
 		snprintf(line + strlen(line), sizeof(line) - strlen(line), "\n");
 		ast_cli(fd, line);			
 	}
-	ast_pthread_mutex_unlock(&list_lock);
+	ast_mutex_unlock(&list_lock);
 	return RESULT_SUCCESS;
 }
 
@@ -302,7 +302,7 @@ int ast_register_translator(struct ast_translator *t)
 	calc_cost(t);
 	if (option_verbose > 1)
 		ast_verbose(VERBOSE_PREFIX_2 "Registered translator '%s' from format %d to %d, cost %d\n", term_color(tmp, t->name, COLOR_MAGENTA, COLOR_BLACK, sizeof(tmp)), t->srcfmt, t->dstfmt, t->cost);
-	ast_pthread_mutex_lock(&list_lock);
+	ast_mutex_lock(&list_lock);
 	if (!added_cli) {
 		ast_cli_register(&show_trans);
 		added_cli++;
@@ -310,14 +310,14 @@ int ast_register_translator(struct ast_translator *t)
 	t->next = list;
 	list = t;
 	rebuild_matrix();
-	ast_pthread_mutex_unlock(&list_lock);
+	ast_mutex_unlock(&list_lock);
 	return 0;
 }
 
 int ast_unregister_translator(struct ast_translator *t)
 {
 	struct ast_translator *u, *ul = NULL;
-	ast_pthread_mutex_lock(&list_lock);
+	ast_mutex_lock(&list_lock);
 	u = list;
 	while(u) {
 		if (u == t) {
@@ -331,7 +331,7 @@ int ast_unregister_translator(struct ast_translator *t)
 		u = u->next;
 	}
 	rebuild_matrix();
-	ast_pthread_mutex_unlock(&list_lock);
+	ast_mutex_unlock(&list_lock);
 	return (u ? 0 : -1);
 }
 
@@ -343,7 +343,7 @@ int ast_translator_best_choice(int *dst, int *srcs)
 	int bestdst=0;
 	int cur = 1;
 	int besttime=999999999;
-	ast_pthread_mutex_lock(&list_lock);
+	ast_mutex_lock(&list_lock);
 	for (y=0;y<MAX_FORMAT;y++) {
 		if ((cur & *dst) && (cur & *srcs)) {
 			/* This is a common format to both.  Pick it if we don't have one already */
@@ -370,6 +370,6 @@ int ast_translator_best_choice(int *dst, int *srcs)
 		*dst = bestdst;
 		best = 0;
 	}
-	ast_pthread_mutex_unlock(&list_lock);
+	ast_mutex_unlock(&list_lock);
 	return best;
 }