From b806cbbccb237fc06ce16cb3c8858389509d68c5 Mon Sep 17 00:00:00 2001 From: Richard Mudgett Date: Mon, 29 Aug 2011 21:06:16 +0000 Subject: [PATCH] Add some do not hold locks notes to channel.h git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@333785 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- include/asterisk/channel.h | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/include/asterisk/channel.h b/include/asterisk/channel.h index 8fda15787e..55482db855 100644 --- a/include/asterisk/channel.h +++ b/include/asterisk/channel.h @@ -1104,6 +1104,7 @@ struct ast_datastore *ast_channel_datastore_find(struct ast_channel *chan, const * \retval NULL failure * \retval non-NULL successfully allocated channel * + * \note Absolutely _NO_ channel locks should be held before calling this function. * \note By default, new channels are set to the "s" extension * and "default" context. */ @@ -1115,6 +1116,16 @@ struct ast_channel * attribute_malloc __attribute__((format(printf, 13, 14))) const char *file, int line, const char *function, const char *name_fmt, ...); +/*! + * \brief Create a channel structure + * + * \retval NULL failure + * \retval non-NULL successfully allocated channel + * + * \note Absolutely _NO_ channel locks should be held before calling this function. + * \note By default, new channels are set to the "s" extension + * and "default" context. + */ #define ast_channel_alloc(needqueue, state, cid_num, cid_name, acctcode, exten, context, linkedid, amaflag, ...) \ __ast_channel_alloc(needqueue, state, cid_num, cid_name, acctcode, exten, context, linkedid, amaflag, \ __FILE__, __LINE__, __FUNCTION__, __VA_ARGS__) @@ -1247,6 +1258,7 @@ void ast_change_name(struct ast_channel *chan, const char *newname); * if it is still there and also release the current reference to the channel. * * \return NULL, convenient for clearing invalid pointers + * \note Absolutely _NO_ channel locks should be held before calling this function. * * \since 1.8 */ @@ -1376,6 +1388,7 @@ int ast_channel_trace_serialize(struct ast_channel *chan, struct ast_str **out); /*! * \brief Hang up a channel + * \note Absolutely _NO_ channel locks should be held before calling this function. * \note This function performs a hard hangup on a channel. Unlike the soft-hangup, this function * performs all stream stopping, etc, on the channel that needs to end. * chan is no longer valid after this call. @@ -1924,7 +1937,9 @@ int ast_channel_bridge(struct ast_channel *c0,struct ast_channel *c1, * p->owner pointer) that is affected by the change. The physical layer of the original * channel is hung up. * - * \note Neither channel passed here needs to be locked before calling this function. + * \note Neither channel passed here should be locked before + * calling this function. This function performs deadlock + * avoidance involving these two channels. */ int ast_channel_masquerade(struct ast_channel *original, struct ast_channel *clone); @@ -2528,6 +2543,7 @@ struct ast_channel *ast_channel_iterator_next(struct ast_channel_iterator *i); * This function executes a callback one time for each active channel on the * system. The channel is provided as an argument to the function. * + * \note Absolutely _NO_ channel locks should be held before calling this function. * \since 1.8 */ struct ast_channel *ast_channel_callback(ao2_callback_data_fn *cb_fn, void *arg, -- 2.47.2