Add interfaces that out-of-librumpuser hypercalls can use to unschedule

and reschedule themselves if they plan to block.
This commit is contained in:
pooka 2013-03-01 18:15:36 +00:00
parent cb8ba332c0
commit 7b7946c688
15 changed files with 127 additions and 29 deletions

View File

@ -1,4 +1,4 @@
# $NetBSD: ad.mips64eb,v 1.114 2013/02/16 21:40:08 jmmv Exp $
# $NetBSD: ad.mips64eb,v 1.115 2013/03/01 18:15:36 pooka Exp $
./libexec/ld.elf_so-64 base-compat-shlib compat,pic
./libexec/ld.elf_so-o32 base-sysutil-bin compat,pic
./usr/lib/64 base-compat-lib
@ -244,7 +244,7 @@
./usr/lib/64/librumpnet.so.0 base-compat-shlib compat,pic,rump
./usr/lib/64/librumpnet.so.0.0 base-compat-shlib compat,pic,rump
./usr/lib/64/librumpuser.so.0 base-compat-shlib compat,pic,rump
./usr/lib/64/librumpuser.so.0.0 base-compat-shlib compat,pic,rump
./usr/lib/64/librumpuser.so.0.1 base-compat-shlib compat,pic,rump
./usr/lib/64/librumpvfs.so.0 base-compat-shlib compat,pic,rump
./usr/lib/64/librumpvfs.so.0.0 base-compat-shlib compat,pic,rump
./usr/lib/64/libsaslc.so.0 base-compat-shlib compat,pic,crypto
@ -560,7 +560,7 @@
./usr/lib/o32/librumpnet.so.0 base-compat-shlib compat,pic,rump
./usr/lib/o32/librumpnet.so.0.0 base-compat-shlib compat,pic,rump
./usr/lib/o32/librumpuser.so.0 base-compat-shlib compat,pic,rump
./usr/lib/o32/librumpuser.so.0.0 base-compat-shlib compat,pic,rump
./usr/lib/o32/librumpuser.so.0.1 base-compat-shlib compat,pic,rump
./usr/lib/o32/librumpvfs.so.0 base-compat-shlib compat,pic,rump
./usr/lib/o32/librumpvfs.so.0.0 base-compat-shlib compat,pic,rump
./usr/lib/o32/libsaslc.so.0 base-compat-shlib compat,pic,crypto

View File

@ -1,4 +1,4 @@
# $NetBSD: ad.mips64el,v 1.114 2013/02/16 21:40:09 jmmv Exp $
# $NetBSD: ad.mips64el,v 1.115 2013/03/01 18:15:36 pooka Exp $
./libexec/ld.elf_so-64 base-compat-shlib compat,pic
./libexec/ld.elf_so-o32 base-sysutil-bin compat,pic
./usr/lib/64 base-compat-lib
@ -242,7 +242,7 @@
./usr/lib/64/librumpnet.so.0 base-compat-shlib compat,pic,rump
./usr/lib/64/librumpnet.so.0.0 base-compat-shlib compat,pic,rump
./usr/lib/64/librumpuser.so.0 base-compat-shlib compat,pic,rump
./usr/lib/64/librumpuser.so.0.0 base-compat-shlib compat,pic,rump
./usr/lib/64/librumpuser.so.0.1 base-compat-shlib compat,pic,rump
./usr/lib/64/librumpvfs.so.0 base-compat-shlib compat,pic,rump
./usr/lib/64/librumpvfs.so.0.0 base-compat-shlib compat,pic,rump
./usr/lib/64/libsaslc.so.0 base-compat-shlib compat,pic,crypto
@ -560,7 +560,7 @@
./usr/lib/o32/librumpnet.so.0 base-compat-shlib compat,pic,rump
./usr/lib/o32/librumpnet.so.0.0 base-compat-shlib compat,pic,rump
./usr/lib/o32/librumpuser.so.0 base-compat-shlib compat,pic,rump
./usr/lib/o32/librumpuser.so.0.0 base-compat-shlib compat,pic,rump
./usr/lib/o32/librumpuser.so.0.1 base-compat-shlib compat,pic,rump
./usr/lib/o32/librumpvfs.so.0 base-compat-shlib compat,pic,rump
./usr/lib/o32/librumpvfs.so.0.0 base-compat-shlib compat,pic,rump
./usr/lib/o32/libsaslc.so.0 base-compat-shlib compat,pic,crypto

