Messages in this thread | | | Date | Wed, 27 May 2020 09:29:07 +0100 | From | Daniel Thompson <> | Subject | Re: [PATCH v3 1/4] kdb: Re-factor kdb_printf() message write code |
| |
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.garg@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 >
| |