Print one dot per second while waiting in monojob.c (e.g. for DHCP,
for file downloads, etc.), to inform user that the system has not
locked up.
Patch contributed by Andrew Schran <aschran@google.com>, minor
modification by me.
#include <gpxe/keys.h>
#include <gpxe/job.h>
#include <gpxe/monojob.h>
+#include <gpxe/timer.h>
/** @file
*
int monojob_wait ( const char *string ) {
int key;
int rc;
+ tick_t last_progress_dot;
- printf ( "%s... ", string );
+ printf ( "%s.", string );
monojob_rc = -EINPROGRESS;
+ last_progress_dot = currticks();
while ( monojob_rc == -EINPROGRESS ) {
step();
if ( iskey() ) {
break;
}
}
+ if ( ( currticks() - last_progress_dot ) > TICKS_PER_SEC ) {
+ printf ( "." );
+ last_progress_dot = currticks();
+ }
}
rc = monojob_rc;
done:
if ( rc ) {
- printf ( "%s\n", strerror ( rc ) );
+ printf ( " %s\n", strerror ( rc ) );
} else {
- printf ( "ok\n" );
+ printf ( " ok\n" );
}
return rc;
}