diff options
Diffstat (limited to 'src/hci/commands/time_cmd.c')
-rw-r--r-- | src/hci/commands/time_cmd.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/hci/commands/time_cmd.c b/src/hci/commands/time_cmd.c index 9866ab9c..947410ec 100644 --- a/src/hci/commands/time_cmd.c +++ b/src/hci/commands/time_cmd.c @@ -14,12 +14,17 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * March-19-2009 @ 02:44: Added sleep command. + * Shao Miller <shao.miller@yrdsb.edu.on.ca>. */ #include <stdio.h> +#include <stdlib.h> #include <string.h> #include <unistd.h> #include <gpxe/command.h> +#include <gpxe/nap.h> #include <gpxe/timer.h> static int time_exec ( int argc, char **argv ) { @@ -52,3 +57,28 @@ struct command time_command __command = { .exec = time_exec, }; +static int sleep_exec ( int argc, char **argv ) { + unsigned long start, delay; + + if ( argc == 1 || + !strcmp ( argv[1], "--help" ) || + !strcmp ( argv[1], "-h" )) + { + printf ( "Usage:\n" + " %s <seconds>\n" + "\n" + "Sleep for <seconds> seconds\n", + argv[0] ); + return 1; + } + start = currticks(); + delay = strtoul ( argv[1], NULL, 0 ) * ticks_per_sec(); + while ( ( currticks() - start ) <= delay ) + cpu_nap(); + return 0; +} + +struct command sleep_command __command = { + .name = "sleep", + .exec = sleep_exec, +}; |