(2013/10/25 12:03), Jingbai Ma wrote: > On 10/25/2013 10:57 AM, Jingbai Ma wrote: >> On 10/25/2013 09:45 AM, HATAYAMA Daisuke wrote: >>> On system with huge memory, percentage in progress information is >>> updated at very slow interval, because 1 percent on 1 TiB memory is >>> about 10 GiB, which looks like as if system has freezed. Then, >>> confused users might get tempted to push a reset button to recover the >>> system. We want to avoid such situation as much as possible. >>> >>> To address the issue, this patch adds spinner that rotates in the >>> order of /, |, \ and - next to the progress indicator in percentage, >>> which helps users to get aware that system is still active and crash >>> dump process is still in progress now. >>> >>> This code is borrowed from diskdump code. >>> >>> The example is like this: >>> >>> Copying data : [ 0 %] / >>> Copying data : [ 8 %] | >>> Copying data : [ 11 %] \ >>> Copying data : [ 14 %] - >>> Copying data : [ 16 %] / >>> ... >>> Copying data : [ 99 %] / >>> Copying data : [100 %] | >>> >>> Signed-off-by: HATAYAMA Daisuke<d.hatayama at jp.fujitsu.com> >>> --- >>> print_info.c | 11 +++++++---- >>> 1 file changed, 7 insertions(+), 4 deletions(-) >>> >>> diff --git a/print_info.c b/print_info.c >>> index 3527970..879fa4b 100644 >>> --- a/print_info.c >>> +++ b/print_info.c >>> @@ -286,6 +286,8 @@ print_progress(const char *msg, unsigned long >>> current, unsigned long end) >>> int progress; >>> time_t tm; >>> static time_t last_time = 0; >>> + static unsigned int lapse = 0; >>> + const char *spinner = "/|\\-"; >> >> I believe your spinner should be: >> const char *spinner = "/|\-/|\-"; >> > > Oh, it seems not a full round, this one should be better: > const char *spinner = "/|\-"; > It's escape sequence. >>> >>> if (current< end) { >>> tm = time(NULL); >>> @@ -297,13 +299,14 @@ print_progress(const char *msg, unsigned long >>> current, unsigned long end) >>> progress = 100; >>> >>> if (flag_ignore_r_char) { >>> - PROGRESS_MSG("%-" PROGRESS_MAXLEN "s: [%3d %%]\n", >>> - msg, progress); >>> + PROGRESS_MSG("%-" PROGRESS_MAXLEN "s: [%3d %%] %c\n", >>> + msg, progress, spinner[lapse& 3]); > > And then, this line should be: > msg, progress, spinner[lapse % 4]); > OK, though I think either is fine. >>> } else { >>> PROGRESS_MSG("\r"); >>> - PROGRESS_MSG("%-" PROGRESS_MAXLEN "s: [%3d %%] ", >>> - msg, progress); >>> + PROGRESS_MSG("%-" PROGRESS_MAXLEN "s: [%3d %%] %c", >>> + msg, progress, spinner[lapse& 3]); > > This line too: > msg, progress, spinner[lapse % 4]); > OK. >>> } >>> + lapse++; >>> } >>> >>> void >> >> > > -- Thanks. HATAYAMA, Daisuke