]> git.saurik.com Git - apple/xnu.git/blobdiff - libkern/os/overflow.h
xnu-4570.51.1.tar.gz
[apple/xnu.git] / libkern / os / overflow.h
index 8d0fd994921bc3db1314e756b32c242170096921..05ddbef3923dc4b2487e42920a6d026e91376cb1 100644 (file)
@@ -131,6 +131,15 @@ __os_warn_unused(__const bool x)
        _s | _t; \
 }))
 
+/* os_mul3_overflow(a, b, c) -> (a * b * c) */
+#define os_mul3_overflow(a, b, c, res) __os_warn_unused(__extension__({ \
+       __typeof(*(res)) _tmp; \
+       bool _s, _t; \
+       _s = os_mul_overflow((a), (b), &_tmp); \
+       _t = os_mul_overflow((c), _tmp, (res)); \
+       _s | _t; \
+}))
+
 /* os_add_and_mul_overflow(a, b, x) -> (a + b)*x */
 #define os_add_and_mul_overflow(a, b, x, res) __os_warn_unused(__extension__({ \
        __typeof(*(res)) _tmp; \
@@ -149,4 +158,6 @@ __os_warn_unused(__const bool x)
        _s | _t; \
 }))
 
+#define os_convert_overflow(a, res) os_add_overflow((a), 0, (res))
+
 #endif /* _OS_OVERFLOW_H */