[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH] xen/console: introduce is_console_printable()
From: Denis Mukhin <dmukhin@xxxxxxxx> Add is_console_printable() to implement a common check for printable characters in the UART emulation and guest logging code. Signed-off-by: Denis Mukhin <dmukhin@xxxxxxxx> --- Link to the original patch: https://lore.kernel.org/xen-devel/20250103-vuart-ns8250-v3-v1-1-c5d36b31d66c@xxxxxxxx/ --- --- xen/arch/arm/vuart.c | 5 ++--- xen/arch/x86/hvm/hvm.c | 5 ++--- xen/drivers/char/console.c | 3 +-- xen/include/xen/console.h | 6 ++++++ 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/xen/arch/arm/vuart.c b/xen/arch/arm/vuart.c index d5ba483f1e..bd2f425214 100644 --- a/xen/arch/arm/vuart.c +++ b/xen/arch/arm/vuart.c @@ -24,7 +24,7 @@ #include <xen/lib.h> #include <xen/sched.h> #include <xen/errno.h> -#include <xen/ctype.h> +#include <xen/console.h> #include <xen/serial.h> #include <asm/mmio.h> #include <xen/perfc.h> @@ -79,8 +79,7 @@ static void vuart_print_char(struct vcpu *v, char c) struct domain *d = v->domain; struct vuart *uart = &d->arch.vuart; - /* Accept only printable characters, newline, and horizontal tab. */ - if ( !isprint(c) && (c != '\n') && (c != '\t') ) + if ( !is_console_printable(c) ) return ; spin_lock(&uart->lock); diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index 39e39ce4ce..219028969a 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -7,7 +7,6 @@ * Copyright (c) 2008, Citrix Systems, Inc. */ -#include <xen/ctype.h> #include <xen/init.h> #include <xen/ioreq.h> #include <xen/lib.h> @@ -30,6 +29,7 @@ #include <xen/vpci.h> #include <xen/nospec.h> #include <xen/vm_event.h> +#include <xen/console.h> #include <asm/shadow.h> #include <asm/hap.h> #include <asm/current.h> @@ -561,8 +561,7 @@ static int cf_check hvm_print_line( if ( dir != IOREQ_WRITE ) return X86EMUL_UNHANDLEABLE; - /* Accept only printable characters, newline, and horizontal tab. */ - if ( !isprint(c) && (c != '\n') && (c != '\t') ) + if ( !is_console_printable(c) ) return X86EMUL_OKAY; spin_lock(&cd->pbuf_lock); diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index 7da8c5296f..b4cec77247 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -24,7 +24,6 @@ #include <xen/shutdown.h> #include <xen/video.h> #include <xen/kexec.h> -#include <xen/ctype.h> #include <xen/warning.h> #include <asm/div64.h> #include <xen/hypercall.h> /* for do_console_io */ @@ -674,7 +673,7 @@ static long guest_console_write(XEN_GUEST_HANDLE_PARAM(char) buffer, c = *kin++; if ( c == '\n' ) break; - if ( isprint(c) || c == '\t' ) + if ( is_console_printable(c) ) *kout++ = c; } while ( --kcount > 0 ); diff --git a/xen/include/xen/console.h b/xen/include/xen/console.h index 6dfbade3ec..eac6525c30 100644 --- a/xen/include/xen/console.h +++ b/xen/include/xen/console.h @@ -8,6 +8,7 @@ #define __CONSOLE_H__ #include <xen/inttypes.h> +#include <xen/ctype.h> #include <public/xen.h> struct xen_sysctl_readconsole; @@ -50,4 +51,9 @@ void console_serial_puts(const char *s, size_t nr); extern int8_t opt_console_xen; +static inline bool is_console_printable(unsigned char c) +{ + return isprint(c) || c == '\n' || c == '\t'; +} + #endif /* __CONSOLE_H__ */ -- 2.34.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |