PERFORCE change 46029 for review
Sam Leffler
sam at FreeBSD.org
Tue Jan 27 17:12:26 PST 2004
http://perforce.freebsd.org/chv.cgi?CH=46029
Change 46029 by sam at sam_ebb on 2004/01/27 17:11:35
o correct ieee80211_node_dectestref
o add comments describing reference counting macros
Affected files ...
.. //depot/projects/netperf+sockets/sys/net80211/ieee80211_freebsd.h#2 edit
.. //depot/projects/netperf+sockets/sys/net80211/ieee80211_netbsd.h#2 edit
Differences ...
==== //depot/projects/netperf+sockets/sys/net80211/ieee80211_freebsd.h#2 (text+ko) ====
@@ -76,12 +76,19 @@
#define ALTQ_DECL(_x)
/*
- * Node reference counting definitions.
+ * Node reference counting definitions:
+ *
+ * ieee80211_node_initref initialize the reference count to 1
+ * ieee80211_node_incref add a reference
+ * ieee80211_node_decref remove a reference
+ * ieee80211_node_dectestref remove a reference and return 1 if this
+ * is the last reference, otherwise 0
*/
#define ieee80211_node_initref(_ni) ((_ni)->ni_refcnt = 1)
#define ieee80211_node_incref(_ni) atomic_add_int(&(_ni)->ni_refcnt,1)
#define ieee80211_node_decref(_ni) atomic_subtract_int(&(_ni)->ni_refcnt,1)
+/* XXX handle circularity required by inline function */
#include <net80211/ieee80211.h>
#include <net80211/ieee80211_node.h>
@@ -92,7 +99,7 @@
do {
orefcnt = ni->ni_refcnt;
} while (atomic_cmpset_int(&ni->ni_refcnt, orefcnt, orefcnt - 1) == 0);
- return orefcnt - 1;
+ return (orefcnt == 1);
}
extern struct mbuf *ieee80211_getmgtframe(u_int8_t **frm, u_int pktlen);
==== //depot/projects/netperf+sockets/sys/net80211/ieee80211_netbsd.h#2 (text+ko) ====
@@ -74,6 +74,15 @@
void if_printf(struct ifnet *, const char *, ...)
__attribute__((__format__(__printf__,2,3)));
+/*
+ * Node reference counting definitions:
+ *
+ * ieee80211_node_initref initialize the reference count to 1
+ * ieee80211_node_incref add a reference
+ * ieee80211_node_decref remove a reference
+ * ieee80211_node_dectestref remove a reference and return 1 if this
+ * is the last reference, otherwise 0
+ */
#define ieee80211_node_incref(ni) \
do { \
int _s = splnet(); \
@@ -94,10 +103,12 @@
s = splnet();
refcnt = --ni->ni_refcnt;
splx(s);
- return refcnt;
+ return (refcnt == 0);
}
#define ifmedia_removeall(_media) \
ifmedia_delete_instance((_media), IFM_INST_ANY)
+extern struct mbuf *ieee80211_getmgtframe(u_int8_t **frm, u_int pktlen);
+
#endif /* _NET80211_IEEE80211_NETBSD_H_ */
More information about the p4-projects
mailing list