From: Sitsofe Wheeler Date: Wed, 19 Aug 2020 22:58:35 +0000 (+0100) Subject: windows: fix DWORD format string complaints X-Git-Tag: fio-3.24~26^2~8 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=4937100f4695df4893606f8aa9375cde62c2c80d;ds=sidebyside windows: fix DWORD format string complaints Printing DWORD variables causes Windows clang to grumble about types: os/windows/cpu-affinity.c:263:5: error: format specifies type 'int' but the argument has type 'DWORD' (aka 'unsigned long') [-Werror,-Wformat] GetLastError()); ^~~~~~~~~~~~~~ Since a DWORD is defined to be an unsigned 32 bit integer and is declared to be an unsigned long (https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-dtyp/262627d8-3418-4627-9218-4ffe110850b2 ) just use long as the format specifier. When printing the cpu mask in hex on legacy Windows builds, cast to unsigned long long which should be safe because there won't be more than 64 CPUs with old versions of Windows. (As some format strings are longer than the wrapping width, make an exception and avoid splitting/preserve them to make greping easier) Suggested-by: Bart Van Assche Signed-off-by: Sitsofe Wheeler --- diff --git a/engines/windowsaio.c b/engines/windowsaio.c index 5c7e7964..9868e816 100644 --- a/engines/windowsaio.c +++ b/engines/windowsaio.c @@ -161,15 +161,15 @@ static int windowsaio_invalidate_cache(struct fio_file *f) if (ihFile != INVALID_HANDLE_VALUE) { if (!CloseHandle(ihFile)) { error = GetLastError(); - log_info("windowsaio: invalidation fd close %s " - "failed: error %d\n", f->file_name, error); + log_info("windowsaio: invalidation fd close %s failed: error %lu\n", + f->file_name, error); rc = 1; } } else { error = GetLastError(); if (error != ERROR_FILE_NOT_FOUND) { - log_info("windowsaio: cache invalidation of %s failed: " - "error %d\n", f->file_name, error); + log_info("windowsaio: cache invalidation of %s failed: error %lu\n", + f->file_name, error); rc = 1; } } diff --git a/os/windows/cpu-affinity.c b/os/windows/cpu-affinity.c index 4ac32ed1..46fd048d 100644 --- a/os/windows/cpu-affinity.c +++ b/os/windows/cpu-affinity.c @@ -14,7 +14,7 @@ int fio_setaffinity(int pid, os_cpu_mask_t cpumask) bSuccess = SetThreadAffinityMask(h, cpumask); if (!bSuccess) log_err("fio_setaffinity failed: failed to set thread affinity (pid %d, mask %.16llx)\n", - pid, cpumask); + pid, (long long unsigned) cpumask); CloseHandle(h); } else { @@ -261,10 +261,8 @@ int fio_setaffinity(int pid, os_cpu_mask_t cpumask) if (SetThreadGroupAffinity(handle, &new_group_affinity, NULL) != 0) ret = 0; else { - log_err("fio_setaffinity: failed to set thread affinity " - "(pid %d, group %d, mask %" PRIx64 ", " - "GetLastError=%d)\n", pid, group, group_mask, - GetLastError()); + log_err("fio_setaffinity: failed to set thread affinity (pid %d, group %d, mask %" PRIx64 ", GetLastError=%lu)\n", + pid, group, group_mask, GetLastError()); goto err; } @@ -323,7 +321,7 @@ int fio_getaffinity(int pid, os_cpu_mask_t *mask) goto err; } if (!GetProcessGroupAffinity(handle, &group_count, current_groups)) { - log_err("%s: failed to get single group affinity for pid %d (%d)\n", + log_err("%s: failed to get single group affinity for pid %d (%lu)\n", __func__, pid, GetLastError()); goto err; } diff --git a/os/windows/posix.c b/os/windows/posix.c index 31271de0..9e9f12ef 100644 --- a/os/windows/posix.c +++ b/os/windows/posix.c @@ -168,7 +168,7 @@ int win_to_posix_error(DWORD winerr) case ERROR_FILE_INVALID: return ENXIO; default: - log_err("fio: windows error %d not handled\n", winerr); + log_err("fio: windows error %lu not handled\n", winerr); return EIO; } @@ -188,7 +188,8 @@ int GetNumLogicalProcessors(void) if (error == ERROR_INSUFFICIENT_BUFFER) processor_info = malloc(len); else { - log_err("Error: GetLogicalProcessorInformation failed: %d\n", error); + log_err("Error: GetLogicalProcessorInformation failed: %lu\n", + error); return -1; }