Module Name: src Committed By: pooka Date: Tue Apr 30 12:39:21 UTC 2013
Modified Files: src/lib/librumpuser: Makefile rumpuser.c rumpuser_component.c rumpuser_component.h rumpuser_daemonize.c rumpuser_int.h rumpuser_pth.c rumpuser_sp.c src/sys/rump/dev/lib/libugenhc: rumpcomp_user.c src/sys/rump/include/rump: rumpdefs.h src/sys/rump/net/lib/libshmif: rumpcomp_user.c src/sys/rump/net/lib/libsockin: rumpcomp_user.c src/sys/rump/net/lib/libvirtif: rumpcomp_user.c Added Files: src/lib/librumpuser: rumpuser_errtrans.c Log Message: Translate error codes between the hypervisor and rump kernel. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/lib/librumpuser/Makefile cvs rdiff -u -r1.46 -r1.47 src/lib/librumpuser/rumpuser.c cvs rdiff -u -r1.4 -r1.5 src/lib/librumpuser/rumpuser_component.c \ src/lib/librumpuser/rumpuser_daemonize.c cvs rdiff -u -r1.2 -r1.3 src/lib/librumpuser/rumpuser_component.h cvs rdiff -u -r0 -r1.1 src/lib/librumpuser/rumpuser_errtrans.c cvs rdiff -u -r1.7 -r1.8 src/lib/librumpuser/rumpuser_int.h cvs rdiff -u -r1.19 -r1.20 src/lib/librumpuser/rumpuser_pth.c cvs rdiff -u -r1.57 -r1.58 src/lib/librumpuser/rumpuser_sp.c cvs rdiff -u -r1.4 -r1.5 src/sys/rump/dev/lib/libugenhc/rumpcomp_user.c cvs rdiff -u -r1.17 -r1.18 src/sys/rump/include/rump/rumpdefs.h cvs rdiff -u -r1.9 -r1.10 src/sys/rump/net/lib/libshmif/rumpcomp_user.c cvs rdiff -u -r1.4 -r1.5 src/sys/rump/net/lib/libsockin/rumpcomp_user.c cvs rdiff -u -r1.4 -r1.5 src/sys/rump/net/lib/libvirtif/rumpcomp_user.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/librumpuser/Makefile diff -u src/lib/librumpuser/Makefile:1.10 src/lib/librumpuser/Makefile:1.11 --- src/lib/librumpuser/Makefile:1.10 Mon Apr 29 12:56:04 2013 +++ src/lib/librumpuser/Makefile Tue Apr 30 12:39:20 2013 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.10 2013/04/29 12:56:04 pooka Exp $ +# $NetBSD: Makefile,v 1.11 2013/04/30 12:39:20 pooka Exp $ # WARNS?= 5 @@ -14,7 +14,7 @@ CPPFLAGS+= -DLIBRUMPUSER SRCS= rumpuser.c SRCS+= rumpuser_pth.c SRCS+= rumpuser_dl.c rumpuser_sp.c rumpuser_daemonize.c rumpuser_bio.c -SRCS+= rumpuser_component.c +SRCS+= rumpuser_component.c rumpuser_errtrans.c INCSDIR= /usr/include/rump INCS= rumpuser.h rumpuser_component.h Index: src/lib/librumpuser/rumpuser.c diff -u src/lib/librumpuser/rumpuser.c:1.46 src/lib/librumpuser/rumpuser.c:1.47 --- src/lib/librumpuser/rumpuser.c:1.46 Tue Apr 30 11:26:26 2013 +++ src/lib/librumpuser/rumpuser.c Tue Apr 30 12:39:20 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpuser.c,v 1.46 2013/04/30 11:26:26 pooka Exp $ */ +/* $NetBSD: rumpuser.c,v 1.47 2013/04/30 12:39:20 pooka Exp $ */ /* * Copyright (c) 2007-2010 Antti Kantee. All Rights Reserved. @@ -28,7 +28,7 @@ #include "rumpuser_port.h" #if !defined(lint) -__RCSID("$NetBSD: rumpuser.c,v 1.46 2013/04/30 11:26:26 pooka Exp $"); +__RCSID("$NetBSD: rumpuser.c,v 1.47 2013/04/30 12:39:20 pooka Exp $"); #endif /* !lint */ #include <sys/ioctl.h> @@ -206,7 +206,7 @@ rumpuser_getfileinfo(const char *path, u if (fd != -1) close(fd); - return rv; + ET(rv); } int @@ -228,7 +228,7 @@ rumpuser_malloc(size_t howmuch, int alig } *memp = mem; - return rv; + ET(rv); } /*ARGSUSED1*/ @@ -265,16 +265,14 @@ rumpuser_anonmmap(void *prefaddr, size_t rv = 0; } - return rv; + ET(rv); } void rumpuser_unmap(void *addr, size_t len) { - int rv; - rv = munmap(addr, len); - assert(rv == 0); + munmap(addr, len); } int @@ -311,7 +309,7 @@ rumpuser_open(const char *path, int rufl } out: - return rv; + ET(rv); } int @@ -324,7 +322,7 @@ rumpuser_close(int fd) close(fd); rumpkern_sched(nlocks, NULL); - return 0; + ET(0); } /* @@ -361,7 +359,7 @@ rumpuser_iovread(int fd, struct rumpuser rv = 0; } - return rv; + ET(rv); } int @@ -393,7 +391,7 @@ rumpuser_iovwrite(int fd, const struct r rv = 0; } - return rv; + ET(rv); } int @@ -418,8 +416,7 @@ rumpuser_clock_gettime(uint64_t *sec, ui abort(); } - rv = clock_gettime(clk, &ts); - if (rv == -1) { + if (clock_gettime(clk, &ts) == -1) { rv = errno; } else { *sec = ts.tv_sec; @@ -427,7 +424,7 @@ rumpuser_clock_gettime(uint64_t *sec, ui rv = 0; } - return rv; + ET(rv); } int @@ -486,7 +483,8 @@ rumpuser_clock_sleep(uint64_t sec, uint6 } rumpkern_sched(nlocks, NULL); - return rv; + + ET(rv); } static int @@ -556,7 +554,7 @@ rumpuser_getparam(const char *name, void rv = 0; } - return rv; + ET(rv); } void @@ -616,7 +614,7 @@ rumpuser_kill(int64_t pid, int sig) rv = EOPNOTSUPP; #endif - return rv; + ET(rv); } int @@ -636,5 +634,5 @@ rumpuser_getrandom(void *buf, size_t buf } while (chunk); *retp = origlen; - return 0; + ET(0); } Index: src/lib/librumpuser/rumpuser_component.c diff -u src/lib/librumpuser/rumpuser_component.c:1.4 src/lib/librumpuser/rumpuser_component.c:1.5 --- src/lib/librumpuser/rumpuser_component.c:1.4 Mon Apr 29 15:20:05 2013 +++ src/lib/librumpuser/rumpuser_component.c Tue Apr 30 12:39:20 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpuser_component.c,v 1.4 2013/04/29 15:20:05 pooka Exp $ */ +/* $NetBSD: rumpuser_component.c,v 1.5 2013/04/30 12:39:20 pooka Exp $ */ /* * Copyright (c) 2013 Antti Kantee. All Rights Reserved. @@ -28,7 +28,7 @@ #include "rumpuser_port.h" #if !defined(lint) -__RCSID("$NetBSD: rumpuser_component.c,v 1.4 2013/04/29 15:20:05 pooka Exp $"); +__RCSID("$NetBSD: rumpuser_component.c,v 1.5 2013/04/30 12:39:20 pooka Exp $"); #endif /* !lint */ /* @@ -97,3 +97,10 @@ rumpuser_component_kthread_release(void) rumpuser__hyp.hyp_lwproc_release(); rumpuser__hyp.hyp_unschedule(); } + +int +rumpuser_component_errtrans(int hosterr) +{ + + return rumpuser__errtrans(hosterr); +} Index: src/lib/librumpuser/rumpuser_daemonize.c diff -u src/lib/librumpuser/rumpuser_daemonize.c:1.4 src/lib/librumpuser/rumpuser_daemonize.c:1.5 --- src/lib/librumpuser/rumpuser_daemonize.c:1.4 Sun Nov 18 19:29:40 2012 +++ src/lib/librumpuser/rumpuser_daemonize.c Tue Apr 30 12:39:20 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpuser_daemonize.c,v 1.4 2012/11/18 19:29:40 pooka Exp $ */ +/* $NetBSD: rumpuser_daemonize.c,v 1.5 2013/04/30 12:39:20 pooka Exp $ */ /* * Copyright (c) 2010 Antti Kantee. All Rights Reserved. @@ -28,7 +28,7 @@ #include "rumpuser_port.h" #if !defined(lint) -__RCSID("$NetBSD: rumpuser_daemonize.c,v 1.4 2012/11/18 19:29:40 pooka Exp $"); +__RCSID("$NetBSD: rumpuser_daemonize.c,v 1.5 2013/04/30 12:39:20 pooka Exp $"); #endif /* !lint */ #include <sys/types.h> @@ -39,6 +39,8 @@ __RCSID("$NetBSD: rumpuser_daemonize.c,v #include <stdio.h> #include <unistd.h> +#include "rumpuser_int.h" + #ifdef __sun__ #define _PATH_DEVNULL "/dev/null" #else @@ -55,9 +57,12 @@ rumpuser_daemonize_begin(void) { ssize_t n; int error; + int rv; - if (isdaemonizing) - return EINPROGRESS; + if (isdaemonizing) { + rv = EINPROGRESS; + goto out; + } isdaemonizing = 1; /* @@ -72,7 +77,8 @@ rumpuser_daemonize_begin(void) * take care of that or not. */ if (socketpair(PF_LOCAL, SOCK_STREAM, 0, daemonpipe) == -1) { - return errno; + rv = errno; + goto out; } switch (fork()) { @@ -80,9 +86,11 @@ rumpuser_daemonize_begin(void) if (setsid() == -1) { rumpuser_daemonize_done(errno); } - return 0; + rv = 0; + break; case -1: - return errno; + rv = errno; + break; default: close(daemonpipe[1]); n = recv(daemonpipe[0], &error, sizeof(error), MSG_NOSIGNAL); @@ -93,16 +101,21 @@ rumpuser_daemonize_begin(void) _exit(error); /*NOTREACHED*/ } + + out: + ET(rv); } int rumpuser_daemonize_done(int error) { ssize_t n; - int fd; + int fd, rv = 0; - if (!isdaemonizing) - return ENOENT; + if (!isdaemonizing) { + rv = ENOENT; + goto outout; + } if (error == 0) { fd = open(_PATH_DEVNULL, O_RDWR); @@ -119,12 +132,15 @@ rumpuser_daemonize_done(int error) out: n = send(daemonpipe[1], &error, sizeof(error), MSG_NOSIGNAL); - if (n != sizeof(error)) - return EPIPE; - else if (n == -1) - return errno; - close(daemonpipe[0]); - close(daemonpipe[1]); + if (n != sizeof(error)) { + rv = EPIPE; + } else if (n == -1) { + rv = errno; + } else { + close(daemonpipe[0]); + close(daemonpipe[1]); + } - return 0; + outout: + ET(rv); } Index: src/lib/librumpuser/rumpuser_component.h diff -u src/lib/librumpuser/rumpuser_component.h:1.2 src/lib/librumpuser/rumpuser_component.h:1.3 --- src/lib/librumpuser/rumpuser_component.h:1.2 Mon Apr 29 15:20:05 2013 +++ src/lib/librumpuser/rumpuser_component.h Tue Apr 30 12:39:20 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpuser_component.h,v 1.2 2013/04/29 15:20:05 pooka Exp $ */ +/* $NetBSD: rumpuser_component.h,v 1.3 2013/04/30 12:39:20 pooka Exp $ */ /* * Copyright (c) 2013 Antti Kantee. All Rights Reserved. @@ -30,6 +30,7 @@ void * rumpuser_component_unschedule(void); void rumpuser_component_schedule(void *); +int rumpuser_component_errtrans(int); void rumpuser_component_kthread(void); struct lwp *rumpuser_component_curlwp(void); Index: src/lib/librumpuser/rumpuser_int.h diff -u src/lib/librumpuser/rumpuser_int.h:1.7 src/lib/librumpuser/rumpuser_int.h:1.8 --- src/lib/librumpuser/rumpuser_int.h:1.7 Mon Apr 29 14:51:39 2013 +++ src/lib/librumpuser/rumpuser_int.h Tue Apr 30 12:39:20 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpuser_int.h,v 1.7 2013/04/29 14:51:39 pooka Exp $ */ +/* $NetBSD: rumpuser_int.h,v 1.8 2013/04/30 12:39:20 pooka Exp $ */ /* * Copyright (c) 2008 Antti Kantee. All Rights Reserved. @@ -93,3 +93,10 @@ do { \ abort(); \ } \ } while (/*CONSTCOND*/0) + +int rumpuser__errtrans(int); +#ifdef __NetBSD__ +#define ET(_v_) return (_v_); +#else +#define ET(_v_) return (_v_) ? rumpuser__errtrans(_v_) : 0; +#endif Index: src/lib/librumpuser/rumpuser_pth.c diff -u src/lib/librumpuser/rumpuser_pth.c:1.19 src/lib/librumpuser/rumpuser_pth.c:1.20 --- src/lib/librumpuser/rumpuser_pth.c:1.19 Tue Apr 30 00:03:52 2013 +++ src/lib/librumpuser/rumpuser_pth.c Tue Apr 30 12:39:20 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpuser_pth.c,v 1.19 2013/04/30 00:03:52 pooka Exp $ */ +/* $NetBSD: rumpuser_pth.c,v 1.20 2013/04/30 12:39:20 pooka Exp $ */ /* * Copyright (c) 2007-2010 Antti Kantee. All Rights Reserved. @@ -28,7 +28,7 @@ #include "rumpuser_port.h" #if !defined(lint) -__RCSID("$NetBSD: rumpuser_pth.c,v 1.19 2013/04/30 00:03:52 pooka Exp $"); +__RCSID("$NetBSD: rumpuser_pth.c,v 1.20 2013/04/30 12:39:20 pooka Exp $"); #endif /* !lint */ #include <assert.h> @@ -144,7 +144,7 @@ rumpuser_thread_create(void *(*f)(void * pthread_attr_destroy(&pattr); - return rv; + ET(rv); } __dead void @@ -164,7 +164,7 @@ rumpuser_thread_join(void *ptcookie) if (rv == 0) free(pt); - return rv; + ET(rv); } void @@ -240,7 +240,7 @@ rumpuser_mutex_tryenter(struct rumpuser_ mtxenter(mtx); } - return rv; + ET(rv); } void @@ -314,7 +314,7 @@ rumpuser_rw_tryenter(struct rumpuser_rw RURW_INCREAD(rw); } - return rv; + ET(rv); } void @@ -431,7 +431,7 @@ rumpuser_cv_timedwait(struct rumpuser_cv rumpkern_sched(nlocks, mtx); cv->nwaiters--; - return rv; + ET(rv); } void Index: src/lib/librumpuser/rumpuser_sp.c diff -u src/lib/librumpuser/rumpuser_sp.c:1.57 src/lib/librumpuser/rumpuser_sp.c:1.58 --- src/lib/librumpuser/rumpuser_sp.c:1.57 Tue Apr 30 00:03:52 2013 +++ src/lib/librumpuser/rumpuser_sp.c Tue Apr 30 12:39:20 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpuser_sp.c,v 1.57 2013/04/30 00:03:52 pooka Exp $ */ +/* $NetBSD: rumpuser_sp.c,v 1.58 2013/04/30 12:39:20 pooka Exp $ */ /* * Copyright (c) 2010, 2011 Antti Kantee. All Rights Reserved. @@ -37,7 +37,7 @@ #include "rumpuser_port.h" #if !defined(lint) -__RCSID("$NetBSD: rumpuser_sp.c,v 1.57 2013/04/30 00:03:52 pooka Exp $"); +__RCSID("$NetBSD: rumpuser_sp.c,v 1.58 2013/04/30 12:39:20 pooka Exp $"); #endif /* !lint */ #include <sys/types.h> @@ -795,21 +795,25 @@ sp_copyin(void *arg, const void *raddr, rumpkern_sched(nlocks, NULL); if (rv) rv = EFAULT; - return rv; + ET(rv); } int rumpuser_sp_copyin(void *arg, const void *raddr, void *laddr, size_t len) { + int rv; - return sp_copyin(arg, raddr, laddr, &len, 0); + rv = sp_copyin(arg, raddr, laddr, &len, 0); + ET(rv); } int rumpuser_sp_copyinstr(void *arg, const void *raddr, void *laddr, size_t *len) { + int rv; - return sp_copyin(arg, raddr, laddr, len, 1); + rv = sp_copyin(arg, raddr, laddr, len, 1); + ET(rv); } static int @@ -824,21 +828,25 @@ sp_copyout(void *arg, const void *laddr, if (rv) rv = EFAULT; - return 0; + ET(rv); } int rumpuser_sp_copyout(void *arg, const void *laddr, void *raddr, size_t dlen) { + int rv; - return sp_copyout(arg, laddr, raddr, dlen); + rv = sp_copyout(arg, laddr, raddr, dlen); + ET(rv); } int rumpuser_sp_copyoutstr(void *arg, const void *laddr, void *raddr, size_t *dlen) { + int rv; - return sp_copyout(arg, laddr, raddr, *dlen); + rv = sp_copyout(arg, laddr, raddr, *dlen); + ET(rv); } int @@ -867,7 +875,7 @@ rumpuser_sp_anonmmap(void *arg, size_t h out: rumpkern_sched(nlocks, NULL); - return rv; + ET(rv); } int @@ -1358,7 +1366,7 @@ rumpuser_sp_init(const char *url, pthread_detach(pt); out: - return error; + ET(error); } void Index: src/sys/rump/dev/lib/libugenhc/rumpcomp_user.c diff -u src/sys/rump/dev/lib/libugenhc/rumpcomp_user.c:1.4 src/sys/rump/dev/lib/libugenhc/rumpcomp_user.c:1.5 --- src/sys/rump/dev/lib/libugenhc/rumpcomp_user.c:1.4 Tue Apr 30 00:03:52 2013 +++ src/sys/rump/dev/lib/libugenhc/rumpcomp_user.c Tue Apr 30 12:39:21 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpcomp_user.c,v 1.4 2013/04/30 00:03:52 pooka Exp $ */ +/* $NetBSD: rumpcomp_user.c,v 1.5 2013/04/30 12:39:21 pooka Exp $ */ /* * Copyright (c) 2007-2010 Antti Kantee. All Rights Reserved. @@ -48,6 +48,6 @@ rumpcomp_ugenhc_ioctl(int fd, u_long cmd rv = 0; rumpuser_component_schedule(cookie); - return rv; + return rumpuser_component_errtrans(rv); } #endif Index: src/sys/rump/include/rump/rumpdefs.h diff -u src/sys/rump/include/rump/rumpdefs.h:1.17 src/sys/rump/include/rump/rumpdefs.h:1.18 --- src/sys/rump/include/rump/rumpdefs.h:1.17 Thu Dec 13 17:17:21 2012 +++ src/sys/rump/include/rump/rumpdefs.h Tue Apr 30 12:39:21 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpdefs.h,v 1.17 2012/12/13 17:17:21 pooka Exp $ */ +/* $NetBSD: rumpdefs.h,v 1.18 2013/04/30 12:39:21 pooka Exp $ */ /* * AUTOMATICALLY GENERATED. DO NOT EDIT. @@ -9,7 +9,7 @@ #include <rump/rump_namei.h> -/* NetBSD: fcntl.h,v 1.43 2012/11/18 17:41:54 manu Exp */ +/* NetBSD: fcntl.h,v 1.45 2013/01/13 08:15:03 dholland Exp */ #define RUMP_O_RDONLY 0x00000000 /* open for reading only */ #define RUMP_O_WRONLY 0x00000001 /* open for writing only */ #define RUMP_O_RDWR 0x00000002 /* open for reading and writing */ @@ -40,7 +40,7 @@ enum rump_vtype { RUMP_VNON, RUMP_VREG, #define RUMP_LK_NOWAIT 0x00000010 #define RUMP_LK_RETRY 0x00020000 -/* NetBSD: errno.h,v 1.39 2006/10/31 00:38:07 cbiere Exp */ +/* NetBSD: errno.h,v 1.40 2013/01/02 18:51:53 dsl Exp */ #define RUMP_EPERM 1 /* Operation not permitted */ #define RUMP_ENOENT 2 /* No such file or directory */ #define RUMP_ESRCH 3 /* No such process */ @@ -170,7 +170,7 @@ enum rump_vtype { RUMP_VNON, RUMP_VREG, #define RUMP_AB_SILENT 0x00040000 #define RUMP_AB_DEBUG 0x00080000 -/* NetBSD: socket.h,v 1.107 2012/06/22 18:26:35 christos Exp */ +/* NetBSD: socket.h,v 1.108 2013/01/31 14:30:47 joerg Exp */ #define RUMP_SOCK_STREAM 1 #define RUMP_SOCK_DGRAM 2 #define RUMP_SOCK_RAW 3 Index: src/sys/rump/net/lib/libshmif/rumpcomp_user.c diff -u src/sys/rump/net/lib/libshmif/rumpcomp_user.c:1.9 src/sys/rump/net/lib/libshmif/rumpcomp_user.c:1.10 --- src/sys/rump/net/lib/libshmif/rumpcomp_user.c:1.9 Tue Apr 30 00:33:16 2013 +++ src/sys/rump/net/lib/libshmif/rumpcomp_user.c Tue Apr 30 12:39:21 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpcomp_user.c,v 1.9 2013/04/30 00:33:16 pooka Exp $ */ +/* $NetBSD: rumpcomp_user.c,v 1.10 2013/04/30 12:39:21 pooka Exp $ */ /*- * Copyright (c) 2009, 2010 Antti Kantee. All Rights Reserved. @@ -70,7 +70,7 @@ rumpcomp_shmif_watchsetup(int *kqp, int } out: - return rv; + return rumpuser_component_errtrans(rv); } int @@ -91,7 +91,7 @@ rumpcomp_shmif_watchwait(int kq) } rumpuser_component_schedule(cookie); - return rv; + return rumpuser_component_errtrans(rv); } #elif defined(__linux__) @@ -135,7 +135,7 @@ rumpcomp_shmif_watchsetup(int *inotifyp, rv = 0; out: - return rv; + return rumpuser_component_errtrans(rv); } int @@ -158,7 +158,7 @@ rumpcomp_shmif_watchwait(int kq) rumpuser_component_schedule(cookie); - return rv; + return rumpuser_component_errtrans(rv); } #else @@ -217,6 +217,6 @@ rumpcomp_shmif_mmap(int fd, size_t len, } out: - return rv; + return rumpuser_component_errtrans(rv); } #endif Index: src/sys/rump/net/lib/libsockin/rumpcomp_user.c diff -u src/sys/rump/net/lib/libsockin/rumpcomp_user.c:1.4 src/sys/rump/net/lib/libsockin/rumpcomp_user.c:1.5 --- src/sys/rump/net/lib/libsockin/rumpcomp_user.c:1.4 Tue Apr 30 00:03:54 2013 +++ src/sys/rump/net/lib/libsockin/rumpcomp_user.c Tue Apr 30 12:39:21 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpcomp_user.c,v 1.4 2013/04/30 00:03:54 pooka Exp $ */ +/* $NetBSD: rumpcomp_user.c,v 1.5 2013/04/30 12:39:21 pooka Exp $ */ /* * Copyright (c) 2008 Antti Kantee. All Rights Reserved. @@ -49,7 +49,7 @@ rumpcomp_sockin_socket(int domain, int t seterror(*s); rumpuser_component_schedule(cookie); - return rv; + return rumpuser_component_errtrans(rv); } int @@ -65,7 +65,7 @@ rumpcomp_sockin_sendmsg(int s, const str *snd = (size_t)nn; rumpuser_component_schedule(cookie); - return rv; + return rumpuser_component_errtrans(rv); } int @@ -81,7 +81,7 @@ rumpcomp_sockin_recvmsg(int s, struct ms *rcv = (size_t)nn; rumpuser_component_schedule(cookie); - return rv; + return rumpuser_component_errtrans(rv); } int @@ -95,7 +95,7 @@ rumpcomp_sockin_connect(int s, const str seterror(rv); rumpuser_component_schedule(cookie); - return rv; + return rumpuser_component_errtrans(rv); } int @@ -109,7 +109,7 @@ rumpcomp_sockin_bind(int s, const struct seterror(rv); rumpuser_component_schedule(cookie); - return rv; + return rumpuser_component_errtrans(rv); } int @@ -123,7 +123,7 @@ rumpcomp_sockin_accept(int s, struct soc seterror(*s2); rumpuser_component_schedule(cookie); - return rv; + return rumpuser_component_errtrans(rv); } int @@ -137,7 +137,7 @@ rumpcomp_sockin_listen(int s, int backlo seterror(rv); rumpuser_component_schedule(cookie); - return rv; + return rumpuser_component_errtrans(rv); } int @@ -154,7 +154,7 @@ rumpcomp_sockin_getname(int s, struct so seterror(rv); *lenp = slen; - return rv; + return rumpuser_component_errtrans(rv); } int @@ -167,7 +167,7 @@ rumpcomp_sockin_setsockopt(int s, int le rv = setsockopt(s, level, name, data, slen); seterror(rv); - return rv; + return rumpuser_component_errtrans(rv); } int @@ -181,6 +181,6 @@ rumpcomp_sockin_poll(struct pollfd *fds, seterror(*nready); rumpuser_component_schedule(cookie); - return rv; + return rumpuser_component_errtrans(rv); } #endif Index: src/sys/rump/net/lib/libvirtif/rumpcomp_user.c diff -u src/sys/rump/net/lib/libvirtif/rumpcomp_user.c:1.4 src/sys/rump/net/lib/libvirtif/rumpcomp_user.c:1.5 --- src/sys/rump/net/lib/libvirtif/rumpcomp_user.c:1.4 Tue Apr 30 00:03:54 2013 +++ src/sys/rump/net/lib/libvirtif/rumpcomp_user.c Tue Apr 30 12:39:21 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpcomp_user.c,v 1.4 2013/04/30 00:03:54 pooka Exp $ */ +/* $NetBSD: rumpcomp_user.c,v 1.5 2013/04/30 12:39:21 pooka Exp $ */ /* * Copyright (c) 2013 Antti Kantee. All Rights Reserved. @@ -119,7 +119,7 @@ rumpcomp_virtif_create(int devnum, struc rumpuser_component_schedule(cookie); *viup = viu; - return rv; + return rumpuser_component_errtrans(rv); } void @@ -174,7 +174,7 @@ rumpcomp_virtif_recv(struct virtif_user } rumpuser_component_schedule(cookie); - return rv; + return rumpuser_component_errtrans(rv); } #undef POLLTIMO_MS Added files: Index: src/lib/librumpuser/rumpuser_errtrans.c diff -u /dev/null src/lib/librumpuser/rumpuser_errtrans.c:1.1 --- /dev/null Tue Apr 30 12:39:22 2013 +++ src/lib/librumpuser/rumpuser_errtrans.c Tue Apr 30 12:39:20 2013 @@ -0,0 +1,321 @@ +/* $NetBSD: rumpuser_errtrans.c,v 1.1 2013/04/30 12:39:20 pooka Exp $ */ + +/* + * pseudo-automatically generated. PLEASE DO EDIT (e.g. in case there + * are errnos which are defined to be the same value) + * + * awk '/^#define/{printf "#ifdef %s\n\tcase %-15s: return %s;\n#endif\n", \ + * $2, $2, $3}' < errno.h + * + */ + +#include <errno.h> + +/* + * Translate host errno to rump kernel errno + */ +int rumpuser__errtrans(int); /* a naughty decouple */ +int +rumpuser__errtrans(int hosterr) +{ + + /* just in case the vompiler is being silly */ + if (hosterr == 0) + return 0; + + switch (hosterr) { +#ifdef EPERM + case EPERM : return 1; +#endif +#ifdef ENOENT + case ENOENT : return 2; +#endif +#ifdef ESRCH + case ESRCH : return 3; +#endif +#ifdef EINTR + case EINTR : return 4; +#endif +#ifdef EIO + case EIO : return 5; +#endif +#ifdef ENXIO + case ENXIO : return 6; +#endif +#ifdef E2BIG + case E2BIG : return 7; +#endif +#ifdef ENOEXEC + case ENOEXEC : return 8; +#endif +#ifdef EBADF + case EBADF : return 9; +#endif +#ifdef ECHILD + case ECHILD : return 10; +#endif +#ifdef EDEADLK + case EDEADLK : return 11; +#endif +#ifdef ENOMEM + case ENOMEM : return 12; +#endif +#ifdef EACCES + case EACCES : return 13; +#endif +#ifdef EFAULT + case EFAULT : return 14; +#endif +#ifdef ENOTBLK + case ENOTBLK : return 15; +#endif +#ifdef EBUSY + case EBUSY : return 16; +#endif +#ifdef EEXIST + case EEXIST : return 17; +#endif +#ifdef EXDEV + case EXDEV : return 18; +#endif +#ifdef ENODEV + case ENODEV : return 19; +#endif +#ifdef ENOTDIR + case ENOTDIR : return 20; +#endif +#ifdef EISDIR + case EISDIR : return 21; +#endif +#ifdef EINVAL + case EINVAL : return 22; +#endif +#ifdef ENFILE + case ENFILE : return 23; +#endif +#ifdef EMFILE + case EMFILE : return 24; +#endif +#ifdef ENOTTY + case ENOTTY : return 25; +#endif +#ifdef ETXTBSY + case ETXTBSY : return 26; +#endif +#ifdef EFBIG + case EFBIG : return 27; +#endif +#ifdef ENOSPC + case ENOSPC : return 28; +#endif +#ifdef ESPIPE + case ESPIPE : return 29; +#endif +#ifdef EROFS + case EROFS : return 30; +#endif +#ifdef EMLINK + case EMLINK : return 31; +#endif +#ifdef EPIPE + case EPIPE : return 32; +#endif +#ifdef EDOM + case EDOM : return 33; +#endif +#ifdef ERANGE + case ERANGE : return 34; +#endif +#ifdef EAGAIN + case EAGAIN : return 35; +#endif +#if defined(EWOULDBLOCK) && EWOULDBLOCK != EAGAIN + case EWOULDBLOCK : return 35; +#endif +#ifdef EINPROGRESS + case EINPROGRESS : return 36; +#endif +#ifdef EALREADY + case EALREADY : return 37; +#endif +#ifdef ENOTSOCK + case ENOTSOCK : return 38; +#endif +#ifdef EDESTADDRREQ + case EDESTADDRREQ : return 39; +#endif +#ifdef EMSGSIZE + case EMSGSIZE : return 40; +#endif +#ifdef EPROTOTYPE + case EPROTOTYPE : return 41; +#endif +#ifdef ENOPROTOOPT + case ENOPROTOOPT : return 42; +#endif +#ifdef EPROTONOSUPPORT + case EPROTONOSUPPORT: return 43; +#endif +#ifdef ESOCKTNOSUPPORT + case ESOCKTNOSUPPORT: return 44; +#endif +#ifdef EOPNOTSUPP + case EOPNOTSUPP : return 45; +#endif +#ifdef EPFNOSUPPORT + case EPFNOSUPPORT : return 46; +#endif +#ifdef EAFNOSUPPORT + case EAFNOSUPPORT : return 47; +#endif +#ifdef EADDRINUSE + case EADDRINUSE : return 48; +#endif +#ifdef EADDRNOTAVAIL + case EADDRNOTAVAIL : return 49; +#endif +#ifdef ENETDOWN + case ENETDOWN : return 50; +#endif +#ifdef ENETUNREACH + case ENETUNREACH : return 51; +#endif +#ifdef ENETRESET + case ENETRESET : return 52; +#endif +#ifdef ECONNABORTED + case ECONNABORTED : return 53; +#endif +#ifdef ECONNRESET + case ECONNRESET : return 54; +#endif +#ifdef ENOBUFS + case ENOBUFS : return 55; +#endif +#ifdef EISCONN + case EISCONN : return 56; +#endif +#ifdef ENOTCONN + case ENOTCONN : return 57; +#endif +#ifdef ESHUTDOWN + case ESHUTDOWN : return 58; +#endif +#ifdef ETOOMANYREFS + case ETOOMANYREFS : return 59; +#endif +#ifdef ETIMEDOUT + case ETIMEDOUT : return 60; +#endif +#ifdef ECONNREFUSED + case ECONNREFUSED : return 61; +#endif +#ifdef ELOOP + case ELOOP : return 62; +#endif +#ifdef ENAMETOOLONG + case ENAMETOOLONG : return 63; +#endif +#ifdef EHOSTDOWN + case EHOSTDOWN : return 64; +#endif +#ifdef EHOSTUNREACH + case EHOSTUNREACH : return 65; +#endif +#ifdef ENOTEMPTY + case ENOTEMPTY : return 66; +#endif +#ifdef EPROCLIM + case EPROCLIM : return 67; +#endif +#ifdef EUSERS + case EUSERS : return 68; +#endif +#ifdef EDQUOT + case EDQUOT : return 69; +#endif +#ifdef ESTALE + case ESTALE : return 70; +#endif +#ifdef EREMOTE + case EREMOTE : return 71; +#endif +#ifdef EBADRPC + case EBADRPC : return 72; +#endif +#ifdef ERPCMISMATCH + case ERPCMISMATCH : return 73; +#endif +#ifdef EPROGUNAVAIL + case EPROGUNAVAIL : return 74; +#endif +#ifdef EPROGMISMATCH + case EPROGMISMATCH : return 75; +#endif +#ifdef EPROCUNAVAIL + case EPROCUNAVAIL : return 76; +#endif +#ifdef ENOLCK + case ENOLCK : return 77; +#endif +#ifdef ENOSYS + case ENOSYS : return 78; +#endif +#ifdef EFTYPE + case EFTYPE : return 79; +#endif +#ifdef EAUTH + case EAUTH : return 80; +#endif +#ifdef ENEEDAUTH + case ENEEDAUTH : return 81; +#endif +#ifdef EIDRM + case EIDRM : return 82; +#endif +#ifdef ENOMSG + case ENOMSG : return 83; +#endif +#ifdef EOVERFLOW + case EOVERFLOW : return 84; +#endif +#ifdef EILSEQ + case EILSEQ : return 85; +#endif +#if defined(ENOTSUP) && (!defined(EOPNOTSUPP) || ENOTSUP != EOPNOTSUPP) + case ENOTSUP : return 86; +#endif +#ifdef ECANCELED + case ECANCELED : return 87; +#endif +#ifdef EBADMSG + case EBADMSG : return 88; +#endif +#ifdef ENODATA + case ENODATA : return 89; +#endif +#ifdef ENOSR + case ENOSR : return 90; +#endif +#ifdef ENOSTR + case ENOSTR : return 91; +#endif +#ifdef ETIME + case ETIME : return 92; +#endif +#ifdef ENOATTR + case ENOATTR : return 93; +#endif +#ifdef EMULTIHOP + case EMULTIHOP : return 94; +#endif +#ifdef ENOLINK + case ENOLINK : return 95; +#endif +#ifdef EPROTO + case EPROTO : return 96; +#endif + + default : return 22; /* EINVAL */ + } +}