[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL for-7.1 23/36] sysemu/os-win32: Test for and use _lock_file/_unloc
|
From: |
Richard Henderson |
|
Subject: |
[PULL for-7.1 23/36] sysemu/os-win32: Test for and use _lock_file/_unlock_file |
|
Date: |
Sun, 20 Mar 2022 10:11:22 -0700 |
The bug referenced in os-win32.h was fixed in mingw-w64 v6.
According to repology, version 5 used by ubuntu 18, which is
not yet out of support, so provide a meson link test for it.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
meson.build | 12 ++++++++++++
include/sysemu/os-win32.h | 16 +++++++++-------
2 files changed, 21 insertions(+), 7 deletions(-)
diff --git a/meson.build b/meson.build
index 282e7c4650..f22a09dac5 100644
--- a/meson.build
+++ b/meson.build
@@ -2018,6 +2018,18 @@ foreach k, v: config_host
endif
endforeach
+# Older versions of MinGW do not import _lock_file and _unlock_file properly.
+# This was fixed for v6.0.0 with commit b48e3ac8969d.
+if targetos == 'windows'
+ config_host_data.set('HAVE__LOCK_FILE', cc.links('''
+ #include <stdio.h>
+ int main(void) {
+ _lock_file(NULL);
+ _unlock_file(NULL);
+ return 0;
+ }''', name: '_lock_file and _unlock_file'))
+endif
+
########################
# Target configuration #
########################
diff --git a/include/sysemu/os-win32.h b/include/sysemu/os-win32.h
index 770752222a..649f417d39 100644
--- a/include/sysemu/os-win32.h
+++ b/include/sysemu/os-win32.h
@@ -113,20 +113,22 @@ static inline char *realpath(const char *path, char
*resolved_path)
return resolved_path;
}
-/* ??? Mingw appears to export _lock_file and _unlock_file as the functions
- * with which to lock a stdio handle. But something is wrong in the markup,
- * either in the header or the library, such that we get undefined references
- * to "_imp___lock_file" etc when linking. Since we seem to have no other
- * alternative, and the usage within the logging functions isn't critical,
- * ignore FILE locking.
+/*
+ * Older versions of MinGW do not import _lock_file and _unlock_file properly.
+ * This was fixed for v6.0.0 with commit b48e3ac8969d.
*/
-
static inline void qemu_flockfile(FILE *f)
{
+#ifdef HAVE__LOCK_FILE
+ _lock_file(f);
+#endif
}
static inline void qemu_funlockfile(FILE *f)
{
+#ifdef HAVE__LOCK_FILE
+ _unlock_file(f);
+#endif
}
/* We wrap all the sockets functions so that we can
--
2.25.1
- [PULL for-7.1 10/36] tcg: Pass the locked filepointer to tcg_dump_ops, (continued)
- [PULL for-7.1 10/36] tcg: Pass the locked filepointer to tcg_dump_ops, Richard Henderson, 2022/03/20
- [PULL for-7.1 13/36] accel/tcg: Use cpu_dump_state between qemu_log_lock/unlock, Richard Henderson, 2022/03/20
- [PULL for-7.1 12/36] exec/log: Remove log_disas and log_target_disas, Richard Henderson, 2022/03/20
- [PULL for-7.1 15/36] util/log: Use qemu_log_lock/unlock in qemu_log, Richard Henderson, 2022/03/20
- [PULL for-7.1 18/36] bsd-user: Expand log_page_dump inline, Richard Henderson, 2022/03/20
- [PULL for-7.1 19/36] linux-user: Expand log_page_dump inline, Richard Henderson, 2022/03/20
- [PULL for-7.1 17/36] util/log: Drop call to setvbuf, Richard Henderson, 2022/03/20
- [PULL for-7.1 21/36] include/exec/log: Do not reference QemuLogFile directly, Richard Henderson, 2022/03/20
- [PULL for-7.1 22/36] include/qemu/log: Move entire implementation out-of-line, Richard Henderson, 2022/03/20
- [PULL for-7.1 24/36] util/log: Introduce qemu_set_log_filename_flags, Richard Henderson, 2022/03/20
- [PULL for-7.1 23/36] sysemu/os-win32: Test for and use _lock_file/_unlock_file,
Richard Henderson <=
- [PULL for-7.1 26/36] linux-user: Use qemu_set_log_filename_flags, Richard Henderson, 2022/03/20
- [PULL for-7.1 27/36] softmmu: Use qemu_set_log_filename_flags, Richard Henderson, 2022/03/20
- [PULL for-7.1 28/36] util/log: Remove qemu_log_close, Richard Henderson, 2022/03/20
- [PULL for-7.1 31/36] util/log: Rename qemu_logfile_mutex to global_mutex, Richard Henderson, 2022/03/20
- [PULL for-7.1 33/36] util/log: Combine two logfile closes, Richard Henderson, 2022/03/20
- [PULL for-7.1 35/36] util/log: Limit RCUCloseFILE to file closing, Richard Henderson, 2022/03/20
- [PULL for-7.1 32/36] util/log: Hoist the eval of is_daemonized in qemu_set_log_internal, Richard Henderson, 2022/03/20
- [PULL for-7.1 36/36] util/log: Support per-thread log files, Richard Henderson, 2022/03/20
- [PULL for-7.1 34/36] util/log: Rename QemuLogFile to RCUCloseFILE, Richard Henderson, 2022/03/20