diff options
author | Justus Winter <4winter@informatik.uni-hamburg.de> | 2015-07-25 01:55:22 +0200 |
---|---|---|
committer | Justus Winter <4winter@informatik.uni-hamburg.de> | 2015-08-20 18:59:44 +0200 |
commit | 2551e540fd1c03df3325fe91cf228004bb51d459 (patch) | |
tree | 92d79c5c06b9d8f988e2e42965e95ad46ee87a9e /device/if_hdr.h | |
parent | b24251ef5b12dcf56201b7468dfcaabd964c1a66 (diff) |
device: use general lock for port lists
* device/if_hdr.h (struct ifnet): Turn the port list locks into
general locks.
(port_list_{lock_init,lock,unlock): New macros.
* device/net_io.c (net_filter, net_set_filter): Use new macros.
* device/subrs.c (if_init_queues): Likewise.
Diffstat (limited to 'device/if_hdr.h')
-rw-r--r-- | device/if_hdr.h | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/device/if_hdr.h b/device/if_hdr.h index e53983b..58a670c 100644 --- a/device/if_hdr.h +++ b/device/if_hdr.h @@ -92,11 +92,13 @@ struct ifnet { struct ifqueue if_snd; /* output queue */ queue_head_t if_rcv_port_list; /* input filter list */ queue_head_t if_snd_port_list; /* output filter list */ - decl_simple_lock_data(, - if_rcv_port_list_lock) /* lock for input filter list */ - decl_simple_lock_data(, - if_snd_port_list_lock) /* lock for output filter list */ -/* statistics */ + struct lock if_rcv_port_list_lock; /* lock for input filter list */ + struct lock if_snd_port_list_lock; /* lock for output filter list */ +#define port_list_lock_init(l) lock_init(l, FALSE) +#define port_list_lock(l) lock_write(l) +#define port_list_unlock(l) lock_write_done(l) + + /* statistics */ int if_ipackets; /* packets received */ int if_ierrors; /* input errors */ int if_opackets; /* packets sent */ |