[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 15/28] osdep: provide ROUND_DOWN macro
From: |
Paolo Bonzini |
Subject: |
[PULL 15/28] osdep: provide ROUND_DOWN macro |
Date: |
Fri, 25 Jun 2021 16:18:09 +0200 |
osdep.h provides a ROUND_UP macro to hide bitwise operations for the
purpose of rounding a number up to a power of two; add a ROUND_DOWN
macro that does the same with truncation towards zero.
While at it, change the formatting of some comments.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
include/qemu/osdep.h | 28 ++++++++++++++++++++++------
1 file changed, 22 insertions(+), 6 deletions(-)
diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
index 0a54bf7be8..c3656b755a 100644
--- a/include/qemu/osdep.h
+++ b/include/qemu/osdep.h
@@ -319,11 +319,16 @@ extern "C" {
})
#endif
-/* Round number down to multiple */
+/*
+ * Round number down to multiple. Safe when m is not a power of 2 (see
+ * ROUND_DOWN for a faster version when a power of 2 is guaranteed).
+ */
#define QEMU_ALIGN_DOWN(n, m) ((n) / (m) * (m))
-/* Round number up to multiple. Safe when m is not a power of 2 (see
- * ROUND_UP for a faster version when a power of 2 is guaranteed) */
+/*
+ * Round number up to multiple. Safe when m is not a power of 2 (see
+ * ROUND_UP for a faster version when a power of 2 is guaranteed).
+ */
#define QEMU_ALIGN_UP(n, m) QEMU_ALIGN_DOWN((n) + (m) - 1, (m))
/* Check if n is a multiple of m */
@@ -340,11 +345,22 @@ extern "C" {
/* Check if pointer p is n-bytes aligned */
#define QEMU_PTR_IS_ALIGNED(p, n) QEMU_IS_ALIGNED((uintptr_t)(p), (n))
-/* Round number up to multiple. Requires that d be a power of 2 (see
+/*
+ * Round number down to multiple. Requires that d be a power of 2 (see
* QEMU_ALIGN_UP for a safer but slower version on arbitrary
- * numbers); works even if d is a smaller type than n. */
+ * numbers); works even if d is a smaller type than n.
+ */
+#ifndef ROUND_DOWN
+#define ROUND_DOWN(n, d) ((n) & -(0 ? (n) : (d)))
+#endif
+
+/*
+ * Round number up to multiple. Requires that d be a power of 2 (see
+ * QEMU_ALIGN_UP for a safer but slower version on arbitrary
+ * numbers); works even if d is a smaller type than n.
+ */
#ifndef ROUND_UP
-#define ROUND_UP(n, d) (((n) + (d) - 1) & -(0 ? (n) : (d)))
+#define ROUND_UP(n, d) ROUND_DOWN((n) + (d) - 1, (d))
#endif
#ifndef DIV_ROUND_UP
--
2.31.1
- [PULL 09/28] configure, meson: convert libusb detection to meson, (continued)
- [PULL 09/28] configure, meson: convert libusb detection to meson, Paolo Bonzini, 2021/06/25
- [PULL 05/28] tests: remove QCRYPTO_HAVE_TLS_TEST_SUPPORT, Paolo Bonzini, 2021/06/25
- [PULL 08/28] configure, meson: convert pam detection to meson, Paolo Bonzini, 2021/06/25
- [PULL 10/28] configure, meson: convert libcacard detection to meson, Paolo Bonzini, 2021/06/25
- [PULL 11/28] configure, meson: convert libusbredir detection to meson, Paolo Bonzini, 2021/06/25
- [PULL 07/28] configure, meson: convert libtasn1 detection to meson, Paolo Bonzini, 2021/06/25
- [PULL 12/28] KVM: Fix dirty ring mmap incorrect size due to renaming accident, Paolo Bonzini, 2021/06/25
- [PULL 13/28] file-posix: fix max_iov for /dev/sg devices, Paolo Bonzini, 2021/06/25
- [PULL 14/28] scsi-generic: pass max_segments via max_iov field in BlockLimits, Paolo Bonzini, 2021/06/25
- [PULL 16/28] block-backend: align max_transfer to request alignment, Paolo Bonzini, 2021/06/25
- [PULL 15/28] osdep: provide ROUND_DOWN macro,
Paolo Bonzini <=
- [PULL 17/28] block: add max_hw_transfer to BlockLimits, Paolo Bonzini, 2021/06/25
- [PULL 18/28] file-posix: try BLKSECTGET on block devices too, do not round to power of 2, Paolo Bonzini, 2021/06/25
- [PULL 19/28] block: feature detection for host block support, Paolo Bonzini, 2021/06/25
- [PULL 21/28] block: try BSD disk size ioctls one after another, Paolo Bonzini, 2021/06/25
- [PULL 20/28] block: check for sys/disk.h, Paolo Bonzini, 2021/06/25
- [PULL 22/28] block: detect DKIOCGETBLOCKCOUNT/SIZE before use, Paolo Bonzini, 2021/06/25
- [PULL 23/28] file-posix: handle EINTR during ioctl, Paolo Bonzini, 2021/06/25
- [PULL 25/28] machine: move common smp_parse code to caller, Paolo Bonzini, 2021/06/25
- [PULL 26/28] machine: add error propagation to mc->smp_parse, Paolo Bonzini, 2021/06/25