diff options
author | Kevin P. Fleming <kpfleming@digium.com> | 2006-10-06 21:29:14 +0000 |
---|---|---|
committer | Kevin P. Fleming <kpfleming@digium.com> | 2006-10-06 21:29:14 +0000 |
commit | eda9434455e0217c294b90985c1eba9fc47b5ed8 (patch) | |
tree | c821ec481d475cff49a33848bed6eb711c8eaafa /include/asterisk | |
parent | 62e6417b2171f7cbe6c6c4cb7d9fdb714958d25d (diff) |
Merged revisions 44631 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r44631 | kpfleming | 2006-10-06 16:28:03 -0500 (Fri, 06 Oct 2006) | 2 lines
ensure that mutex locks inside list heads are initialized properly on platforms that require constructor initialization (issue #8029, patch from timrobbins)
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@44632 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'include/asterisk')
-rw-r--r-- | include/asterisk/linkedlists.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/include/asterisk/linkedlists.h b/include/asterisk/linkedlists.h index d7447d12f..3264b9e1a 100644 --- a/include/asterisk/linkedlists.h +++ b/include/asterisk/linkedlists.h @@ -145,12 +145,30 @@ struct name { \ This would define \c struct \c entry_list, intended to hold a list of type \c struct \c entry. */ +#if defined(AST_MUTEX_INIT_W_CONSTRUCTORS) +#define AST_LIST_HEAD_STATIC(name, type) \ +struct name { \ + struct type *first; \ + struct type *last; \ + ast_mutex_t lock; \ +} name; \ +static void __attribute__ ((constructor)) init_##name(void) \ +{ \ + AST_LIST_HEAD_INIT(&name); \ +} \ +static void __attribute__ ((destructor)) fini_##name(void) \ +{ \ + AST_LIST_HEAD_DESTROY(&name); \ +} \ +struct __dummy_##name +#else #define AST_LIST_HEAD_STATIC(name, type) \ struct name { \ struct type *first; \ struct type *last; \ ast_mutex_t lock; \ } name = AST_LIST_HEAD_INIT_VALUE +#endif /*! \brief Defines a structure to be used to hold a list of specified type, statically initialized. |