mirror of https://github.com/ipxe/ipxe.git
[cmdline] Make "sleep" command available by default
The "sleep" command is generally useful to have. For example: :dhcp_retry dhcp && goto dhcp_done sleep 5 goto dhcp_retry :dhcp_done Make the "sleep" command available by default, leaving TIME_CMD controlling only the (fairly specialist) "time" command. Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/5/head
parent
7a84cc593a
commit
bf2da3122b
|
@ -31,6 +31,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
|
|||
#include <ipxe/command.h>
|
||||
#include <ipxe/parseopt.h>
|
||||
#include <ipxe/settings.h>
|
||||
#include <ipxe/nap.h>
|
||||
#include <ipxe/shell.h>
|
||||
|
||||
/** @file
|
||||
|
@ -527,3 +528,42 @@ struct command iseq_command __command = {
|
|||
.name = "iseq",
|
||||
.exec = iseq_exec,
|
||||
};
|
||||
|
||||
/** "sleep" options */
|
||||
struct sleep_options {};
|
||||
|
||||
/** "sleep" option list */
|
||||
static struct option_descriptor sleep_opts[] = {};
|
||||
|
||||
/** "sleep" command descriptor */
|
||||
static struct command_descriptor sleep_cmd =
|
||||
COMMAND_DESC ( struct sleep_options, sleep_opts, 1, 1, "<seconds>" );
|
||||
|
||||
/**
|
||||
* "sleep" command
|
||||
*
|
||||
* @v argc Argument count
|
||||
* @v argv Argument list
|
||||
* @ret rc Return status code
|
||||
*/
|
||||
static int sleep_exec ( int argc, char **argv ) {
|
||||
struct sleep_options opts;
|
||||
unsigned long start, delay;
|
||||
int rc;
|
||||
|
||||
/* Parse options */
|
||||
if ( ( rc = parse_options ( argc, argv, &sleep_cmd, &opts ) ) != 0 )
|
||||
return rc;
|
||||
|
||||
start = currticks();
|
||||
delay = strtoul ( argv[1], NULL, 0 ) * ticks_per_sec();
|
||||
while ( ( currticks() - start ) <= delay )
|
||||
cpu_nap();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** "sleep" command */
|
||||
struct command sleep_command __command = {
|
||||
.name = "sleep",
|
||||
.exec = sleep_exec,
|
||||
};
|
||||
|
|
|
@ -27,7 +27,6 @@ FILE_LICENCE ( GPL2_OR_LATER );
|
|||
#include <unistd.h>
|
||||
#include <ipxe/command.h>
|
||||
#include <ipxe/parseopt.h>
|
||||
#include <ipxe/nap.h>
|
||||
#include <ipxe/timer.h>
|
||||
|
||||
/** @file
|
||||
|
@ -78,42 +77,3 @@ struct command time_command __command = {
|
|||
.name = "time",
|
||||
.exec = time_exec,
|
||||
};
|
||||
|
||||
/** "sleep" options */
|
||||
struct sleep_options {};
|
||||
|
||||
/** "sleep" option list */
|
||||
static struct option_descriptor sleep_opts[] = {};
|
||||
|
||||
/** "sleep" command descriptor */
|
||||
static struct command_descriptor sleep_cmd =
|
||||
COMMAND_DESC ( struct sleep_options, sleep_opts, 1, 1, "<seconds>" );
|
||||
|
||||
/**
|
||||
* "sleep" command
|
||||
*
|
||||
* @v argc Argument count
|
||||
* @v argv Argument list
|
||||
* @ret rc Return status code
|
||||
*/
|
||||
static int sleep_exec ( int argc, char **argv ) {
|
||||
struct sleep_options opts;
|
||||
unsigned long start, delay;
|
||||
int rc;
|
||||
|
||||
/* Parse options */
|
||||
if ( ( rc = parse_options ( argc, argv, &sleep_cmd, &opts ) ) != 0 )
|
||||
return rc;
|
||||
|
||||
start = currticks();
|
||||
delay = strtoul ( argv[1], NULL, 0 ) * ticks_per_sec();
|
||||
while ( ( currticks() - start ) <= delay )
|
||||
cpu_nap();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** "sleep" command */
|
||||
struct command sleep_command __command = {
|
||||
.name = "sleep",
|
||||
.exec = sleep_exec,
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue