Replace the hand-written routing with a proper library allowing even
more formats.  vmctl(8) does the same, which is also where I took the
manual wording from.

ldomctl has a local "util.h" which is included by parse.y, so
compilation would fail to find scan_scaled after including <util.h> due
the include paths set in Makefile.

After consulting with mortimer and guenther, the solution is to rename
the local util.h, so I went with ldom_util.h - this file is reached
around to from ldomd as well, hence no ldomctl_util.h or so.

ldomctl seems to be the only case where local files conflict with global
ones;  is that the right approach?  Do others consider it worth it?

util.h is small and generic, so renaming won't really cause annoyance
with CVS logs.

Feedback? OK?


Index: ldomd/ds.c
===================================================================
RCS file: /cvs/src/usr.sbin/ldomd/ds.c,v
retrieving revision 1.9
diff -u -p -r1.9 ds.c
--- ldomd/ds.c  20 Oct 2019 16:18:36 -0000      1.9
+++ ldomd/ds.c  28 Nov 2019 06:01:21 -0000
@@ -27,7 +27,7 @@
 #include <unistd.h>
 
 #include "ds.h"
-#include "util.h"
+#include "ldom_util.h"
 
 void   ldc_rx_ctrl_vers(struct ldc_conn *, struct ldc_pkt *);
 void   ldc_rx_ctrl_rtr(struct ldc_conn *, struct ldc_pkt *);
Index: ldomd/ldomd.c
===================================================================
RCS file: /cvs/src/usr.sbin/ldomd/ldomd.c,v
retrieving revision 1.9
diff -u -p -r1.9 ldomd.c
--- ldomd/ldomd.c       29 Sep 2019 17:10:00 -0000      1.9
+++ ldomd/ldomd.c       28 Nov 2019 06:01:21 -0000
@@ -34,7 +34,7 @@
 #include "ds.h"
 #include "hvctl.h"
 #include "mdesc.h"
-#include "util.h"
+#include "ldom_util.h"
 #include "ldomd.h"
 
 TAILQ_HEAD(guest_head, guest) guests;
Index: ldomd/var-config.c
===================================================================
RCS file: /cvs/src/usr.sbin/ldomd/var-config.c,v
retrieving revision 1.2
diff -u -p -r1.2 var-config.c
--- ldomd/var-config.c  27 Oct 2012 20:51:42 -0000      1.2
+++ ldomd/var-config.c  28 Nov 2019 06:01:21 -0000
@@ -29,7 +29,7 @@
 
 #include "ds.h"
 #include "mdesc.h"
-#include "util.h"
+#include "ldom_util.h"
 #include "ldomd.h"
 
 void   var_config_start(struct ldc_conn *, uint64_t);
Index: ldomctl/Makefile
===================================================================
RCS file: /cvs/src/usr.sbin/ldomctl/Makefile,v
retrieving revision 1.10
diff -u -p -r1.10 Makefile
--- ldomctl/Makefile    20 Nov 2019 18:11:28 -0000      1.10
+++ ldomctl/Makefile    28 Nov 2019 05:59:47 -0000
@@ -8,6 +8,8 @@ PROG=   ldomctl
 SRCS=  ldomctl.c ds.c mdesc.c util.c mdstore.c pri.c config.c parse.y
 CFLAGS+=-Wall
 CFLAGS+=-I${.CURDIR}/../ldomd -I${.CURDIR}
+LDADD+=        -lutil
+DPADD+=        ${LIBUTIL}
 
 .else
 
Index: ldomctl/config.c
===================================================================
RCS file: /cvs/src/usr.sbin/ldomctl/config.c,v
retrieving revision 1.28
diff -u -p -r1.28 config.c
--- ldomctl/config.c    27 Nov 2019 19:54:10 -0000      1.28
+++ ldomctl/config.c    28 Nov 2019 05:59:01 -0000
@@ -28,7 +28,7 @@
 
 #include "mdesc.h"
 #include "ldomctl.h"
