git://git.onelab.eu
/
sliver-openvswitch.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
bond: Stop using tags.
[sliver-openvswitch.git]
/
lib
/
netdev-dummy.c
diff --git
a/lib/netdev-dummy.c
b/lib/netdev-dummy.c
index
82473a1
..
e7dfe9f
100644
(file)
--- a/
lib/netdev-dummy.c
+++ b/
lib/netdev-dummy.c
@@
-241,16
+241,11
@@
static int
netdev_dummy_create(const struct netdev_class *class, const char *name,
struct netdev **netdevp)
{
netdev_dummy_create(const struct netdev_class *class, const char *name,
struct netdev **netdevp)
{
- static unsigned int next_n = 0xaa550000;
- static pthread_mutex_t mutex = PTHREAD_ADAPTIVE_MUTEX_INITIALIZER;
-
+ static atomic_uint next_n = ATOMIC_VAR_INIT(0xaa550000);
struct netdev_dummy *netdev;
unsigned int n;
struct netdev_dummy *netdev;
unsigned int n;
- xpthread_mutex_lock(&mutex);
- n = next_n++;
- xpthread_mutex_unlock(&mutex);
-
+ atomic_add(&next_n, 1, &n);
netdev = xzalloc(sizeof *netdev);
netdev_init(&netdev->up, name, class);
netdev->hwaddr[0] = 0xaa;
netdev = xzalloc(sizeof *netdev);
netdev_init(&netdev->up, name, class);
netdev->hwaddr[0] = 0xaa;
@@
-356,7
+351,7
@@
netdev_rx_dummy_recv(struct netdev_rx *rx_, void *buffer, size_t size)
{
struct netdev_rx_dummy *rx = netdev_rx_dummy_cast(rx_);
struct ofpbuf *packet;
{
struct netdev_rx_dummy *rx = netdev_rx_dummy_cast(rx_);
struct ofpbuf *packet;
-
size_t packet_size
;
+
int retval
;
if (list_is_empty(&rx->recv_queue)) {
return -EAGAIN;
if (list_is_empty(&rx->recv_queue)) {
return -EAGAIN;
@@
-364,15
+359,15
@@
netdev_rx_dummy_recv(struct netdev_rx *rx_, void *buffer, size_t size)
packet = ofpbuf_from_list(list_pop_front(&rx->recv_queue));
rx->recv_queue_len--;
packet = ofpbuf_from_list(list_pop_front(&rx->recv_queue));
rx->recv_queue_len--;
- if (packet->size > size) {
- return -EMSGSIZE;
+ if (packet->size <= size) {
+ memcpy(buffer, packet->data, packet->size);
+ retval = packet->size;
+ } else {
+ retval = -EMSGSIZE;
}
}
- packet_size = packet->size;
-
- memcpy(buffer, packet->data, packet->size);
ofpbuf_delete(packet);
ofpbuf_delete(packet);
- return
packet_size
;
+ return
retval
;
}
static void
}
static void