diff options
author | Michael Brown <mcb30@ipxe.org> | 2013-11-01 02:22:12 +0000 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2013-11-01 02:26:19 +0000 |
commit | 5e1fa5cd4090f229a40903f13abf328e86271717 (patch) | |
tree | 77a6302aeeb86f6c86fe95fb757a952a4ef7490e /src/core | |
parent | b15dbc9cc65e8385a30513554129d7640bc8a0f9 (diff) | |
download | ipxe-5e1fa5cd4090f229a40903f13abf328e86271717.tar.gz |
[parseopt] Add parse_timeout()
Parsing a timeout value (specified in milliseconds) into an internal
timeout value measured in timer ticks is a common operation. Provide
a parse_timeout() value to carry out this conversion automatically.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/parseopt.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/core/parseopt.c b/src/core/parseopt.c index 38b1f29f..51450835 100644 --- a/src/core/parseopt.c +++ b/src/core/parseopt.c @@ -30,6 +30,7 @@ FILE_LICENCE ( GPL2_OR_LATER ); #include <ipxe/menu.h> #include <ipxe/settings.h> #include <ipxe/params.h> +#include <ipxe/timer.h> #include <ipxe/parseopt.h> /** @file @@ -96,6 +97,27 @@ int parse_integer ( char *text, unsigned int *value ) { } /** + * Parse timeout value (in ms) + * + * @v text Text + * @ret value Integer value + * @ret rc Return status code + */ +int parse_timeout ( char *text, unsigned long *value ) { + unsigned int value_ms; + int rc; + + /* Parse raw integer value */ + if ( ( rc = parse_integer ( text, &value_ms ) ) != 0 ) + return rc; + + /* Convert to a number of timer ticks */ + *value = ( ( value_ms * TICKS_PER_SEC ) / 1000 ); + + return 0; +} + +/** * Parse network device name * * @v text Text |