View File

@ -1,4 +1,4 @@
# $NetBSD: md.amd64,v 1.191 2013/02/16 21:40:10 jmmv Exp $
# $NetBSD: md.amd64,v 1.192 2013/03/01 18:15:36 pooka Exp $
./dev/lms0 base-obsolete obsolete
./dev/mms0 base-obsolete obsolete
./libexec/ld.elf_so-i386 base-sys-shlib compat,pic
@ -250,7 +250,7 @@
./usr/lib/i386/librumpnet.so.0 base-compat-shlib compat,pic,rump
./usr/lib/i386/librumpnet.so.0.0 base-compat-shlib compat,pic,rump
./usr/lib/i386/librumpuser.so.0 base-compat-shlib compat,pic,rump
./usr/lib/i386/librumpuser.so.0.0 base-compat-shlib compat,pic,rump
./usr/lib/i386/librumpuser.so.0.1 base-compat-shlib compat,pic,rump
./usr/lib/i386/librumphijack.so.0 base-compat-shlib compat,pic,rump
./usr/lib/i386/librumphijack.so.0.0 base-compat-shlib compat,pic,rump
./usr/lib/i386/librumpvfs.so.0 base-compat-shlib compat,pic,rump

View File

@ -1,4 +1,4 @@
# $NetBSD: md.sparc64,v 1.179 2013/02/16 21:40:11 jmmv Exp $
# $NetBSD: md.sparc64,v 1.180 2013/03/01 18:15:36 pooka Exp $
./libexec/ld.elf_so-sparc base-sysutil-bin compat,pic
./sbin/edlabel base-sysutil-root obsolete
./usr/bin/fdformat base-util-bin
@ -246,7 +246,7 @@
./usr/lib/sparc/librumpnet.so.0 base-compat-shlib compat,pic,rump
./usr/lib/sparc/librumpnet.so.0.0 base-compat-shlib compat,pic,rump
./usr/lib/sparc/librumpuser.so.0 base-compat-shlib compat,pic,rump
./usr/lib/sparc/librumpuser.so.0.0 base-compat-shlib compat,pic,rump
./usr/lib/sparc/librumpuser.so.0.1 base-compat-shlib compat,pic,rump
./usr/lib/sparc/librumpvfs.so.0 base-compat-shlib compat,pic,rump
./usr/lib/sparc/librumpvfs.so.0.0 base-compat-shlib compat,pic,rump
./usr/lib/sparc/libsaslc.so.0 base-compat-shlib compat,pic,crypto

View File

@ -1,4 +1,4 @@
# $NetBSD: shl.mi,v 1.651 2013/02/16 21:40:13 jmmv Exp $
# $NetBSD: shl.mi,v 1.652 2013/03/01 18:15:36 pooka Exp $
#
# Note: Don't delete entries from here - mark them as "obsolete" instead,
# unless otherwise stated below.
@ -650,7 +650,7 @@
./usr/lib/librumpnet_virtif.so.0.0 base-rump-shlib rump
./usr/lib/librumpuser.so base-rump-shlib rump
./usr/lib/librumpuser.so.0 base-rump-shlib rump
./usr/lib/librumpuser.so.0.0 base-rump-shlib rump
./usr/lib/librumpuser.so.0.1 base-rump-shlib rump
./usr/lib/librumphijack.so base-rump-shlib rump
./usr/lib/librumphijack.so.0 base-rump-shlib rump
./usr/lib/librumphijack.so.0.0 base-rump-shlib rump

View File

@ -1,4 +1,4 @@
# $NetBSD: mi,v 1.1807 2013/02/27 21:25:06 joerg Exp $
# $NetBSD: mi,v 1.1808 2013/03/01 18:15:37 pooka Exp $
#
# Note: don't delete entries from here - mark them as "obsolete" instead.
#
@ -2317,6 +2317,7 @@
./usr/include/rump/rumpkern_if_pub.h comp-c-include rump
./usr/include/rump/rumpnet_if_pub.h comp-c-include rump
./usr/include/rump/rumpuser.h comp-c-include rump
./usr/include/rump/rumpuser_component.h comp-c-include rump
./usr/include/rump/rumpvfs_if_pub.h comp-c-include rump
./usr/include/rump/rumpvnode_if.h comp-c-include rump
./usr/include/rump/scsitest.h comp-c-include rump

View File

