console: Improve TFTP booting performance
PATCH v2 1/1 console: Improve TFTP booting performance
TFTP booting is observed a little bit slow, especially when a USB keyboard is installed.
The fix is to check whether Ctrl-C key is pressed every CONFIG_CTRLC_POLL_S second.
---
Changes in V2:
1. Change configuration name from CONFIG_CTRLC_POLL_MS to CONFIG_CTRLC_POLL_S.
2. New code will be executed only when CONFIG_CTRLC_POLL_S is defined in configuration header file.
3. Add description in README.console.
common/console.c | 16 ++++++++++++++++ doc/README.console | 10 ++++++++++ 2 files changed, 26 insertions(+), 0 deletions(-)
common/console.c +16 -0
@@ -521,12 +521,28 @@ int vprintf(const char *fmt, va_list args)return i; } +#ifdef CONFIG_CTRLC_POLL_S +/* +* Process Ctrl-C every CONFIG_CTRLC_POLL_S second(s) to improve performance +* (like TFTP boot) when interlaced with other tasks like USB KB +* polling. +*/ +static unsigned long ctrlc_ts = (CONFIG_CTRLC_POLL_S *CONFIG_SYS_HZ ); +#endif +/* test if ctrl-c was pressed */ static int ctrlc_disabled =0 ;/* see disable_ctrl() */ static int ctrlc_was_pressed =0 ;int ctrlc (void ) {if (!ctrlc_disabled && gd->have_console) { +#ifdef CONFIG_CTRLC_POLL_S +if (get_timer (ctrlc_ts) < (CONFIG_CTRLC_POLL_S + *CONFIG_SYS_HZ )) +return 0 ; +else + ctrlc_ts =get_timer (0 ); +#endif if (tstc ()) {switch (getc ()) {case 0x03 :/* ^C - Control C */
doc/README.console +10 -0
@@ -116,3 +116,13 @@ CREDITS for other contact informations): - MPC823FADS with AD7176 on a PAL TV (YCbYCr) - arsenio at tin.it - GENIETV with AD7177 on a PAL TV (YCbYCr) - [email protected] + +Config Switches: +---------------- +CONFIG_CTRLC_POLL_S define a value to check whether Ctrl-C is pressed + every defined second(s). This is to improve TFTP + booting if USB KB is installed and polling is used. + For example: + Define the following in configuration header file + #define CONFIG_CTRLC_POLL_S 1 + for console to check Ctrl-C every second.
Signature · 1 line
1.7.7
Wolfgang Denk
NAKPATCH v2 1/1 console: Improve TFTP booting performance
Dear Jim Lin,
Quoted 13 lines · In message <[email protected]> you wrote:
TFTP booting is observed a little bit slow, especially when a USB keyboard is installed.
The fix is to check whether Ctrl-C key is pressed everyCONFIG_CTRLC_POLL_Ssecond.Signed-off-by Jim Lin <[email protected]>---
Changes in V2:
1. Change configuration name fromCONFIG_CTRLC_POLL_MStoCONFIG_CTRLC_POLL_S.
2. New code will be executed only whenCONFIG_CTRLC_POLL_Sis defined in configuration header file.
3. Add description in README.console.
Quoted 3 lines
common/console.c | 16 ++++++++++++++++ doc/README.console | 10 ++++++++++ 2 files changed, 26 insertions(+), 0 deletions(-)
NAK.
You modify not only the TFTP related code, but the general behaviour everywhere. For you, and for TFTP operation, it might be sufficient to check for ^C only every few seconds, but in general this is not the case.
You write your problem comes from using a USB keyboard, where tstc() appears to be a slow operation.
In this case it would be best to fix the problem at the root, i. e. improve the performance of tstc() so it doesn't hurt any more.
What you are doing here is just paperingover a problem which may (and will) hit you in other places as well. Do not do that. Fix the root problem.
Best regards,
Wolfgang Denk
Signature · 6 lines
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
As usual, this being a 1.3.x release, I haven't even compiled this
kernel yet. So if it works, you should be doubly impressed.
- Linus Torvalds in <[email protected]>