Bindgen makes the LOG_* constants unsigned, even if they are defined as
(1 << 15):
pub const LOG_TRACE: u32 = 32768;
Make them unsigned in C as well, and also change the type of the variable
that they are used with.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
include/qemu/log-for-trace.h | 4 ++--
include/qemu/log.h | 44 ++++++++++++++++++------------------
util/log.c | 2 +-
rust/qemu-api/src/log.rs | 2 +-
4 files changed, 26 insertions(+), 26 deletions(-)
diff --git a/include/qemu/log-for-trace.h b/include/qemu/log-for-trace.h
index d47c9cd4462..f3a8791f1d4 100644
--- a/include/qemu/log-for-trace.h
+++ b/include/qemu/log-for-trace.h
@@ -19,9 +19,9 @@
#define QEMU_LOG_FOR_TRACE_H
/* Private global variable, don't use */
-extern int qemu_loglevel;
+extern unsigned qemu_loglevel;
-#define LOG_TRACE (1 << 15)
+#define LOG_TRACE (1u << 15)
/* Returns true if a bit is set in the current loglevel mask */
static inline bool qemu_loglevel_mask(int mask)
diff --git a/include/qemu/log.h b/include/qemu/log.h
index aae72985f0d..7effba4da4c 100644
--- a/include/qemu/log.h
+++ b/include/qemu/log.h
@@ -14,30 +14,30 @@ bool qemu_log_enabled(void);
/* Returns true if qemu_log() will write somewhere other than stderr. */
bool qemu_log_separate(void);
-#define CPU_LOG_TB_OUT_ASM (1 << 0)
-#define CPU_LOG_TB_IN_ASM (1 << 1)
-#define CPU_LOG_TB_OP (1 << 2)
-#define CPU_LOG_TB_OP_OPT (1 << 3)
-#define CPU_LOG_INT (1 << 4)
-#define CPU_LOG_EXEC (1 << 5)
-#define CPU_LOG_PCALL (1 << 6)
-#define CPU_LOG_TB_CPU (1 << 8)
-#define CPU_LOG_RESET (1 << 9)
-#define LOG_UNIMP (1 << 10)
-#define LOG_GUEST_ERROR (1 << 11)
-#define CPU_LOG_MMU (1 << 12)
-#define CPU_LOG_TB_NOCHAIN (1 << 13)
-#define CPU_LOG_PAGE (1 << 14)
+#define CPU_LOG_TB_OUT_ASM (1u << 0)
+#define CPU_LOG_TB_IN_ASM (1u << 1)
+#define CPU_LOG_TB_OP (1u << 2)
+#define CPU_LOG_TB_OP_OPT (1u << 3)
+#define CPU_LOG_INT (1u << 4)
+#define CPU_LOG_EXEC (1u << 5)
+#define CPU_LOG_PCALL (1u << 6)
+#define CPU_LOG_TB_CPU (1u << 8)
+#define CPU_LOG_RESET (1u << 9)
+#define LOG_UNIMP (1u << 10)
+#define LOG_GUEST_ERROR (1u << 11)
+#define CPU_LOG_MMU (1u << 12)
+#define CPU_LOG_TB_NOCHAIN (1u << 13)
+#define CPU_LOG_PAGE (1u << 14)
/* LOG_TRACE (1 << 15) is defined in log-for-trace.h */
-#define CPU_LOG_TB_OP_IND (1 << 16)
-#define CPU_LOG_TB_FPU (1 << 17)
-#define CPU_LOG_PLUGIN (1 << 18)
+#define CPU_LOG_TB_OP_IND (1u << 16)
+#define CPU_LOG_TB_FPU (1u << 17)
+#define CPU_LOG_PLUGIN (1u << 18)
/* LOG_STRACE is used for user-mode strace logging. */
-#define LOG_STRACE (1 << 19)
-#define LOG_PER_THREAD (1 << 20)
-#define CPU_LOG_TB_VPU (1 << 21)
-#define LOG_TB_OP_PLUGIN (1 << 22)
-#define LOG_INVALID_MEM (1 << 23)
+#define LOG_STRACE (1u << 19)
+#define LOG_PER_THREAD (1u << 20)
+#define CPU_LOG_TB_VPU (1u << 21)
+#define LOG_TB_OP_PLUGIN (1u << 22)
+#define LOG_INVALID_MEM (1u << 23)
/* Lock/unlock output. */
diff --git a/util/log.c b/util/log.c
index abdcb6b3111..41f78ce86b2 100644
--- a/util/log.c
+++ b/util/log.c
@@ -44,7 +44,7 @@ static FILE *global_file;
static __thread FILE *thread_file;
static __thread Notifier qemu_log_thread_cleanup_notifier;
-int qemu_loglevel;
+unsigned qemu_loglevel;
static bool log_per_thread;
static GArray *debug_regions;
diff --git a/rust/qemu-api/src/log.rs b/rust/qemu-api/src/log.rs
index a441b8c1f2e..fe43e30104c 100644
--- a/rust/qemu-api/src/log.rs
+++ b/rust/qemu-api/src/log.rs
@@ -140,7 +140,7 @@ macro_rules! log_mask_ln {
let _: Log = $mask;
if unsafe {
- (::qemu_api::bindings::qemu_loglevel & ($mask as std::os::raw::c_int)) != 0
+ (::qemu_api::bindings::qemu_loglevel & ($mask as std::os::raw::c_uint)) != 0
} {
_ = ::qemu_api::log::LogGuard::log_fmt(
format_args!("{}\n", format_args!($fmt $($args)*)));
--
2.50.1
On 22/8/25 14:26, Paolo Bonzini wrote: > Bindgen makes the LOG_* constants unsigned, even if they are defined as > (1 << 15): > > pub const LOG_TRACE: u32 = 32768; > > Make them unsigned in C as well, and also change the type of the variable > that they are used with. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > include/qemu/log-for-trace.h | 4 ++-- > include/qemu/log.h | 44 ++++++++++++++++++------------------ > util/log.c | 2 +- > rust/qemu-api/src/log.rs | 2 +- > 4 files changed, 26 insertions(+), 26 deletions(-) > diff --git a/include/qemu/log.h b/include/qemu/log.h > index aae72985f0d..7effba4da4c 100644 > --- a/include/qemu/log.h > +++ b/include/qemu/log.h > @@ -14,30 +14,30 @@ bool qemu_log_enabled(void); > /* Returns true if qemu_log() will write somewhere other than stderr. */ > bool qemu_log_separate(void); > > -#define CPU_LOG_TB_OUT_ASM (1 << 0) > -#define CPU_LOG_TB_IN_ASM (1 << 1) > -#define CPU_LOG_TB_OP (1 << 2) > -#define CPU_LOG_TB_OP_OPT (1 << 3) > -#define CPU_LOG_INT (1 << 4) > -#define CPU_LOG_EXEC (1 << 5) > -#define CPU_LOG_PCALL (1 << 6) > -#define CPU_LOG_TB_CPU (1 << 8) > -#define CPU_LOG_RESET (1 << 9) > -#define LOG_UNIMP (1 << 10) > -#define LOG_GUEST_ERROR (1 << 11) > -#define CPU_LOG_MMU (1 << 12) > -#define CPU_LOG_TB_NOCHAIN (1 << 13) > -#define CPU_LOG_PAGE (1 << 14) > +#define CPU_LOG_TB_OUT_ASM (1u << 0) > +#define CPU_LOG_TB_IN_ASM (1u << 1) > +#define CPU_LOG_TB_OP (1u << 2) > +#define CPU_LOG_TB_OP_OPT (1u << 3) > +#define CPU_LOG_INT (1u << 4) > +#define CPU_LOG_EXEC (1u << 5) > +#define CPU_LOG_PCALL (1u << 6) > +#define CPU_LOG_TB_CPU (1u << 8) > +#define CPU_LOG_RESET (1u << 9) > +#define LOG_UNIMP (1u << 10) > +#define LOG_GUEST_ERROR (1u << 11) > +#define CPU_LOG_MMU (1u << 12) > +#define CPU_LOG_TB_NOCHAIN (1u << 13) > +#define CPU_LOG_PAGE (1u << 14) > /* LOG_TRACE (1 << 15) is defined in log-for-trace.h */ > -#define CPU_LOG_TB_OP_IND (1 << 16) > -#define CPU_LOG_TB_FPU (1 << 17) > -#define CPU_LOG_PLUGIN (1 << 18) > +#define CPU_LOG_TB_OP_IND (1u << 16) > +#define CPU_LOG_TB_FPU (1u << 17) > +#define CPU_LOG_PLUGIN (1u << 18) > /* LOG_STRACE is used for user-mode strace logging. */ > -#define LOG_STRACE (1 << 19) > -#define LOG_PER_THREAD (1 << 20) > -#define CPU_LOG_TB_VPU (1 << 21) > -#define LOG_TB_OP_PLUGIN (1 << 22) > -#define LOG_INVALID_MEM (1 << 23) > +#define LOG_STRACE (1u << 19) > +#define LOG_PER_THREAD (1u << 20) > +#define CPU_LOG_TB_VPU (1u << 21) > +#define LOG_TB_OP_PLUGIN (1u << 22) > +#define LOG_INVALID_MEM (1u << 23) Since changing these, alternatively use BIT() from "qemu/bitops.h", as "easier for the eyes". Anyhow, Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
On Fri, Aug 22, 2025 at 02:26:52PM +0200, Paolo Bonzini wrote: > Date: Fri, 22 Aug 2025 14:26:52 +0200 > From: Paolo Bonzini <pbonzini@redhat.com> > Subject: [PATCH 11/14] log: change qemu_loglevel to unsigned > X-Mailer: git-send-email 2.50.1 > > Bindgen makes the LOG_* constants unsigned, even if they are defined as > (1 << 15): > > pub const LOG_TRACE: u32 = 32768; > > Make them unsigned in C as well, and also change the type of the variable > that they are used with. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > include/qemu/log-for-trace.h | 4 ++-- > include/qemu/log.h | 44 ++++++++++++++++++------------------ > util/log.c | 2 +- > rust/qemu-api/src/log.rs | 2 +- > 4 files changed, 26 insertions(+), 26 deletions(-) Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
On Fri, Aug 22, 2025 at 3:28 PM Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> Bindgen makes the LOG_* constants unsigned, even if they are defined as
> (1 << 15):
>
> pub const LOG_TRACE: u32 = 32768;
>
> Make them unsigned in C as well, and also change the type of the variable
> that they are used with.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
> include/qemu/log-for-trace.h | 4 ++--
> include/qemu/log.h | 44 ++++++++++++++++++------------------
> util/log.c | 2 +-
> rust/qemu-api/src/log.rs | 2 +-
> 4 files changed, 26 insertions(+), 26 deletions(-)
>
> diff --git a/include/qemu/log-for-trace.h b/include/qemu/log-for-trace.h
> index d47c9cd4462..f3a8791f1d4 100644
> --- a/include/qemu/log-for-trace.h
> +++ b/include/qemu/log-for-trace.h
> @@ -19,9 +19,9 @@
> #define QEMU_LOG_FOR_TRACE_H
>
> /* Private global variable, don't use */
> -extern int qemu_loglevel;
> +extern unsigned qemu_loglevel;
>
> -#define LOG_TRACE (1 << 15)
> +#define LOG_TRACE (1u << 15)
>
> /* Returns true if a bit is set in the current loglevel mask */
> static inline bool qemu_loglevel_mask(int mask)
> diff --git a/include/qemu/log.h b/include/qemu/log.h
> index aae72985f0d..7effba4da4c 100644
> --- a/include/qemu/log.h
> +++ b/include/qemu/log.h
> @@ -14,30 +14,30 @@ bool qemu_log_enabled(void);
> /* Returns true if qemu_log() will write somewhere other than stderr. */
> bool qemu_log_separate(void);
>
> -#define CPU_LOG_TB_OUT_ASM (1 << 0)
> -#define CPU_LOG_TB_IN_ASM (1 << 1)
> -#define CPU_LOG_TB_OP (1 << 2)
> -#define CPU_LOG_TB_OP_OPT (1 << 3)
> -#define CPU_LOG_INT (1 << 4)
> -#define CPU_LOG_EXEC (1 << 5)
> -#define CPU_LOG_PCALL (1 << 6)
> -#define CPU_LOG_TB_CPU (1 << 8)
> -#define CPU_LOG_RESET (1 << 9)
> -#define LOG_UNIMP (1 << 10)
> -#define LOG_GUEST_ERROR (1 << 11)
> -#define CPU_LOG_MMU (1 << 12)
> -#define CPU_LOG_TB_NOCHAIN (1 << 13)
> -#define CPU_LOG_PAGE (1 << 14)
> +#define CPU_LOG_TB_OUT_ASM (1u << 0)
> +#define CPU_LOG_TB_IN_ASM (1u << 1)
> +#define CPU_LOG_TB_OP (1u << 2)
> +#define CPU_LOG_TB_OP_OPT (1u << 3)
> +#define CPU_LOG_INT (1u << 4)
> +#define CPU_LOG_EXEC (1u << 5)
> +#define CPU_LOG_PCALL (1u << 6)
> +#define CPU_LOG_TB_CPU (1u << 8)
> +#define CPU_LOG_RESET (1u << 9)
> +#define LOG_UNIMP (1u << 10)
> +#define LOG_GUEST_ERROR (1u << 11)
> +#define CPU_LOG_MMU (1u << 12)
> +#define CPU_LOG_TB_NOCHAIN (1u << 13)
> +#define CPU_LOG_PAGE (1u << 14)
> /* LOG_TRACE (1 << 15) is defined in log-for-trace.h */
> -#define CPU_LOG_TB_OP_IND (1 << 16)
> -#define CPU_LOG_TB_FPU (1 << 17)
> -#define CPU_LOG_PLUGIN (1 << 18)
> +#define CPU_LOG_TB_OP_IND (1u << 16)
> +#define CPU_LOG_TB_FPU (1u << 17)
> +#define CPU_LOG_PLUGIN (1u << 18)
> /* LOG_STRACE is used for user-mode strace logging. */
> -#define LOG_STRACE (1 << 19)
> -#define LOG_PER_THREAD (1 << 20)
> -#define CPU_LOG_TB_VPU (1 << 21)
> -#define LOG_TB_OP_PLUGIN (1 << 22)
> -#define LOG_INVALID_MEM (1 << 23)
> +#define LOG_STRACE (1u << 19)
> +#define LOG_PER_THREAD (1u << 20)
> +#define CPU_LOG_TB_VPU (1u << 21)
> +#define LOG_TB_OP_PLUGIN (1u << 22)
> +#define LOG_INVALID_MEM (1u << 23)
>
> /* Lock/unlock output. */
>
> diff --git a/util/log.c b/util/log.c
> index abdcb6b3111..41f78ce86b2 100644
> --- a/util/log.c
> +++ b/util/log.c
> @@ -44,7 +44,7 @@ static FILE *global_file;
> static __thread FILE *thread_file;
> static __thread Notifier qemu_log_thread_cleanup_notifier;
>
> -int qemu_loglevel;
> +unsigned qemu_loglevel;
> static bool log_per_thread;
> static GArray *debug_regions;
>
> diff --git a/rust/qemu-api/src/log.rs b/rust/qemu-api/src/log.rs
> index a441b8c1f2e..fe43e30104c 100644
> --- a/rust/qemu-api/src/log.rs
> +++ b/rust/qemu-api/src/log.rs
> @@ -140,7 +140,7 @@ macro_rules! log_mask_ln {
> let _: Log = $mask;
>
> if unsafe {
> - (::qemu_api::bindings::qemu_loglevel & ($mask as std::os::raw::c_int)) != 0
> + (::qemu_api::bindings::qemu_loglevel & ($mask as std::os::raw::c_uint)) != 0
> } {
> _ = ::qemu_api::log::LogGuard::log_fmt(
> format_args!("{}\n", format_args!($fmt $($args)*)));
> --
> 2.50.1
>
>
© 2016 - 2025 Red Hat, Inc.