@ -1,4 +1,4 @@
# $NetBSD: ad.mips64eb,v 1.6 2013/02/16 21:40:37 jmmv Exp $
# $NetBSD: ad.mips64eb,v 1.7 2013/03/01 18:15:39 pooka Exp $
./usr/libdata/debug/usr/bin/elf2aout.debug comp-obsolete obsolete
./usr/libdata/debug/usr/bin/elf2ecoff.debug comp-sysutil-debug debug
./usr/libdata/debug/usr/lib/64/i18n/libBIG5.so.5.0.debug comp-i18n-debug debug,compat
@ -139,7 +139,7 @@
./usr/libdata/debug/usr/lib/64/librumpdev.so.0.0.debug comp-rump-debug debug,compat,rump
./usr/libdata/debug/usr/lib/64/librumphijack.so.0.0.debug comp-rump-debug debug,compat,rump
./usr/libdata/debug/usr/lib/64/librumpnet.so.0.0.debug comp-rump-debug debug,compat,rump
./usr/libdata/debug/usr/lib/64/librumpuser.so.0.0.debug comp-rump-debug debug,compat,rump
./usr/libdata/debug/usr/lib/64/librumpuser.so.0.1.debug comp-rump-debug debug,compat,rump
./usr/libdata/debug/usr/lib/64/librumpvfs.so.0.0.debug comp-rump-debug debug,compat,rump
./usr/libdata/debug/usr/lib/64/libsaslc.so.0.0.debug comp-sys-debug crypto,debug,compat
./usr/libdata/debug/usr/lib/64/libskey.so.2.0.debug comp-sys-debug skey,debug,compat
@ -301,7 +301,7 @@
./usr/libdata/debug/usr/lib/o32/librumpdev.so.0.0.debug comp-rump-debug debug,compat,rump
./usr/libdata/debug/usr/lib/o32/librumphijack.so.0.0.debug comp-rump-debug debug,compat,rump
./usr/libdata/debug/usr/lib/o32/librumpnet.so.0.0.debug comp-rump-debug debug,compat,rump
./usr/libdata/debug/usr/lib/o32/librumpuser.so.0.0.debug comp-rump-debug debug,compat,rump
./usr/libdata/debug/usr/lib/o32/librumpuser.so.0.1.debug comp-rump-debug debug,compat,rump
./usr/libdata/debug/usr/lib/o32/librumpvfs.so.0.0.debug comp-rump-debug debug,compat,rump
./usr/libdata/debug/usr/lib/o32/libsaslc.so.0.0.debug comp-sys-debug crypto,debug,compat
./usr/libdata/debug/usr/lib/o32/libskey.so.2.0.debug comp-sys-debug skey,debug,compat

View File

@ -1,4 +1,4 @@
# $NetBSD: ad.mips64el,v 1.7 2013/02/16 21:40:37 jmmv Exp $
# $NetBSD: ad.mips64el,v 1.8 2013/03/01 18:15:39 pooka Exp $
./usr/libdata/debug/usr/bin/elf2aout.debug comp-obsolete obsolete
./usr/libdata/debug/usr/bin/elf2ecoff.debug comp-sysutil-debug debug
./usr/libdata/debug/usr/lib/64/i18n/libBIG5.so.5.0.debug comp-i18n-debug debug,compat
@ -139,7 +139,7 @@
./usr/libdata/debug/usr/lib/64/librumpdev.so.0.0.debug comp-rump-debug debug,compat,rump
./usr/libdata/debug/usr/lib/64/librumphijack.so.0.0.debug comp-rump-debug debug,compat,rump
./usr/libdata/debug/usr/lib/64/librumpnet.so.0.0.debug comp-rump-debug debug,compat,rump
./usr/libdata/debug/usr/lib/64/librumpuser.so.0.0.debug comp-rump-debug debug,compat,rump
./usr/libdata/debug/usr/lib/64/librumpuser.so.0.1.debug comp-rump-debug debug,compat,rump
./usr/libdata/debug/usr/lib/64/librumpvfs.so.0.0.debug comp-rump-debug debug,compat,rump
./usr/libdata/debug/usr/lib/64/libsaslc.so.0.0.debug comp-sys-debug crypto,debug,compat
./usr/libdata/debug/usr/lib/64/libskey.so.2.0.debug comp-sys-debug skey,debug,compat
@ -301,7 +301,7 @@
./usr/libdata/debug/usr/lib/o32/librumpdev.so.0.0.debug comp-rump-debug debug,compat,rump
./usr/libdata/debug/usr/lib/o32/librumphijack.so.0.0.debug comp-rump-debug debug,compat,rump
./usr/libdata/debug/usr/lib/o32/librumpnet.so.0.0.debug comp-rump-debug debug,compat,rump
./usr/libdata/debug/usr/lib/o32/librumpuser.so.0.0.debug comp-rump-debug debug,compat,rump
./usr/libdata/debug/usr/lib/o32/librumpuser.so.0.1.debug comp-rump-debug debug,compat,rump
./usr/libdata/debug/usr/lib/o32/librumpvfs.so.0.0.debug comp-rump-debug debug,compat,rump
./usr/libdata/debug/usr/lib/o32/libsaslc.so.0.0.debug comp-sys-debug crypto,debug,compat
./usr/libdata/debug/usr/lib/o32/libskey.so.2.0.debug comp-sys-debug skey,debug,compat

