From: Michał Kępień Date: Fri, 7 Jun 2019 13:21:43 +0000 (+0200) Subject: Fix statistics for x86 Windows builds X-Git-Tag: v9.15.2~43^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e21103f2d37d339886b09387b08239c838d50ef1;p=thirdparty%2Fbind9.git Fix statistics for x86 Windows builds Using atomic_int_fast64_t variables with atomic functions on x86 does not cause Visual Studio to report build errors, but such operations yield useless results. Since the isc_stat_t type is unconditionally typedef'd to atomic_int_fast64_t, any code performing atomic operations on isc_stat_t variables is broken in x86 Windows builds. Fix by using the atomic_int_fast32_t type for isc_stat_t in x86 Windows builds. --- diff --git a/doc/arm/Bv9ARM-book.xml b/doc/arm/Bv9ARM-book.xml index cc9921bcfca..4a27aa80244 100644 --- a/doc/arm/Bv9ARM-book.xml +++ b/doc/arm/Bv9ARM-book.xml @@ -15352,6 +15352,15 @@ HOST-127.EXAMPLE. MX 0 . BIND 8 statistics, if applicable. + + Note: BIND statistics counters are signed 64-bit values on + all platforms except one: 32-bit Windows, where they are + signed 32-bit values. Given that 32-bit values have a + vastly smaller range than 64-bit values, BIND statistics + counters in 32-bit Windows builds overflow significantly + more quickly than on all other platforms. + +
Name Server Statistics Counters diff --git a/lib/isc/stats.c b/lib/isc/stats.c index 883c1c373b1..123c6dff97d 100644 --- a/lib/isc/stats.c +++ b/lib/isc/stats.c @@ -28,7 +28,11 @@ #define ISC_STATS_MAGIC ISC_MAGIC('S', 't', 'a', 't') #define ISC_STATS_VALID(x) ISC_MAGIC_VALID(x, ISC_STATS_MAGIC) +#if defined(_WIN32) && !defined(_WIN64) +typedef atomic_int_fast32_t isc_stat_t; +#else typedef atomic_int_fast64_t isc_stat_t; +#endif struct isc_stats { unsigned int magic;