summaryrefslogtreecommitdiff
path: root/include/asterisk/pbx.h
diff options
context:
space:
mode:
authorJoshua Colp <jcolp@digium.com>2007-02-28 20:46:01 +0000
committerJoshua Colp <jcolp@digium.com>2007-02-28 20:46:01 +0000
commite7b03a991ef101074af2b29fea568a3df7e9fa3b (patch)
tree93f9b6140eb5d6e502d59f61dc94af1c440c16b8 /include/asterisk/pbx.h
parent00ab6324e87476bafb6a381093b48ffd8148825a (diff)
Convert the PBX core to use read/write locks. This yields a nifty performance improvement when it comes to simultaneous calls going through the dialplan. Using murf's test the old mutex based core took an average of 57.3 seconds while the rwlock based core took 31.1 seconds. That's a nifty 26.2 seconds performance improvement. The other good part is that if we do need to switch back then we just have to change the lock/unlock API calls. I converted everywhere that used to touch the mutex locks directly to use them.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@57184 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'include/asterisk/pbx.h')
-rw-r--r--include/asterisk/pbx.h26
1 files changed, 22 insertions, 4 deletions
diff --git a/include/asterisk/pbx.h b/include/asterisk/pbx.h
index 56d50eb56..2759b36d1 100644
--- a/include/asterisk/pbx.h
+++ b/include/asterisk/pbx.h
@@ -669,12 +669,20 @@ int ast_ignore_pattern(const char *context, const char *pattern);
/* Locking functions for outer modules, especially for completion functions */
/*!
- * \brief Locks the context list
+ * \brief Write locks the context list
*
* \retval 0 on success
* \retval -1 on error
*/
-int ast_lock_contexts(void);
+int ast_wrlock_contexts(void);
+
+/*!
+ * \brief Read locks the context list
+ *
+ * \retval 0 on success
+ * \retval -1 on error
+ */
+int ast_rdlock_contexts(void);
/*!
* \brief Unlocks contexts
@@ -685,14 +693,24 @@ int ast_lock_contexts(void);
int ast_unlock_contexts(void);
/*!
- * \brief Locks a given context
+ * \brief Write locks a given context
*
* \param con context to lock
*
* \retval 0 on success
* \retval -1 on failure
*/
-int ast_lock_context(struct ast_context *con);
+int ast_wrlock_context(struct ast_context *con);
+
+/*!
+ * \brief Read locks a given context
+ *
+ * \param con context to lock
+ *
+ * \retval 0 on success
+ * \retval -1 on failure
+ */
+int ast_rdlock_context(struct ast_context *con);
/*!
* \retval Unlocks the given context