View File

@ -1,4 +1,4 @@
# $NetBSD: md.amd64,v 1.7 2013/02/16 21:40:38 jmmv Exp $
# $NetBSD: md.amd64,v 1.8 2013/03/01 18:15:39 pooka Exp $
./usr/libdata/debug/usr/bin/fdformat.debug comp-util-debug debug
./usr/libdata/debug/usr/bin/iasl.debug comp-util-debug debug
./usr/libdata/debug/usr/lib/i386/i18n/libBIG5.so.5.0.debug comp-i18n-shlib compat,pic,debug
@ -133,7 +133,7 @@
./usr/libdata/debug/usr/lib/i386/librumpdev.so.0.0.debug comp-compat-shlib compat,pic,debug,rump
./usr/libdata/debug/usr/lib/i386/librumphijack.so.0.0.debug comp-compat-shlib compat,pic,debug,rump
./usr/libdata/debug/usr/lib/i386/librumpnet.so.0.0.debug comp-compat-shlib compat,pic,debug,rump
./usr/libdata/debug/usr/lib/i386/librumpuser.so.0.0.debug comp-compat-shlib compat,pic,debug,rump
./usr/libdata/debug/usr/lib/i386/librumpuser.so.0.1.debug comp-compat-shlib compat,pic,debug,rump
./usr/libdata/debug/usr/lib/i386/librumpvfs.so.0.0.debug comp-compat-shlib compat,pic,debug,rump
./usr/libdata/debug/usr/lib/i386/libsaslc.so.0.0.debug comp-compat-shlib compat,pic,crypto,debug
./usr/libdata/debug/usr/lib/i386/libskey.so.2.0.debug comp-compat-shlib compat,pic,skey,debug

View File

@ -1,4 +1,4 @@
# $NetBSD: md.sparc64,v 1.7 2013/02/16 21:40:38 jmmv Exp $
# $NetBSD: md.sparc64,v 1.8 2013/03/01 18:15:39 pooka Exp $
./usr/libdata/debug/sbin/edlabel.debug comp-sysutil-debug obsolete
./usr/libdata/debug/usr/bin/fdformat.debug comp-util-debug debug
./usr/libdata/debug/usr/lib/sparc/i18n/libBIG5.so.5.0.debug comp-i18n-shlib compat,pic,debug
@ -129,7 +129,7 @@
./usr/libdata/debug/usr/lib/sparc/librumpdev.so.0.0.debug comp-compat-shlib compat,pic,debug,rump
./usr/libdata/debug/usr/lib/sparc/librumphijack.so.0.0.debug comp-compat-shlib compat,pic,debug,rump
./usr/libdata/debug/usr/lib/sparc/librumpnet.so.0.0.debug comp-compat-shlib compat,pic,debug,rump
./usr/libdata/debug/usr/lib/sparc/librumpuser.so.0.0.debug comp-compat-shlib compat,pic,debug,rump
./usr/libdata/debug/usr/lib/sparc/librumpuser.so.0.1.debug comp-compat-shlib compat,pic,debug,rump
./usr/libdata/debug/usr/lib/sparc/librumpvfs.so.0.0.debug comp-compat-shlib compat,pic,debug,rump
./usr/libdata/debug/usr/lib/sparc/libsaslc.so.0.0.debug comp-compat-shlib compat,pic,debug,crypto
./usr/libdata/debug/usr/lib/sparc/libskey.so.2.0.debug comp-compat-shlib compat,pic,debug,skey

