From 79a38d9428030028696abe2ed8c30e3f6b7c4504 Mon Sep 17 00:00:00 2001 From: Jukka Rissanen Date: Fri, 20 Jan 2012 12:01:45 +0200 Subject: [PATCH] service: Add caller information to ref/unref debug prints. This helps to pin point the exact line/function who is taking the reference. --- include/service.h | 14 ++++++++++++-- src/service.c | 13 +++++++++---- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/include/service.h b/include/service.h index 36c8658..afa51a2 100644 --- a/include/service.h +++ b/include/service.h @@ -89,8 +89,18 @@ enum connman_service_proxy_method { struct connman_service; struct connman_service *connman_service_create(void); -struct connman_service *connman_service_ref(struct connman_service *service); -void connman_service_unref(struct connman_service *service); + +#define connman_service_ref(service) \ + connman_service_ref_debug(service, __FILE__, __LINE__, __func__) + +#define connman_service_unref(service) \ + connman_service_unref_debug(service, __FILE__, __LINE__, __func__) + +struct connman_service * +connman_service_ref_debug(struct connman_service *service, + const char *file, int line, const char *caller); +void connman_service_unref_debug(struct connman_service *service, + const char *file, int line, const char *caller); enum connman_service_type connman_service_get_type(struct connman_service *service); char *connman_service_get_interface(struct connman_service *service); diff --git a/src/service.c b/src/service.c index b8906a6..edf7b22 100644 --- a/src/service.c +++ b/src/service.c @@ -3532,9 +3532,12 @@ struct connman_service *connman_service_create(void) * * Increase reference counter of service */ -struct connman_service *connman_service_ref(struct connman_service *service) +struct connman_service * +connman_service_ref_debug(struct connman_service *service, + const char *file, int line, const char *caller) { - DBG("%p ref %d", service, service->refcount + 1); + DBG("%p ref %d by %s:%d:%s()", service, service->refcount + 1, + file, line, caller); __sync_fetch_and_add(&service->refcount, 1); @@ -3548,11 +3551,13 @@ struct connman_service *connman_service_ref(struct connman_service *service) * Decrease reference counter of service and release service if no * longer needed. */ -void connman_service_unref(struct connman_service *service) +void connman_service_unref_debug(struct connman_service *service, + const char *file, int line, const char *caller) { GSequenceIter *iter; - DBG("service %p ref %d", service, service->refcount - 1); + DBG("%p ref %d by %s:%d:%s()", service, service->refcount - 1, + file, line, caller); if (__sync_fetch_and_sub(&service->refcount, 1) != 1) return; -- 2.7.4