diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2016-11-01 16:53:05 +0000 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2016-11-01 16:53:05 +0000 |
commit | 4eb28abd52d48657cff6ff45e8dbbbefe4dbb414 (patch) | |
tree | 9b58e8217513ed2375850b9831762d01aea2ad80 /include | |
parent | c46ef897dbb75590af94b6e3dca6a9c5f9a1ea1e (diff) | |
parent | 3ff91d7e85176f8b4b131163d7fd801757a2c949 (diff) |
Merge remote-tracking branch 'remotes/rth/tags/pull-tcg-20161101-2' into staging
tcg queued patches
# gpg: Signature made Tue 01 Nov 2016 16:45:42 GMT
# gpg: using RSA key 0xAD1270CC4DD0279B
# gpg: Good signature from "Richard Henderson <rth7680@gmail.com>"
# gpg: aka "Richard Henderson <rth@redhat.com>"
# gpg: aka "Richard Henderson <rth@twiddle.net>"
# Primary key fingerprint: 9CB1 8DDA F8E8 49AD 2AFC 16A4 AD12 70CC 4DD0 279B
* remotes/rth/tags/pull-tcg-20161101-2:
tcg: correct 32-bit tcg_gen_ld8s_i64 sign-extension
tcg/tcg.h: Improve documentation of TCGv_i32 etc types
MAINTAINERS: Update PPC status and maintainer
target-microblaze: Cleanup dec_mul
tcg: Add tcg_gen_mulsu2_{i32,i64,tl}
log: Add locking to large logging blocks
target-openrisc: Do not dump cpu state with -d in_asm
target-microblaze: Do not dump cpu state with -d in_asm
target-cris: Do not dump cpu state with -d in_asm
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/qemu/log.h | 16 | ||||
-rw-r--r-- | include/sysemu/os-posix.h | 12 | ||||
-rw-r--r-- | include/sysemu/os-win32.h | 15 |
3 files changed, 43 insertions, 0 deletions
diff --git a/include/qemu/log.h b/include/qemu/log.h index 00bf37fc0f..a50e994c21 100644 --- a/include/qemu/log.h +++ b/include/qemu/log.h @@ -51,6 +51,22 @@ static inline bool qemu_loglevel_mask(int mask) return (qemu_loglevel & mask) != 0; } +/* Lock output for a series of related logs. Since this is not needed + * for a single qemu_log / qemu_log_mask / qemu_log_mask_and_addr, we + * assume that qemu_loglevel_mask has already been tested, and that + * qemu_loglevel is never set when qemu_logfile is unset. + */ + +static inline void qemu_log_lock(void) +{ + qemu_flockfile(qemu_logfile); +} + +static inline void qemu_log_unlock(void) +{ + qemu_funlockfile(qemu_logfile); +} + /* Logging functions: */ /* main logging function diff --git a/include/sysemu/os-posix.h b/include/sysemu/os-posix.h index 3cfedbc28b..b0a6c0695b 100644 --- a/include/sysemu/os-posix.h +++ b/include/sysemu/os-posix.h @@ -87,4 +87,16 @@ void *qemu_alloc_stack(size_t *sz); */ void qemu_free_stack(void *stack, size_t sz); +/* POSIX and Mingw32 differ in the name of the stdio lock functions. */ + +static inline void qemu_flockfile(FILE *f) +{ + flockfile(f); +} + +static inline void qemu_funlockfile(FILE *f) +{ + funlockfile(f); +} + #endif diff --git a/include/sysemu/os-win32.h b/include/sysemu/os-win32.h index 17aad3b20f..ff18b23db1 100644 --- a/include/sysemu/os-win32.h +++ b/include/sysemu/os-win32.h @@ -103,6 +103,21 @@ 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. + */ + +static inline void qemu_flockfile(FILE *f) +{ +} + +static inline void qemu_funlockfile(FILE *f) +{ +} /* We wrap all the sockets functions so that we can * set errno based on WSAGetLastError() |