View File

@ -1,4 +1,4 @@
# $NetBSD: shl.mi,v 1.8 2013/02/16 21:40:39 jmmv Exp $
# $NetBSD: shl.mi,v 1.9 2013/03/01 18:15:39 pooka Exp $
./usr/libdata/debug/usr/lib/i18n/libBIG5.so.5.0.debug comp-i18n-debug debug
./usr/libdata/debug/usr/lib/i18n/libDECHanyu.so.5.0.debug comp-i18n-debug debug
./usr/libdata/debug/usr/lib/i18n/libEUC.so.5.0.debug comp-i18n-debug debug
@ -195,7 +195,7 @@
./usr/libdata/debug/usr/lib/librumpnet_shmif.so.0.0.debug comp-rump-debug debug,rump
./usr/libdata/debug/usr/lib/librumpnet_sockin.so.0.0.debug comp-rump-debug debug,rump
./usr/libdata/debug/usr/lib/librumpnet_virtif.so.0.0.debug comp-rump-debug debug,rump
./usr/libdata/debug/usr/lib/librumpuser.so.0.0.debug comp-rump-debug debug,rump
./usr/libdata/debug/usr/lib/librumpuser.so.0.1.debug comp-rump-debug debug,rump
./usr/libdata/debug/usr/lib/librumpvfs.so.0.0.debug comp-rump-debug debug,rump
./usr/libdata/debug/usr/lib/librumpvfs_fifofs.so.0.0.debug comp-rump-debug debug,rump
./usr/libdata/debug/usr/lib/librumpvfs_layerfs.so.0.0.debug comp-rump-debug debug,rump

View File

@ -1,4 +1,4 @@
# $NetBSD: Makefile,v 1.7 2013/03/01 13:52:31 pooka Exp $
# $NetBSD: Makefile,v 1.8 2013/03/01 18:15:36 pooka Exp $
#
WARNS?= 5
@ -14,9 +14,10 @@ CPPFLAGS+= -DLIBRUMPUSER
SRCS= rumpuser.c rumpuser_net.c
SRCS+= rumpuser_pth.c
SRCS+= rumpuser_dl.c rumpuser_sp.c rumpuser_daemonize.c
SRCS+= rumpuser_component.c
INCSDIR= /usr/include/rump
INCS= rumpuser.h
INCS= rumpuser.h rumpuser_component.h
MAN= rumpuser.3

View File

@ -0,0 +1,60 @@
/* $NetBSD: rumpuser_component.c,v 1.1 2013/03/01 18:15:36 pooka Exp $ */
/*
* Copyright (c) 2013 Antti Kantee. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include "rumpuser_port.h"
#if !defined(lint)
__RCSID("$NetBSD: rumpuser_component.c,v 1.1 2013/03/01 18:15:36 pooka Exp $");
#endif /* !lint */
/*
* These interfaces affect the shlib major/minor; they can be called from
* any program when applicable. The rest of the interfaces provided
* by rumpuser are part of the rump kernel/hypervisor contract and
* are versioned by RUMPUSER_VERSION.
*/
#include <rump/rumpuser_component.h>
#include "rumpuser_int.h"
void *
rumpuser_component_unschedule(void)
{
int nlocks;
rumpuser__kunlock(0, &nlocks, NULL);
return (void *)(intptr_t)nlocks;
}
void
rumpuser_component_schedule(void *cookie)
{
int nlocks = (int)(intptr_t)cookie;
rumpuser__klock(nlocks, NULL);
}

View File

@ -0,0 +1,34 @@
/* $NetBSD: rumpuser_component.h,v 1.1 2013/03/01 18:15:36 pooka Exp $ */
/*
* Copyright (c) 2013 Antti Kantee. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#ifndef _RUMP_RUMPUSER_COMPONENT_H_
#define _RUMP_RUMPUSER_COMPONENT_H_
void * rumpuser_component_unschedule(void);
void rumpuser_component_schedule(void *);
#endif /* _RUMP_RUMPUSER_COMPONENT_H_ */

View File

@ -1,4 +1,6 @@
# $NetBSD: shlib_version,v 1.1 2010/02/26 18:54:20 pooka Exp $
# $NetBSD: shlib_version,v 1.2 2013/03/01 18:15:36 pooka Exp $
#
# see comment in rumpuser_component.c
major=0
minor=0
minor=1