summaryrefslogtreecommitdiffstats
path: root/src/core/parseopt.c
diff options
context:
space:
mode:
authorMichael Brown2013-11-01 03:22:12 +0100
committerMichael Brown2013-11-01 03:26:19 +0100
commit5e1fa5cd4090f229a40903f13abf328e86271717 (patch)
tree77a6302aeeb86f6c86fe95fb757a952a4ef7490e /src/core/parseopt.c
parent[ipv6] Add ndp_tx_router_solicitation() to send router solicitations (diff)
downloadipxe-5e1fa5cd4090f229a40903f13abf328e86271717.tar.gz
ipxe-5e1fa5cd4090f229a40903f13abf328e86271717.tar.xz
ipxe-5e1fa5cd4090f229a40903f13abf328e86271717.zip
[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/parseopt.c')
-rw-r--r--src/core/parseopt.c22
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