Module Name: src
Committed By: pooka
Date: Tue Sep 10 17:59:52 UTC 2013
Modified Files:
src/usr.bin/rump_allserver: rump_allserver.c
Log Message:
Make this work on platforms without disklabels, modules, etc.
To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/usr.bin/rump_allserver/rump_allserver.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.bin/rump_allserver/rump_allserver.c
diff -u src/usr.bin/rump_allserver/rump_allserver.c:1.23 src/usr.bin/rump_allserver/rump_allserver.c:1.24
--- src/usr.bin/rump_allserver/rump_allserver.c:1.23 Tue Sep 10 17:13:29 2013
+++ src/usr.bin/rump_allserver/rump_allserver.c Tue Sep 10 17:59:52 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: rump_allserver.c,v 1.23 2013/09/10 17:13:29 pooka Exp $ */
+/* $NetBSD: rump_allserver.c,v 1.24 2013/09/10 17:59:52 pooka Exp $ */
/*-
* Copyright (c) 2010, 2011 Antti Kantee. All Rights Reserved.
@@ -25,18 +25,24 @@
* SUCH DAMAGE.
*/
+#include <rump/rumpuser_port.h>
+
#include <sys/cdefs.h>
#ifndef lint
-__RCSID("$NetBSD: rump_allserver.c,v 1.23 2013/09/10 17:13:29 pooka Exp $");
+__RCSID("$NetBSD: rump_allserver.c,v 1.24 2013/09/10 17:59:52 pooka Exp $");
#endif /* !lint */
#include <sys/types.h>
-#include <sys/disklabel.h>
#include <sys/signal.h>
-#include <sys/module.h>
+#include <sys/stat.h>
-#include <rump/rump.h>
-#include <rump/rump_syscalls.h>
+#ifdef PLATFORM_HAS_NBMODULES
+#include <sys/module.h>
+#endif
+#ifdef PLATFORM_HAS_DISKLABEL
+#include <sys/disklabel.h>
+#include <util.h>
+#endif
#include <dlfcn.h>
#include <err.h>
@@ -45,14 +51,20 @@ __RCSID("$NetBSD: rump_allserver.c,v 1.2
#include <semaphore.h>
#include <stdio.h>
#include <stdlib.h>
+#include <stdint.h>
#include <string.h>
#include <unistd.h>
-#include <util.h>
+
+#include <rump/rump.h>
+#include <rump/rump_syscalls.h>
__dead static void
usage(void)
{
+#ifndef PLATFORM_HAS_SETGETPROGNAME
+#define getprogname() "rump_server"
+#endif
fprintf(stderr, "usage: %s [-s] [-c ncpu] [-d drivespec] [-l libs] "
"[-m modules] bindurl\n", getprogname());
exit(1);
@@ -115,14 +127,20 @@ int
main(int argc, char *argv[])
{
const char *serverurl;
- char **modarray = NULL;
- unsigned nmods = 0, curmod = 0, i;
struct etfsreg *etfs = NULL;
unsigned netfs = 0, curetfs = 0;
int error;
int ch, sflag;
+ unsigned i;
+#ifdef PLATFORM_HAS_NBMODULES
+ char **modarray = NULL;
+ unsigned nmods = 0, curmod = 0;
+#endif
+
+#ifdef PLATFORM_HAS_SETGETPROGNAME
setprogname(argv[0]);
+#endif
sflag = 0;
while ((ch = getopt(argc, argv, "c:d:l:m:r:sv")) != -1) {
@@ -179,9 +197,14 @@ main(int argc, char *argv[])
}
flen = DSIZE_E;
} else {
+#ifdef PLATFORM_HAS_STRSUFTOLL
/* XXX: off_t max? */
flen = strsuftoll("-d size",
value, 0, LLONG_MAX);
+#else
+ flen = strtoull(value,
+ NULL, 10);
+#endif
}
break;
case DOFFSET:
@@ -196,9 +219,13 @@ main(int argc, char *argv[])
"size=host\n");
usage();
}
+#ifdef PLATFORM_HAS_STRSUFTOLL
/* XXX: off_t max? */
foffset = strsuftoll("-d offset", value,
0, LLONG_MAX);
+#else
+ foffset = strtoull(value, NULL, 10);
+#endif
break;
case DLABEL:
@@ -283,7 +310,9 @@ main(int argc, char *argv[])
}
}
break;
- case 'm':
+#ifdef PLATFORM_HAS_NBMODULES
+ case 'm': {
+
if (nmods - curmod == 0) {
modarray = realloc(modarray,
(nmods+16) * sizeof(char *));
@@ -292,7 +321,8 @@ main(int argc, char *argv[])
nmods += 16;
}
modarray[curmod++] = optarg;
- break;
+ break; }
+#endif
case 'r':
setenv("RUMP_MEMLIMIT", optarg, 1);
break;
@@ -326,6 +356,7 @@ main(int argc, char *argv[])
if (error)
die(sflag, error, "rump init failed");
+#ifdef PLATFORM_HAS_NBMODULES
/* load modules */
for (i = 0; i < curmod; i++) {
struct modctl_load ml;
@@ -341,11 +372,10 @@ main(int argc, char *argv[])
rump_pub_etfs_remove(ETFSKEY);
#undef ETFSKEY
}
+#endif /* PLATFORM_HAS_NBMODULES */
/* register host drives */
for (i = 0; i < curetfs; i++) {
- char buf[1<<16];
- struct disklabel dl;
struct stat sb;
off_t foffset, flen, fendoff;
int fd, oflags;
@@ -355,7 +385,10 @@ main(int argc, char *argv[])
if (fd == -1)
die(sflag, errno, "etfs hostpath open");
+#ifdef PLATFORM_HAS_DISKLABEL
if (etfs[i].partition) {
+ struct disklabel dl;
+ char buf[1<<16];
int partition = etfs[i].partition - 'a';
pread(fd, buf, sizeof(buf), 0);
@@ -370,6 +403,9 @@ main(int argc, char *argv[])
flen = dl.d_partitions[partition].p_size
<< DEV_BSHIFT;
} else {
+#else
+ {
+#endif
foffset = etfs[i].foffset;
flen = etfs[i].flen;
}