[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 06/15] vhost: replace ffsl with ctzl
From: |
Peter Maydell |
Subject: |
[Qemu-devel] [PULL 06/15] vhost: replace ffsl with ctzl |
Date: |
Wed, 11 Jun 2014 15:29:44 +0100 |
From: Natanael Copa <address@hidden>
Avoid using the GNU extesion ffsl which is not implemented in musl libc.
The atomic_xchg() means we know that vhost_log_chunk_t will never be
larger than the 'long' type, so ctzl() is always sufficient.
See also commit fbeadf50 (bitops: unify bitops_ffsl with the one in
host-utils.h, call it bitops_ctzl) on why ctzl should be used instead
of ffsl.
Signed-off-by: Natanael Copa <address@hidden>
Reviewed-by: Paolo Bonzini <address@hidden>
Signed-off-by: Peter Maydell <address@hidden>
---
hw/virtio/vhost.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
index 9e336ad..f62cfaf 100644
--- a/hw/virtio/vhost.c
+++ b/hw/virtio/vhost.c
@@ -41,7 +41,6 @@ static void vhost_dev_sync_region(struct vhost_dev *dev,
for (;from < to; ++from) {
vhost_log_chunk_t log;
- int bit;
/* We first check with non-atomic: much cheaper,
* and we expect non-dirty to be the common case. */
if (!*from) {
@@ -51,12 +50,11 @@ static void vhost_dev_sync_region(struct vhost_dev *dev,
/* Data must be read atomically. We don't really need barrier semantics
* but it's easier to use atomic_* than roll our own. */
log = atomic_xchg(from, 0);
- while ((bit = sizeof(log) > sizeof(int) ?
- ffsll(log) : ffs(log))) {
+ while (log) {
+ int bit = ctzl(log);
hwaddr page_addr;
hwaddr section_offset;
hwaddr mr_offset;
- bit -= 1;
page_addr = addr + bit * VHOST_LOG_PAGE;
section_offset = page_addr - section->offset_within_address_space;
mr_offset = section_offset + section->offset_within_region;
--
1.9.2
- [Qemu-devel] [PULL 00/15] bsd-user queue, Peter Maydell, 2014/06/11
- [Qemu-devel] [PULL 14/15] bsd-user: Implement strace support for thr_* syscalls, Peter Maydell, 2014/06/11
- [Qemu-devel] [PULL 15/15] bsd-user: Fix syscall format, add strace support for more syscalls, Peter Maydell, 2014/06/11
- [Qemu-devel] [PULL 13/15] bsd-user: Implement strace support for extattr_* syscalls, Peter Maydell, 2014/06/11
- [Qemu-devel] [PULL 11/15] bsd-user: Implement strace support for print_ioctl syscall, Peter Maydell, 2014/06/11
- [Qemu-devel] [PULL 10/15] bsd-user: Implement strace support for print_sysctl syscall, Peter Maydell, 2014/06/11
- [Qemu-devel] [PULL 07/15] exec: replace ffsl with ctzl, Peter Maydell, 2014/06/11
- [Qemu-devel] [PULL 02/15] util/hbitmap.c: Use ctpopl rather than reimplementing a local equivalent, Peter Maydell, 2014/06/11
- [Qemu-devel] [PULL 09/15] bsd-user: GPL v2 attribution update and style, Peter Maydell, 2014/06/11
- [Qemu-devel] [PULL 08/15] bsd-user: add HOST_VARIANT_DIR for various *BSD dependent code, Peter Maydell, 2014/06/11
- [Qemu-devel] [PULL 06/15] vhost: replace ffsl with ctzl,
Peter Maydell <=
- [Qemu-devel] [PULL 03/15] bsd-user/mmap.c: Don't try to override g_malloc/g_free, Peter Maydell, 2014/06/11
- [Qemu-devel] [PULL 01/15] bsd-user: refresh freebsd system call numbers, Peter Maydell, 2014/06/11
- [Qemu-devel] [PULL 04/15] util/qemu-openpty: fix build with musl libc by include termios.h as fallback, Peter Maydell, 2014/06/11
- [Qemu-devel] [PULL 12/15] bsd-user: Implement strace support for __acl_* syscalls, Peter Maydell, 2014/06/11
- [Qemu-devel] [PULL 05/15] xen: replace ffsl with ctzl, Peter Maydell, 2014/06/11
- Re: [Qemu-devel] [PULL 00/15] bsd-user queue, Peter Maydell, 2014/06/11