git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
net/i40e: fix missing defines for non-AVX build
[dpdk.git]
/
lib
/
librte_vhost
/
vhost.h
diff --git
a/lib/librte_vhost/vhost.h
b/lib/librte_vhost/vhost.h
index
ba2fc74
..
8919781
100644
(file)
--- a/
lib/librte_vhost/vhost.h
+++ b/
lib/librte_vhost/vhost.h
@@
-304,14
+304,18
@@
struct virtio_net {
#define VHOST_LOG_PAGE 4096
/*
#define VHOST_LOG_PAGE 4096
/*
- * Mark all pages belonging to the same dirty log bitmap byte
- * as dirty. The goal is to avoid concurrency between different
- * threads doing atomic read-modify-writes on the same byte.
+ * Atomically set a bit in memory.
*/
*/
+static __rte_always_inline void
+vhost_set_bit(unsigned int nr, volatile uint8_t *addr)
+{
+ __sync_fetch_and_or_8(addr, (1U << nr));
+}
+
static __rte_always_inline void
vhost_log_page(uint8_t *log_base, uint64_t page)
{
static __rte_always_inline void
vhost_log_page(uint8_t *log_base, uint64_t page)
{
-
log_base[page / 8] = 0xff
;
+
vhost_set_bit(page % 8, &log_base[page / 8])
;
}
static __rte_always_inline void
}
static __rte_always_inline void