diff options
-rw-r--r-- | include/asterisk/heap.h | 13 | ||||
-rw-r--r-- | main/heap.c | 20 |
2 files changed, 33 insertions, 0 deletions
diff --git a/include/asterisk/heap.h b/include/asterisk/heap.h index 56311ca05..b19dee1e3 100644 --- a/include/asterisk/heap.h +++ b/include/asterisk/heap.h @@ -198,6 +198,8 @@ void *ast_heap_peek(struct ast_heap *h, unsigned int index); */ size_t ast_heap_size(struct ast_heap *h); +#ifndef DEBUG_THREADS + /*! * \brief Write-Lock a heap * @@ -236,6 +238,17 @@ int ast_heap_rdlock(struct ast_heap *h); */ int ast_heap_unlock(struct ast_heap *h); +#else /* DEBUG_THREADS */ + +#define ast_heap_wrlock(h) __ast_heap_wrlock(h, __FILE__, __PRETTY_FUNCTION__, __LINE__) +int __ast_heap_wrlock(struct ast_heap *h, const char *file, const char *func, int line); +#define ast_heap_rdlock(h) __ast_heap_rdlock(h, __FILE__, __PRETTY_FUNCTION__, __LINE__) +int __ast_heap_rdlock(struct ast_heap *h, const char *file, const char *func, int line); +#define ast_heap_unlock(h) __ast_heap_unlock(h, __FILE__, __PRETTY_FUNCTION__, __LINE__) +int __ast_heap_unlock(struct ast_heap *h, const char *file, const char *func, int line); + +#endif /* DEBUG_THREADS */ + /*! * \brief Verify that a heap has been properly constructed * diff --git a/main/heap.c b/main/heap.c index 5e8a2baef..ee99f9919 100644 --- a/main/heap.c +++ b/main/heap.c @@ -267,6 +267,8 @@ size_t ast_heap_size(struct ast_heap *h) return h->cur_len; } +#ifndef DEBUG_THREADS + int ast_heap_wrlock(struct ast_heap *h) { return ast_rwlock_wrlock(&h->lock); @@ -282,3 +284,21 @@ int ast_heap_unlock(struct ast_heap *h) return ast_rwlock_unlock(&h->lock); } +#else /* DEBUG_THREADS */ + +int __ast_heap_wrlock(struct ast_heap *h, const char *file, const char *func, int line) +{ + return _ast_rwlock_wrlock(&h->lock, "&h->lock", file, line, func); +} + +int __ast_heap_rdlock(struct ast_heap *h, const char *file, const char *func, int line) +{ + return _ast_rwlock_rdlock(&h->lock, "&h->lock", file, line, func); +} + +int __ast_heap_unlock(struct ast_heap *h, const char *file, const char *func, int line) +{ + return _ast_rwlock_unlock(&h->lock, "&h->lock", file, line, func); +} + +#endif /* DEBUG_THREADS */ |