Skip to content

Commit

Permalink
[cmdline] Make "sleep" command available by default
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
mcb30 committed Oct 24, 2011
1 parent 7a84cc5 commit bf2da31
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 40 deletions.
40 changes: 40 additions & 0 deletions src/core/exec.c
Expand Up @@ -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
Expand Down Expand Up @@ -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,
};
40 changes: 0 additions & 40 deletions src/hci/commands/time_cmd.c
Expand Up @@ -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
Expand Down Expand Up @@ -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,
};

0 comments on commit bf2da31

Please sign in to comment.