Use humanize_number() inside bhyveload?

Craig Rodrigues rodrigc at FreeBSD.org
Fri Oct 4 19:35:56 UTC 2013


Hi,

In /usr/src/usr.bin/truncate/truncate.c , you can see
that the '-s' parameter to the truncate utility
is parsed with the expand_number() utility.

Can we use expand_number() in bhyve_load?  That will allow
people to enter parameters like:

-m 2G

This is handy and consistent with other FreeBSD utilities.

Index: usr.sbin/bhyveload/Makefile
===================================================================
--- usr.sbin/bhyveload/Makefile (revision 256057)
+++ usr.sbin/bhyveload/Makefile (working copy)
@@ -4,8 +4,8 @@
 SRCS=  bhyveload.c
 MAN=   bhyveload.8

-DPADD+=        ${LIBVMMAPI}
-LDADD+=        -lvmmapi
+DPADD+=        ${LIBVMMAPI} ${LIBUTIL}
+LDADD+=        -lvmmapi -lutil

 WARNS?=        3

Index: usr.sbin/bhyveload/bhyveload.8
===================================================================
--- usr.sbin/bhyveload/bhyveload.8      (revision 256057)
+++ usr.sbin/bhyveload/bhyveload.8      (working copy)
@@ -62,11 +62,11 @@
 .Bl -tag -width indent
 .It Fl m Ar mem-size
 .Ar mem-size
-is the amount of memory allocated to the guest in units of megabytes.
+is the amount of memory allocated to the guest.
 .Pp
 The default value of
 .Ar mem-size
-is 256.
+is 256 MB.
 .It Fl d Ar disk-path
 The
 .Ar disk-path
@@ -83,7 +83,7 @@
 .Pa /freebsd/release.iso
 and has 1GB memory allocated to it:
 .Pp
-.Dl "bhyveload -m 1024 -d /freebsd/release.iso freebsd-vm"
+.Dl "bhyveload -m 1G -d /freebsd/release.iso freebsd-vm"
 .Sh SEE ALSO
 .Xr bhyve 4 ,
 .Xr bhyve 8 ,
Index: usr.sbin/bhyveload/bhyveload.c
===================================================================
--- usr.sbin/bhyveload/bhyveload.c      (revision 256057)
+++ usr.sbin/bhyveload/bhyveload.c      (working copy)
@@ -67,9 +67,11 @@
 #include <dirent.h>
 #include <dlfcn.h>
 #include <errno.h>
+#include <err.h>
 #include <fcntl.h>
 #include <getopt.h>
 #include <limits.h>
+#include <libutil.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -581,7 +583,9 @@
                        break;

                case 'm':
-                       mem_size = strtoul(optarg, NULL, 0) * MB;
+                       if (expand_number(optarg, &mem_size) == -1)
+                               errx(EXIT_FAILURE,
+                               "invalid size argument `%s'", optarg);
                        break;

                case '?':



--
Craig


More information about the freebsd-virtualization mailing list