-#include "util.h"
+#include "ldom_util.h"
 
 #define LDC_GUEST      0
 #define LDC_HV         1
Index: ldomctl/ldom.conf.5
===================================================================
RCS file: /cvs/src/usr.sbin/ldomctl/ldom.conf.5,v
retrieving revision 1.6
diff -u -p -r1.6 ldom.conf.5
--- ldomctl/ldom.conf.5 5 Aug 2019 19:27:47 -0000       1.6
+++ ldomctl/ldom.conf.5 28 Nov 2019 04:40:53 -0000
@@ -41,10 +41,11 @@ Declare the number of virtual CPUs assig
 Optionally a stride can be specified to allocate additional virtual CPUs
 but not assign them to a domain.
 This can be used to distribute virtual CPUs over the available CPU cores.
-.It Ic memory Ar number Ns Op Ar unit
+.It Ic memory Ar bytes
 Declare the amount of memory assigned to a domain, in bytes.
-Optionally, the units 'K', 'M', or 'G', for kilo-, mega-, and gigabytes
-can be used.
+.Ar bytes
+can be specified with a human-readable scale, using the format described in
+.Xr scan_scaled 3 .
 .It Ic iodevice Ar path
 Assign the specified PCIe device to the guest domain.
 This keyword can be used multiple times.
