diff options
author | Shao Miller | 2009-03-21 06:48:15 +0100 |
---|---|---|
committer | Michael Brown | 2009-03-26 11:06:04 +0100 |
commit | 87b494bbab0616e16a5efe38c7de356374b5d61f (patch) | |
tree | 024138d8c5bb8a8e13a83ba82f1844e59ffdc80d /src/hci/commands | |
parent | [settings] Fix broken assertion in fetch_string_setting_copy() (diff) | |
download | ipxe-87b494bbab0616e16a5efe38c7de356374b5d61f.tar.gz ipxe-87b494bbab0616e16a5efe38c7de356374b5d61f.tar.xz ipxe-87b494bbab0616e16a5efe38c7de356374b5d61f.zip |
[time] Add the sleep command
Reviewed-by: Stefan Hajnoczi <stefanha@gmail.com>
Reviewed-by: Thomas Miletich <thomas.miletich@gmail.com>
Modified-by: Michael Brown <mcb30@etherboot.org>
Signed-off-by: Michael Brown <mcb30@etherboot.org>
Diffstat (limited to 'src/hci/commands')
-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, +}; |