9ae3a8
From 6e14ac55a7b40804cf69de560f38561214129b07 Mon Sep 17 00:00:00 2001
9ae3a8
From: Fam Zheng <famz@redhat.com>
9ae3a8
Date: Mon, 11 Jul 2016 05:33:34 +0200
9ae3a8
Subject: [PATCH 1/7] util: introduce MIN_NON_ZERO
9ae3a8
9ae3a8
RH-Author: Fam Zheng <famz@redhat.com>
9ae3a8
Message-id: <1468215219-30793-2-git-send-email-famz@redhat.com>
9ae3a8
Patchwork-id: 71105
9ae3a8
O-Subject: [RHEL-7.3 qemu-kvm PATCH 1/6] util: introduce MIN_NON_ZERO
9ae3a8
Bugzilla: 1318199
9ae3a8
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
9ae3a8
RH-Acked-by: John Snow <jsnow@redhat.com>
9ae3a8
RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
9ae3a8
9ae3a8
From: Peter Lieven <pl@kamp.de>
9ae3a8
9ae3a8
at least in block layer we have the case of limits being defined for a
9ae3a8
BlockDriverState. However, in this context often zero (0) has the special
9ae3a8
meanining of undefined which means no limit. If two of those limits are
9ae3a8
combined and the minimum is needed the minimum function should only return
9ae3a8
zero if both parameters are zero.
9ae3a8
9ae3a8
Signed-off-by: Peter Lieven <pl@kamp.de>
9ae3a8
Reviewed-by: Max Reitz <mreitz@redhat.com>
9ae3a8
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
9ae3a8
(cherry picked from commit ac3a8726644d4783eacf54212d23db01d1d30044)
9ae3a8
Signed-off-by: Fam Zheng <famz@redhat.com>
9ae3a8
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
9ae3a8
---
9ae3a8
 include/qemu/osdep.h | 6 ++++++
9ae3a8
 1 file changed, 6 insertions(+)
9ae3a8
9ae3a8
diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
9ae3a8
index 8984da0..c47a600 100644
9ae3a8
--- a/include/qemu/osdep.h
9ae3a8
+++ b/include/qemu/osdep.h
9ae3a8
@@ -68,6 +68,12 @@ typedef signed int              int_fast16_t;
9ae3a8
 #define MAX(a, b) (((a) > (b)) ? (a) : (b))
9ae3a8
 #endif
9ae3a8
 
9ae3a8
+/* Minimum function that returns zero only iff both values are zero.
9ae3a8
+ * Intended for use with unsigned values only. */
9ae3a8
+#ifndef MIN_NON_ZERO
9ae3a8
+#define MIN_NON_ZERO(a, b) (((a) != 0 && (a) < (b)) ? (a) : (b))
9ae3a8
+#endif
9ae3a8
+
9ae3a8
 #ifndef ROUND_UP
9ae3a8
 #define ROUND_UP(n,d) (((n) + (d) - 1) & -(d))
9ae3a8
 #endif
9ae3a8
-- 
9ae3a8
1.8.3.1
9ae3a8