Clarify behaviour of plug() by using intf_put() and intf_get().
authorMichael Brown <mcb30@etherboot.org>
Tue, 1 May 2007 00:06:21 +0000 (00:06 +0000)
committerMichael Brown <mcb30@etherboot.org>
Tue, 1 May 2007 00:06:21 +0000 (00:06 +0000)
src/core/interface.c
src/include/gpxe/interface.h

index 4c420fd..f9345de 100644 (file)
@@ -38,9 +38,8 @@
  * interface into a null interface.
  */
 void plug ( struct interface *intf, struct interface *dest ) {
-       ref_put ( intf->dest->refcnt );
-       intf->dest = dest;
-       ref_get ( intf->dest->refcnt );
+       intf_put ( intf->dest );
+       intf->dest = intf_get ( dest );
 }
 
 /**
index 59bb426..d27ba6a 100644 (file)
@@ -28,6 +28,26 @@ struct interface {
        struct refcnt *refcnt;
 };
 
+/**
+ * Increment reference count on an interface
+ *
+ * @v intf             Interface
+ * @ret intf           Interface
+ */
+static inline struct interface * intf_get ( struct interface *intf ) {
+       ref_get ( intf->refcnt );
+       return intf;
+}
+
+/**
+ * Decrement reference count on an interface
+ *
+ * @v intf             Interface
+ */
+static inline void intf_put ( struct interface *intf ) {
+       ref_put ( intf->refcnt );
+}
+
 extern void plug ( struct interface *intf, struct interface *dest );
 extern void plug_plug ( struct interface *a, struct interface *b );