summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Brown2011-10-14 14:35:05 +0200
committerMichael Brown2011-10-14 15:33:31 +0200
commit38b205d0a4d7c29f7ba32f3f96e4ded9790d0af2 (patch)
tree07b6755344d0ebd251d299f81e65f8ef0f5f2e6d /src
parent[dhcp] Use a random DHCP transaction identifier (xid) (diff)
downloadipxe-38b205d0a4d7c29f7ba32f3f96e4ded9790d0af2.tar.gz
ipxe-38b205d0a4d7c29f7ba32f3f96e4ded9790d0af2.tar.xz
ipxe-38b205d0a4d7c29f7ba32f3f96e4ded9790d0af2.zip
[list] Tidy up naming convention for list_contains() and friends
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src')
-rw-r--r--src/include/ipxe/list.h56
-rw-r--r--src/net/fc.c2
-rw-r--r--src/net/netdevice.c2
3 files changed, 48 insertions, 12 deletions
diff --git a/src/include/ipxe/list.h b/src/include/ipxe/list.h
index 4905aaa3a..8dc74139d 100644
--- a/src/include/ipxe/list.h
+++ b/src/include/ipxe/list.h
@@ -171,6 +171,18 @@ static inline int list_empty ( const struct list_head *list ) {
list_entry ( (list)->next, type, member ) )
/**
+ * Iterate over a list
+ *
+ * @v pos Iterator
+ * @v head List head
+ */
+#define list_for_each( pos, head ) \
+ for ( list_check ( (head) ), \
+ pos = (head)->next; \
+ pos != (head); \
+ pos = (pos)->next )
+
+/**
* Iterate over entries in a list
*
* @v pos Iterator
@@ -213,22 +225,46 @@ static inline int list_empty ( const struct list_head *list ) {
tmp = list_entry ( tmp->member.next, typeof ( *tmp ), member ) )
/**
+ * Test if list contains a specified entry
+ *
+ * @v entry Entry
+ * @v head List head
+ * @ret present List contains specified entry
+ */
+static inline int list_contains ( struct list_head *entry,
+ struct list_head *head ) {
+ struct list_head *tmp;
+
+ list_for_each ( tmp, head ) {
+ if ( tmp == entry )
+ return 1;
+ }
+ return 0;
+}
+#define list_contains( entry, head ) ( { \
+ list_check ( (head) ); \
+ list_check ( (entry) ); \
+ list_contains ( (entry), (head) ); } )
+
+/**
+ * Test if list contains a specified entry
+ *
+ * @v entry Entry
+ * @v head List head
+ * @ret present List contains specified entry
+ */
+#define list_contains_entry( entry, head, member ) \
+ list_contains ( &(entry)->member, (head) )
+
+/**
* Check list contains a specified entry
*
* @v entry Entry
* @v head List head
* @v member Name of list field within iterator's type
*/
-#define list_check_contains( entry, head, member ) do { \
- if ( ASSERTING ) { \
- typeof ( entry ) tmp; \
- int found = 0; \
- list_for_each_entry ( tmp, head, member ) { \
- if ( tmp == entry ) \
- found = 1; \
- } \
- assert ( found ); \
- } \
+#define list_check_contains_entry( entry, head, member ) do { \
+ assert ( list_contains_entry ( (entry), (head), member ) ); \
} while ( 0 )
#endif /* _IPXE_LIST_H */
diff --git a/src/net/fc.c b/src/net/fc.c
index 977ad07c7..f76cfe928 100644
--- a/src/net/fc.c
+++ b/src/net/fc.c
@@ -1625,7 +1625,7 @@ void fc_ulp_detach ( struct fc_ulp_user *user ) {
return;
/* Sanity checks */
- list_check_contains ( user, &ulp->users, list );
+ list_check_contains_entry ( user, &ulp->users, list );
/* Detach user and log out if no users remain */
list_del ( &user->list );
diff --git a/src/net/netdevice.c b/src/net/netdevice.c
index f5ec4191f..d1ae8af30 100644
--- a/src/net/netdevice.c
+++ b/src/net/netdevice.c
@@ -233,7 +233,7 @@ void netdev_tx_complete_err ( struct net_device *netdev,
struct io_buffer *iobuf, int rc ) {
/* Catch data corruption as early as possible */
- list_check_contains ( iobuf, &netdev->tx_queue, list );
+ list_check_contains_entry ( iobuf, &netdev->tx_queue, list );
/* Dequeue and free I/O buffer */
list_del ( &iobuf->list );