Make ref_get() return the reference, for cleaner code.
[people/sha0/gpxe.git] / src / core / refcnt.c
index 4efd9d7..30bb6de 100644 (file)
  * Increment reference count
  *
  * @v refcnt           Reference counter, or NULL
+ * @ret refcnt         Reference counter
  *
  * If @c refcnt is NULL, no action is taken.
  */
-void ref_get ( struct refcnt *refcnt ) {
+struct refcnt * ref_get ( struct refcnt *refcnt ) {
 
-       if ( ! refcnt )
-               return;
-
-       refcnt->refcnt++;
-
-       DBGC ( refcnt, "REFCNT %p incremented to %d\n",
-              refcnt, refcnt->refcnt );
+       if ( refcnt ) {
+               refcnt->refcnt++;
+               DBGC2 ( refcnt, "REFCNT %p incremented to %d\n",
+                       refcnt, refcnt->refcnt );
+       }
+       return refcnt;
 }
 
 /**
@@ -59,15 +59,18 @@ void ref_put ( struct refcnt *refcnt ) {
                return;
 
        refcnt->refcnt--;
-       DBGC ( refcnt, "REFCNT %p decremented to %d\n",
-              refcnt, refcnt->refcnt );
+       DBGC2 ( refcnt, "REFCNT %p decremented to %d\n",
+               refcnt, refcnt->refcnt );
 
        if ( refcnt->refcnt >= 0 )
                return;
 
        if ( refcnt->free ) {
+               DBGC ( refcnt, "REFCNT %p being freed via method %p\n",
+                      refcnt, refcnt->free );
                refcnt->free ( refcnt );
        } else {
+               DBGC ( refcnt, "REFCNT %p being freed\n", refcnt );
                free ( refcnt );
        }
 }