summaryrefslogtreecommitdiffstats
path: root/src/indmanager/ind_manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/indmanager/ind_manager.c')
-rw-r--r--src/indmanager/ind_manager.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/indmanager/ind_manager.c b/src/indmanager/ind_manager.c
index 805806f..525d2f8 100644
--- a/src/indmanager/ind_manager.c
+++ b/src/indmanager/ind_manager.c
@@ -74,6 +74,7 @@ bool maybe_remove_polled(IMManager *, CMPIObjectPath *, IMError *);
/* For threading purposes */
pthread_t _t_manage;
pthread_mutex_t _t_mutex;
+pthread_mutexattr_t _t_mutex_attr;
pthread_cond_t _t_cond;
/* CMPI rc handler */
@@ -831,7 +832,9 @@ IMManager* im_create_manager(IMInstGather gather, IMFilterChecker f_checker,
manager->data = NULL;
DEBUG("Manager created");
- if (pthread_mutex_init(&_t_mutex, NULL) ||
+ if (pthread_mutexattr_init(&_t_mutex_attr) ||
+ pthread_mutexattr_settype(&_t_mutex_attr, PTHREAD_MUTEX_ERRORCHECK) ||
+ pthread_mutex_init(&_t_mutex, &_t_mutex_attr) ||
pthread_cond_init(&_t_cond, NULL)) {
*err = IM_ERR_THREAD;
free(manager);
@@ -860,7 +863,8 @@ bool im_destroy_manager(IMManager *manager, const CMPIContext *ctx,
}
pthread_mutex_unlock(&_t_mutex);
DEBUG("Destroying manager");
- if (pthread_mutex_destroy(&_t_mutex)) {
+ if (pthread_mutex_destroy(&_t_mutex) ||
+ pthread_mutexattr_destroy(&_t_mutex_attr)) {
*err = IM_ERR_THREAD;
return false;
}