Index: ldomctl/ldom_util.h
===================================================================
RCS file: ldomctl/ldom_util.h
diff -N ldomctl/ldom_util.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ ldomctl/ldom_util.h 28 Nov 2019 05:59:01 -0000
@@ -0,0 +1,30 @@
+/*     $OpenBSD: util.h,v 1.4 2014/10/15 21:37:27 deraadt Exp $        */
+
+/*
+ * Copyright (c) 2012 Mark Kettenis
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <stddef.h>
+
+extern int debug;
+#define DPRINTF(x)     if (debug) printf x
+
+void *xmalloc(size_t);
+void *xzalloc(size_t);
+void *xreallocarray(void *, size_t, size_t);
+char *xstrdup(const char *);
+int xasprintf(char**, const char *, ...);
+
+#define roundup(n, m) (((n) + ((m) - 1)) & ~((m) - 1))
Index: ldomctl/ldomctl.c
===================================================================
RCS file: /cvs/src/usr.sbin/ldomctl/ldomctl.c,v
retrieving revision 1.24
diff -u -p -r1.24 ldomctl.c
--- ldomctl/ldomctl.c   28 Nov 2019 04:29:39 -0000      1.24
+++ ldomctl/ldomctl.c   28 Nov 2019 05:59:01 -0000
@@ -29,7 +29,7 @@
 #include "hvctl.h"
 #include "mdstore.h"
 #include "mdesc.h"
-#include "util.h"
+#include "ldom_util.h"
 #include "ldomctl.h"
 
 extern struct ds_service pri_service;
Index: ldomctl/mdesc.c
===================================================================
RCS file: /cvs/src/usr.sbin/ldomctl/mdesc.c,v
retrieving revision 1.12
diff -u -p -r1.12 mdesc.c
--- ldomctl/mdesc.c     14 Jul 2019 14:40:55 -0000      1.12
+++ ldomctl/mdesc.c     28 Nov 2019 05:59:01 -0000
@@ -25,7 +25,7 @@
 #include <string.h>
 
 #include "mdesc.h"
-#include "util.h"
+#include "ldom_util.h"
 
 struct md_name *
 md_find_name(struct md *md, const char *str)
Index: ldomctl/mdstore.c
===================================================================
RCS file: /cvs/src/usr.sbin/ldomctl/mdstore.c,v
retrieving revision 1.11
diff -u -p -r1.11 mdstore.c
--- ldomctl/mdstore.c   7 Jul 2019 14:45:15 -0000       1.11
+++ ldomctl/mdstore.c   28 Nov 2019 05:59:01 -0000
@@ -26,7 +26,7 @@
 #include "ds.h"
 #include "mdesc.h"
 #include "mdstore.h"
-#include "util.h"
+#include "ldom_util.h"
 #include "ldomctl.h"
 
 void   mdstore_start(struct ldc_conn *, uint64_t);
Index: ldomctl/parse.y
===================================================================
RCS file: /cvs/src/usr.sbin/ldomctl/parse.y,v
retrieving revision 1.12
diff -u -p -r1.12 parse.y
--- ldomctl/parse.y     5 Aug 2019 19:27:47 -0000       1.12
+++ ldomctl/parse.y     28 Nov 2019 04:39:07 -0000
@@ -37,6 +37,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <util.h>
 
 #include "ldomctl.h"
 #include "util.h"
@@ -236,23 +237,10 @@ memory            : NUMBER {
                        $$ = $1;
                }
                | STRING {
-                       uint64_t size;
-                       char *cp;
-
-                       size = strtoll($1, &cp, 10);
-                       if (cp != NULL) {
-                               if (strcmp(cp, "K") == 0)
-                                       size *= 1024;
-                               else if (strcmp(cp, "M") == 0)
-                                       size *= 1024 * 1024;
-                               else if (strcmp(cp, "G") == 0)
-                                       size *= 1024 * 1024 * 1024;
-                               else {
-                                        yyerror("unknown unit %s", cp);
-                                        YYERROR;
-                               }
+                       if (scan_scaled($1, &$$) == -1) {
+                               yyerror("invalid size: %s", $1);
+                               YYERROR;
                        }
-                       $$ = size;
                }
                ;
 
Index: ldomctl/pri.c
===================================================================
RCS file: /cvs/src/usr.sbin/ldomctl/pri.c,v
retrieving revision 1.1
diff -u -p -r1.1 pri.c
--- ldomctl/pri.c       4 Nov 2012 19:04:11 -0000       1.1
+++ ldomctl/pri.c       28 Nov 2019 05:59:01 -0000
@@ -21,7 +21,7 @@
 
 #include "ds.h"
 #include "mdesc.h"
-#include "util.h"
+#include "ldom_util.h"
 
 void   pri_start(struct ldc_conn *, uint64_t);
 void   pri_rx_data(struct ldc_conn *, uint64_t, void *, size_t);
Index: ldomctl/util.c
===================================================================
RCS file: /cvs/src/usr.sbin/ldomctl/util.c,v
retrieving revision 1.4
diff -u -p -r1.4 util.c
--- ldomctl/util.c      15 Oct 2014 21:37:27 -0000      1.4
+++ ldomctl/util.c      28 Nov 2019 05:59:01 -0000
@@ -22,7 +22,7 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "util.h"
+#include "ldom_util.h"
 
 int debug;
 
Index: ldomctl/util.h
===================================================================
RCS file: ldomctl/util.h
diff -N ldomctl/util.h
--- ldomctl/util.h      15 Oct 2014 21:37:27 -0000      1.4
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,33 +0,0 @@
-/*     $OpenBSD: util.h,v 1.4 2014/10/15 21:37:27 deraadt Exp $        */
-
-/*
- * Copyright (c) 2012 Mark Kettenis
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#include <stddef.h>
-
-extern int debug;
-#define DPRINTF(x)     if (debug) printf x
-
-void *xmalloc(size_t);
-void *xzalloc(size_t);
-void *xreallocarray(void *, size_t, size_t);
-char *xstrdup(const char *);
-int xasprintf(char**, const char *, ...);
-
-#define min(a, b)      ((a) < (b) ? (a) : (b))
-#define max(a, b)      ((a) > (b) ? (a) : (b))
-
-#define roundup(n, m) (((n) + ((m) - 1)) & ~((m) - 1))

Reply via email to