On Wed, May 27, 2020 at 11:55:56AM +0530, Sumit Garg wrote:
> Re-factor kdb_printf() message write code in order to avoid duplication
> of code and thereby increase readability.
> 
> Signed-off-by: Sumit Garg <sumit.g...@linaro.org>
> ---
>  kernel/debug/kdb/kdb_io.c | 61 
> +++++++++++++++++++++++++----------------------
>  1 file changed, 32 insertions(+), 29 deletions(-)
> 
> diff --git a/kernel/debug/kdb/kdb_io.c b/kernel/debug/kdb/kdb_io.c
> index 924bc92..f6b4d47 100644
> --- a/kernel/debug/kdb/kdb_io.c
> +++ b/kernel/debug/kdb/kdb_io.c
> @@ -542,6 +542,33 @@ static int kdb_search_string(char *searched, char 
> *searchfor)
>       return 0;
>  }
>  
> +static void kdb_io_write(char *cp, int len, void (*io_put_char)(u8 ch))

Don't use a function pointer here. Just pick it up from dbg_io_ops as
usual.


> +{
> +     if (len <= 0)
> +             return;

How can len ever be negative?


> +
> +     while (len--) {
> +             io_put_char(*cp);
> +             cp++;
> +     }
> +}
> +
> +static void kdb_msg_write(char *msg, int msg_len)
> +{
> +     struct console *c;
> +
> +     if (msg_len <= 0)
> +             return;

How can msg_len ever be negative?


> +
> +     if (dbg_io_ops && !dbg_io_ops->is_console)
> +             kdb_io_write(msg, msg_len, dbg_io_ops->write_char);
> +
> +     for_each_console(c) {
> +             c->write(c, msg, msg_len);
> +             touch_nmi_watchdog();
> +     }
> +}
> +
>  int vkdb_printf(enum kdb_msgsrc src, const char *fmt, va_list ap)
>  {
>       int diag;
> @@ -553,7 +580,6 @@ int vkdb_printf(enum kdb_msgsrc src, const char *fmt, 
> va_list ap)
>       int this_cpu, old_cpu;
>       char *cp, *cp2, *cphold = NULL, replaced_byte = ' ';
>       char *moreprompt = "more> ";
> -     struct console *c;
>       unsigned long uninitialized_var(flags);
>  
>       /* Serialize kdb_printf if multiple cpus try to write at once.
> @@ -687,22 +713,11 @@ int vkdb_printf(enum kdb_msgsrc src, const char *fmt, 
> va_list ap)
>        */
>       retlen = strlen(kdb_buffer);
>       cp = (char *) printk_skip_headers(kdb_buffer);
> -     if (!dbg_kdb_mode && kgdb_connected) {
> +     if (!dbg_kdb_mode && kgdb_connected)
>               gdbstub_msg_write(cp, retlen - (cp - kdb_buffer));
> -     } else {
> -             if (dbg_io_ops && !dbg_io_ops->is_console) {
> -                     len = retlen - (cp - kdb_buffer);
> -                     cp2 = cp;
> -                     while (len--) {
> -                             dbg_io_ops->write_char(*cp2);
> -                             cp2++;
> -                     }
> -             }
> -             for_each_console(c) {
> -                     c->write(c, cp, retlen - (cp - kdb_buffer));
> -                     touch_nmi_watchdog();
> -             }
> -     }
> +     else
> +             kdb_msg_write(cp, retlen - (cp - kdb_buffer));
> +
>       if (logging) {
>               saved_loglevel = console_loglevel;
>               console_loglevel = CONSOLE_LOGLEVEL_SILENT;
> @@ -751,19 +766,7 @@ int vkdb_printf(enum kdb_msgsrc src, const char *fmt, 
> va_list ap)
>                       moreprompt = "more> ";
>  
>               kdb_input_flush();
> -
> -             if (dbg_io_ops && !dbg_io_ops->is_console) {
> -                     len = strlen(moreprompt);
> -                     cp = moreprompt;
> -                     while (len--) {
> -                             dbg_io_ops->write_char(*cp);
> -                             cp++;
> -                     }
> -             }
> -             for_each_console(c) {
> -                     c->write(c, moreprompt, strlen(moreprompt));
> -                     touch_nmi_watchdog();
> -             }
> +             kdb_msg_write(moreprompt, strlen(moreprompt));
>  
>               if (logging)
>                       printk("%s", moreprompt);
> -- 
> 2.7.4
> 


_______________________________________________
Kgdb-bugreport mailing list
Kgdb-bugreport@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kgdb-bugreport

Reply via email to