rump: reduce size of rump

* integrate rump's contrib code into Genode's build system and build what is
  required by Genode, only
* checkout needed NetBSD sources directly from CVS

fixes #2589
This commit is contained in:
Sebastian Sumpf 2017-11-14 16:03:16 +01:00 committed by Christian Helmuth
parent 15a5db61c8
commit 38abfc79f5
38 changed files with 1647 additions and 1464 deletions

View File

@ -1 +1,14 @@
INC_DIR += $(LIBGCC_INC_DIR) $(BUILD_BASE_DIR)/var/libcache/rump/include
RUMP_PORT_DIR := $(call select_from_ports,dde_rump)/src/lib/dde_rump
RUMP_BASE := $(BUILD_BASE_DIR)/var/libcache/rump
ifeq ($(filter-out $(SPECS),arm),)
# rump include shadows some parts of 'machine' on ARM only,
# Therefore, it must be included before RUMP_BASE/include/machine
INC_DIR := $(RUMP_PORT_DIR)/src/sys/rump/include $(INC_DIR)
endif
INC_DIR += $(LIBGCC_INC_DIR) \
$(RUMP_PORT_DIR)/src/sys \
$(RUMP_PORT_DIR)/src/sys/rump/include \
$(RUMP_PORT_DIR)/src/sys/sys \
$(RUMP_BASE)/include

View File

@ -1,23 +1,261 @@
#
# \brief Basic definitions for all rump libraries
# \author Sebastian Sumpf
# \date 2013-12-12
#
include $(REP_DIR)/lib/mk/rump_common.inc
RUMP_CONTRIB_DIR := $(call select_from_ports,dde_rump)/src/lib/dde_rump
RUMP_BASE = $(BUILD_BASE_DIR)/var/libcache/rump
RUMP_LIB = $(RUMP_BASE)/lib
SHARED_LIB = yes
LIBS += rump_include
CC_OPT += -DLIBRUMPUSER
SRC_CC = dummies.cc hypercall.cc bootstrap.cc io.cc sync.cc env.cc
CC_C_OPT += -DHAVE_PROP_DICTIONARY_T
SRC_C = __main.c \
SRC_NOLINK += accessors.c \
bswap16.c \
bswap32.c \
cdbr.c \
clock_subr.c \
cons.c \
consttime_memequal.c \
cprng_fast.c \
cpuset.c \
crc32.c \
devsw.c \
emul.c \
etfs_wrap.c \
explicit_memset.c \
ffs.c \
getfstypename.c \
heapsort.c \
hyperentropy.c \
imax.c \
imin.c \
inet_addr.c \
init_sysctl_base.c \
intoa.c \
intr.c \
kern_assert.c \
kern_auth.c \
kern_cfglock.c \
kern_descrip.c \
kern_event.c \
kern_hook.c \
kern_ksyms.c \
kern_ktrace.c \
kern_malloc.c \
kern_module.c \
kern_mutex_obj.c \
kern_ntptime.c \
kern_proc.c \
kern_prot.c \
kern_rate.c \
kern_resource.c \
kern_rndpool.c \
kern_rndq.c \
kern_rndsink.c \
kern_select_50.c \
kern_stub.c \
kern_syscall.c \
kern_sysctl.c \
kern_tc.c \
kern_time_50.c \
kern_time.c \
kern_timeout.c \
kern_uidinfo.c \
kern_xxx.c \
klock.c \
kobj_machdep.c \
kobj_rename.c \
lmax.c \
lmin.c \
locks_up.c \
ltsleep.c \
lwproc.c \
max.c \
mcount.c \
md4c.c \
md5c.c \
memchr.c \
memcmp.c \
memcpy.c \
memmove.c \
memset.c \
mertwist.c \
min.c \
mi_vector_hash.c \
murmurhash.c \
nist_ctr_drbg.c \
param.c \
pmatch.c \
popcount32.c \
popcount64.c \
ppath_extant.c \
ppath_kmem_alloc.c \
ppath.c \
proc_compare.c \
prop_array.c \
prop_array_util.c \
prop_bool.c \
prop_data.c \
prop_dictionary.c \
prop_dictionary_util.c \
prop_ingest.c \
prop_kern.c \
prop_number.c \
prop_object.c \
prop_stack.c \
prop_string.c \
ptree.c \
random.c \
rb.c \
rijndael-alg-fst.c \
rijndael-api-fst.c \
rijndael.c \
rmd160.c \
rngtest.c \
rumpcopy.c \
rumpkern_if_wrappers.c \
rump.c \
rumpkern_syscalls.c \
rump_syscalls.c \
scanc.c \
scheduler.c \
secmodel.c \
secmodel_suser.c \
sha1.c \
sha2.c \
signals.c \
skpc.c \
sleepq.c \
snprintb.c \
strcasecmp.c \
strcat.c \
strchr.c \
strcmp.c \
strcpy.c \
strcspn.c \
strlcat.c \
strlcpy.c \
strlen.c \
strncasecmp.c \
strncat.c \
strncmp.c \
strncpy.c \
strnlen.c \
strpbrk.c \
strrchr.c \
strsep.c \
strspn.c \
strstr.c \
strtoimax.c \
strtoll.c \
strtoull.c \
strtoul.c \
strtoumax.c \
subr_callback.c \
subr_copy.c \
subr_cprng.c \
subr_device.c \
subr_devsw.c \
subr_evcnt.c \
subr_extent.c \
subr_hash.c \
subr_humanize.c \
subr_iostat.c \
subr_kcpuset.c \
subr_kmem.c \
subr_kobj.c \
subr_log.c \
subr_lwp_specificdata.c \
subr_once.c \
subr_pcq.c \
subr_percpu.c \
subr_pool.c \
subr_prf.c \
subr_pserialize.c \
subr_specificdata.c \
subr_time.c \
subr_vmem.c \
subr_workqueue.c \
subr_xcall.c \
syscalls.c \
sys_descrip.c \
sys_generic.c \
sys_module.c \
sys_pipe.c \
sys_select.c \
threads.c \
uipc_sem.c \
ulmax.c \
ulmin.c \
uvm_aobj.c \
uvm_object.c \
uvm_readahead.c \
uvm_swapstub.c \
vers.c \
vm.c \
vnode_if.c \
xlat_mbr_fstype.c
INC_DIR += $(RUMP_BASE)/include \
$(RUMP_PORT_DIR)/src/lib/libc/include \
$(RUMP_PORT_DIR)/src/sys/rump/librump/rumpkern/opt \
$(RUMP_PORT_DIR)/src/sys \
$(RUMP_PORT_DIR)/src/sys/sys \
$(RUMP_PORT_DIR)/src/sys/rump/include \
$(RUMP_PORT_DIR)/src/sys/rump/librump/rumpdev \
$(RUMP_PORT_DIR)/src/sys/rump/librump/rumpkern \
$(RUMP_PORT_DIR)/src/sys/rump/librump/rumpnet \
$(RUMP_PORT_DIR)/src/sys/rump/librump/rumpvfs \
$(RUMP_PORT_DIR)/src/include \
$(RUMP_PORT_DIR)/src/common/include \
$(RUMP_PORT_DIR)/common/lib/libc/gen
SHARED_LIB = yes
#
# ARCHIVE contains the absolute paths to rump-archive libraries, rump.ld is an
# additional linker script which is required during initialization
# generic
#
LD_OPT += --whole-archive --start-group $(ARCHIVE) --end-group \
--no-whole-archiv
vers.c:
$(VERBOSE_MK)cd $(RUMP_BASE) && /bin/sh $(RUMP_PORT_DIR)/src/sys/conf/newvers.sh -iRUMP_ROAST -n
LD_SCRIPT_SO = $(BASE_DIR)/src/ld/genode_rel.ld \
-T$(REP_DIR)/src/ld/rump.ld
# trigger build
$(SRC_O): vers.c
#
# rmpns_ prefix rules
#
RUMP_LIB_BASE = $(RUMP_BASE)
include $(REP_DIR)/lib/mk/rump_prefix.inc
vpath %.cc $(REP_DIR)/src/lib/rump
vpath %.c $(RUMP_PORT_DIR)/src/sys/rump/librump/rumpkern
vpath %.c $(RUMP_PORT_DIR)/src/sys/conf
vpath %.c $(RUMP_PORT_DIR)/src/sys/crypto/cprng_fast
vpath %.c $(RUMP_PORT_DIR)/src/sys/crypto/nist_ctr_drbg
vpath %.c $(RUMP_PORT_DIR)/src/sys/crypto/rijndael
vpath %.c $(RUMP_PORT_DIR)/src/sys/compat/common
vpath %.c $(RUMP_PORT_DIR)/src/sys/dev
vpath %.c $(RUMP_PORT_DIR)/src/sys/lib/libkern
vpath %.c $(RUMP_PORT_DIR)/src/sys/kern
vpath %.c $(RUMP_PORT_DIR)/src/sys/secmodel
vpath %.c $(RUMP_PORT_DIR)/src/sys/secmodel/suser
vpath %.c $(RUMP_PORT_DIR)/src/sys/uvm
vpath %.c $(RUMP_PORT_DIR)/src/common/lib/libc/cdb
vpath %.c $(RUMP_PORT_DIR)/src/common/lib/libc/gen
vpath %.c $(RUMP_PORT_DIR)/src/common/lib/libc/gmon
vpath %.c $(RUMP_PORT_DIR)/src/common/lib/libc/hash/murmurhash
vpath %.c $(RUMP_PORT_DIR)/src/common/lib/libc/hash/rmd160
vpath %.c $(RUMP_PORT_DIR)/src/common/lib/libc/hash/sha1
vpath %.c $(RUMP_PORT_DIR)/src/common/lib/libc/hash/sha2
vpath %.c $(RUMP_PORT_DIR)/src/common/lib/libc/inet
vpath %.c $(RUMP_PORT_DIR)/src/common/lib/libc/md
vpath %.c $(RUMP_PORT_DIR)/src/common/lib/libc/stdlib
vpath %.c $(RUMP_PORT_DIR)/src/common/lib/libc/string
vpath %.c $(RUMP_PORT_DIR)/src/common/lib/libc/sys
vpath %.c $(RUMP_PORT_DIR)/src/common/lib/libppath
vpath %.c $(RUMP_PORT_DIR)/src/common/lib/libprop
vpath %.c $(RUMP_PORT_DIR)/src/common/lib/libutil
# vi:set ft=make :

View File

@ -1,99 +0,0 @@
include $(REP_DIR)/lib/mk/rump.inc
include $(REP_DIR)/lib/import/import-rump.mk
RUMP_OBJ = $(RUMP_BASE)/obj
RUMP_SRC = $(RUMP_CONTRIB_DIR)/src
RUMP_TOOLS = $(RUMP_BASE)/tools
RMAKE = $(RUMP_TOOLS)/rumpmake
#
# Can be up to 4 for most verbose output
#
VERBOSE_LEVEL ?= 0
#
# Sources
#
SRC_CC = dummies.cc hypercall.cc bootstrap.cc io.cc sync.cc misc.cc env.cc
#
# TARGET to trigger rump build
#
SOURCE = $(addprefix $(REP_DIR)/src/lib/rump/,$(SRC_CC))
#
# Rump build script
#
BUILD_CMD = BUILD_CC=cc BUILD_AR=ar BUILD_NM=nm BUILD_OBJCOPY=objcopy \
AR=$(AR) NM=$(NM) OBJCOPY=$(OBJCOPY) CC_TARGET=$(shell basename $(CC)) \
$(RUMP_CONTRIB_DIR)/buildrump.sh -H -k -V'MAKEVERBOSE=$(VERBOSE_LEVEL)' \
-V'NOGCCERROR=1' $(RUMP_OPT) -V'RUMP_LOCKS_UP=yes' \
-s $(RUMP_SRC) -T $(RUMP_TOOLS) -o $(RUMP_OBJ) -d $(RUMP_BASE) \
-F"DBG=$(CC_OLEVEL) -g"
#
# Linkage
#
ARCHIVE = $(RUMP_LIB)/librump.a
CC_OPT += -DLIBRUMPUSER
INCSDIRS = adosfs altq arpa crypto dev evbarm filecorefs fs i386 isofs miscfs \
msdosfs net net80211 netatalk netbt netinet netinet6 netipsec \
netisdn netkey netmpls netnatm netsmb nfs ntfs ppath prop \
protocols rpc rpcsvc ssp sys ufs uvm x86
#
# Make sure include directory exists
#
$(shell mkdir -p $(RUMP_BASE)/include)
#
# Filter potential ccache call
#
RUMP_CC = $(filter-out ccache, $(CC))
#
# Build nbmake for host platform
#
$(RUMP_TOOLS):
CC=$(RUMP_CC) $(BUILD_CMD) -N -V RUMP_KERNEL_IS_LIBC=1 tools
echo 'CPPFLAGS+=-DMAXPHYS=32768' >> $(RUMP_TOOLS)/mk.conf
echo 'CPPFLAGS+= -fPIC' >> $(RUMP_TOOLS)/mk.conf
#
# Setup install directory
#
$(RUMP_OBJ)/dest.stage: $(RUMP_TOOLS)
CC=$(RUMP_CC) $(BUILD_CMD) setupdest
#
# Build librump
#
$(ARCHIVE): $(RUMP_OBJ)/dest.stage
@echo "Building rump library ... $(ARCHIVE)"
CC=$(RUMP_CC) $(BUILD_CMD) -k build install
#
# Install kernel, libc, and pthread headers
#
$(RUMP_BASE)/include/.prepared: $(ARCHIVE)
@for i in $(INCSDIRS); do \
mkdir -p $(RUMP_BASE)/include/$$i; done
@echo "Installing headers ... (this may take a while)"
@cd $(RUMP_SRC)/sys; $(RMAKE) -k obj >/dev/null 2>&1
@cd $(RUMP_SRC)/sys; $(RMAKE) -k includes >/dev/null 2>&1
@cd $(RUMP_SRC)/include; $(RMAKE) -k includes > /dev/null 2>&1
@cd $(RUMP_CONTRIB_DIR)/nblibs/lib/libc; $(RMAKE) includes
@cd $(RUMP_CONTRIB_DIR)/nblibs/lib/libpthread; $(RMAKE) includes >/dev/null 2>&1
@touch $(RUMP_BASE)/include/.prepared
#
# Trigger rump build
#
$(SOURCE): $(RUMP_BASE)/include/.prepared
vpath %.cc $(REP_DIR)/src/lib/rump
# vi:set ft=make :

View File

@ -1,12 +0,0 @@
include $(REP_DIR)/lib/mk/rump.inc
LIBS += rump
RUMP_LIBS = librumpdev.a \
librumpdev_cgd.a \
librumpdev_disk.a \
librumpdev_rnd.a \
librumpkern_crypto.a \
librumpvfs.a
ARCHIVE += $(addprefix $(RUMP_LIB)/,$(RUMP_LIBS))

View File

@ -0,0 +1,26 @@
RUMP_PORT_DIR := $(call select_from_ports,dde_rump)/src/lib/dde_rump
RUMP_BASE := $(BUILD_BASE_DIR)/var/libcache/rump
CC_C_OPT += -D__NetBSD__ -D'CTASSERT(x)=' -DMAXPHYS=32768 -D_RUMP_NATIVE_ABI \
-DMAXUSERS=32 -DCOMPAT_50=1 -DCOMPAT_60=1 -DDIAGNOSTIC -DKTRACE \
-DRUMP_KERNEL_IS_LIBC -D_RUMPKERNEL -D_KERNEL -DMULTIPROCESSOR \
-D_MODULE -DMODULAR -DRUMP_USE_CTOR
#
# silence contrib code
#
CC_C_OPT += -fno-builtin-printf -fno-builtin-vprintf -fno-builtin-log \
-fno-builtin-putchar
CC_C_OPT += -Wno-pointer-sign -Wno-unused-but-set-variable \
-Wno-unused-variable -Wno-format-zero-length \
-Wno-nonnull-compare -Wno-misleading-indentation \
-Wno-format -Wno-incompatible-pointer-types
#
# rump.ld is an additional linker script which is required during
# initialization
#
LD_SCRIPT_SO = $(BASE_DIR)/src/ld/genode_rel.ld \
-T$(REP_DIR)/src/ld/rump.ld
# vi:set ft=make :

View File

@ -1,19 +1,119 @@
include $(REP_DIR)/lib/mk/rump_common.inc
include $(REP_DIR)/lib/mk/rump.inc
LIBS += rump rump_tools
SHARED_LIB = yes
RUMP_FS_BASE = $(BUILD_BASE_DIR)/var/libcache/rump_fs
NBCONFIG = $(BUILD_BASE_DIR)/var/libcache/rump_tools/bin/nbconfig
LIBS += rump
#
# librumpdev.a
#
SRC_NOLINK = autoconf.c kern_pmf.c rump_dev.c subr_autoconf.c
RUMP_LIBS = librumpdev.a \
librumpdev_disk.a \
librumpkern_crypto.a \
librumpvfs.a \
librumpfs_cd9660.a \
librumpfs_ext2fs.a \
librumpfs_ffs.a \
librumpfs_msdos.a \
librumpfs_ntfs.a \
librumpfs_udf.a
INC_DIR += $(RUMP_BASE)/include \
$(RUMP_FS_BASE) \
$(RUMP_PORT_DIR)/src/common/include \
$(RUMP_PORT_DIR)/src/sys \
$(RUMP_PORT_DIR)/src/sys/rump/librump/rumpkern \
$(RUMP_PORT_DIR)/src/sys/rump/librump/rumpdev/opt \
$(RUMP_PORT_DIR)/src/sys/rump/include \
$(RUMP_PORT_DIR)/src/sys/sys
ARCHIVE += $(addprefix $(RUMP_LIB)/,$(RUMP_LIBS))
ioconf.c:
$(VERBOSE)$(NBCONFIG) -b $(RUMP_FS_BASE) -s $(RUMP_PORT_DIR)/src/sys \
$(RUMP_PORT_DIR)/src/sys/rump/librump/rumpdev/MAINBUS.ioconf
autoconf.o: ioconf.c
vpath %.c $(RUMP_PORT_DIR)/src/sys/kern
vpath %.c $(RUMP_PORT_DIR)/src/sys/rump/librump/rumpdev
#
# librumpdev_disk.a
#
SRC_NOLINK += dk.c dksubr.c subr_disk.c subr_disk_mbr.c subr_disk_open.c
vpath %.c $(RUMP_PORT_DIR)/src/sys/dev
vpath %.c $(RUMP_PORT_DIR)/src/sys/dev/dkwedge
#
# librumpvfs.a
#
SRC_NOLINK += bufq_disksort.c compat.c devnull.c genfs_vfsops.c \
kern_physio.c rumpfs.c rumpvnode_if.c sync_subr.c \
vfs_cache.c vfs_hooks.c vfs_mount.c vfs_syscalls.c vfs_wapbl.c \
bufq_fcfs.c dead_vfsops.c firmload.c genfs_vnops.c \
mfs_miniroot.c rumpvfs_if_wrappers.c spec_vnops.c sync_vnops.c vfs_cwd.c \
vfs_init.c vfs_quotactl.c vfs_trans.c vfs_xattr.c \
bufq_priocscan.c dead_vnops.c genfs_io.c kern_ktrace_vfs.c \
quota1_subr.c rump_vfs.c subr_bufq.c uvm_vnode.c \
vfs_dirhash.c vfs_lockf.c vfs_subr.c vfs_vnode.c vm_vfs.c \
bufq_readprio.c devnodes.c genfs_rename.c kern_module_vfs.c rumpblk.c \
rumpvfs_syscalls.c subr_kobj_vfs.c vfs_bio.c vfs_getcwd.c \
vfs_lookup.c vfs_syscalls_50.c vfs_vnops.c
INC_DIR += $(RUMP_PORT_DIR)/src/sys/rump/librump/rumpkern/opt
vpath %.c $(RUMP_PORT_DIR)/src/sys/compat/common
vpath %.c $(RUMP_PORT_DIR)/src/sys/rump/librump/rumpvfs
vpath %.c $(RUMP_PORT_DIR)/src/sys/miscfs/deadfs
vpath %.c $(RUMP_PORT_DIR)/src/sys/miscfs/genfs
vpath %.c $(RUMP_PORT_DIR)/src/sys/miscfs/specfs
vpath %.c $(RUMP_PORT_DIR)/src/sys/miscfs/syncfs
vpath %.c $(RUMP_PORT_DIR)/src/sys/ufs/mfs
vpath %.c $(RUMP_PORT_DIR)/src/sys/ufs/ufs
vpath %.c $(RUMP_PORT_DIR)/src/sys/uvm
#
# librump_ufs.a
#
SRC_NOLINK += ufs_bmap.c ufs_inode.c ufs_lookup.c ufs_vfsops.c ufs_vnops.c \
ufs_extattr.c ufs_quota.c ufs_wapbl.c quota2_subr.c ufs_dirhash.c \
ufs_quota2.c ufs_rename.c
#
# librump_ffs.a
#
SRC_NOLINK += ffs_alloc.c ffs_balloc.c ffs_inode.c ffs_snapshot.c ffs_tables.c ffs_vnops.c \
ffs_appleufs.c ffs_bswap.c ffs_quota2.c ffs_subr.c ffs_vfsops.c ffs_wapbl.c \
vpath %.c $(RUMP_PORT_DIR)/src/sys/ufs/ffs
#
# librumpfs_ext2fs.a
#
SRC_NOLINK += ext2fs_alloc.c ext2fs_balloc.c ext2fs_bmap.c ext2fs_bswap.c ext2fs_inode.c \
ext2fs_lookup.c ext2fs_readwrite.c ext2fs_rename.c ext2fs_subr.c \
ext2fs_vfsops.c ext2fs_vnops.c
vpath %.c $(RUMP_PORT_DIR)/src/sys/ufs/ext2fs
#
# librumpfs_cd9660.a
#
SRC_NOLINK += cd9660_bmap.c cd9660_lookup.c cd9660_node.c cd9660_rrip.c cd9660_util.c \
cd9660_vfsops.c cd9660_vnops.c
vpath %.c $(RUMP_PORT_DIR)/src/sys/fs/cd9660
#
# librumpfs_msdos.a
#
SRC_NOLINK += msdosfs_conv.c msdosfs_denode.c msdosfs_fat.c msdosfs_lookup.c \
msdosfs_vfsops.c msdosfs_vnops.c
vpath %.c $(RUMP_PORT_DIR)/src/sys/fs/msdosfs
#
# rmpns_ prefix rules
#
RUMP_LIB_BASE = $(RUMP_FS_BASE)
include $(REP_DIR)/lib/mk/rump_prefix.inc

View File

@ -0,0 +1,20 @@
ifeq ($(called_from_lib_mk),yes)
include $(REP_DIR)/lib/mk/rump_common.inc
$(RUMP_BASE):
mkdir -p $@
$(RUMP_BASE)/include/machine: $(RUMP_BASE)
$(VERBOSE_MK)mkdir -p $(RUMP_BASE)/include
$(VERBOSE_MK)for arch in $(INC_ARCH); do \
ln -sf $(RUMP_PORT_DIR)/src/sys/arch/$$arch/include $(RUMP_BASE)/include/$$arch ; done
$(VERBOSE_MK)touch $(RUMP_BASE)/include/pthread_types.h
$(VERBOSE_MK)ln -sf $(INC_MACHINE) $(RUMP_BASE)/include/machine
all: $(RUMP_BASE)/include/machine
endif
# vi:set ft=make :

View File

@ -0,0 +1,20 @@
# We prefix any global symbol in object files from SRC_NOLINK with 'rmpns_',
# for this we add a 'rmpns_<source file>.o' to 'SRC_O' and perform a symbol
# prefixing using an AWK script and object copy below which in turn creates the
# prefixed object file. The rpmns files are linked into the library.
SRC_NOLINK_OBJ = $(filter %.o,$(SRC_NOLINK:%.c=%.o) $(SRC_NOLINK:%.S=%.o))
OBJ_PREFIX = $(addprefix rmpns_,$(SRC_NOLINK_OBJ))
SRC_O += $(OBJ_PREFIX)
PREFIX_AWK = '$$NF!~/^(rump|RUMP|__|_GLOBAL_OFFSET_TABLE)/ {s=$$NF;sub(/^/, "&rumpns_", s); print $$NF, s}'
$(OBJ_PREFIX): $(SRC_NOLINK_OBJ) $(SRC_NOLINK)
$(VERBOSE_MK)$(CUSTOM_NM) -go $(RUMP_LIB_BASE)/$(subst rmpns_,,$@) | awk $(PREFIX_AWK) \
> $(RUMP_LIB_BASE)/_$@
$(VERBOSE_MK)$(CUSTOM_OBJCOPY) --preserve-dates --redefine-syms $(RUMP_LIB_BASE)/_$@ \
$(RUMP_LIB_BASE)/$(subst rmpns_,,$@) $(RUMP_LIB_BASE)/$@
$(VERBOSE_MK)rm $(RUMP_LIB_BASE)/_$@
# vi:set ft=make :

View File

@ -0,0 +1,98 @@
#
# Host tools required to build rump
#
include $(REP_DIR)/lib/mk/rump_common.inc
HOST_CC ?= gcc
HOST_YACC ?= bison
HOST_LEX ?= flex
COMPAT_DEFS = -include $(RUMP_PORT_DIR)/src/tools/compat/compat_defs.h
#
# nbconfig
#
RUMP_TOOL = $(BUILD_BASE_DIR)/var/libcache/rump_tools
HOST_TARGET = $(RUMP_TOOL)/bin/nbconfig
HOST_SRC_C = files.c \
hash.c \
lint.c \
main.c \
mkdevsw.c \
mkheaders.c \
mkioconf.c \
mkmakefile.c \
mkswap.c \
pack.c \
sem.c \
util.c \
gram.c \
lex.yy.c \
efun.c \
strlcat.c \
strlcpy.c \
unvis.c \
vis.c \
crc.c
HOST_TOOLS += $(HOST_TARGET)
HOST_D_OPT = $(addprefix -D,HAVE_DIRFD=1 \
HAVE_FLOCK=1 \
HAVE_SOCKLEN_T=1 \
HAVE_INTTYPES_H=1 \
HAVE_DECL_HTOBE16=1 \
HAVE_DECL_HTOBE32=1 \
HAVE_DECL_HTOBE64=1 \
HAVE_DECL_HTOLE16=1 \
HAVE_DECL_HTOLE32=1 \
HAVE_DECL_HTOLE64=1 \
HAVE_DECL_BE16TOH=1 \
HAVE_DECL_BE32TOH=1 \
HAVE_DECL_BE64TOH=1 \
HAVE_DECL_LE16TOH=1 \
HAVE_DECL_LE32TOH=1 \
HAVE_DECL_LE64TOH=1 \
HAVE_NBTOOL_CONFIG_H=1 \
HAVE_ISBLANK=1 \
MAKE_BOOTSTRAP)
HOST_INC_DIR = $(addprefix -I,$(RUMP_TOOL) \
$(RUMP_PORT_DIR)/src/usr.bin/cksum \
$(RUMP_PORT_DIR)/src/tools/compat \
$(RUMP_PORT_DIR)/src/usr.bin/config)
HOST_CC_OPT = $(COMPAT_DEFS) $(HOST_D_OPT) $(HOST_INC_DIR)
HOST_OBJ = $(HOST_SRC_C:%.c=$(RUMP_TOOL)/%.o)
$(RUMP_TOOL)/util.h:
$(VERBOSE_MK)touch $@
$(RUMP_TOOL)/nbtool_config.h: $(RUMP_TOOL)/util.h
$(VERBOSE_MK)touch $@
$(RUMP_TOOL)/gram.c: $(RUMP_TOOL)/nbtool_config.h
$(VERBOSE)$(HOST_YACC) -d -o $@ $(RUMP_PORT_DIR)/src/usr.bin/config/gram.y
$(RUMP_TOOL)/lex.yy.c: $(RUMP_TOOL)/gram.c
$(VERBOSE)$(HOST_LEX) -o $@ $(RUMP_PORT_DIR)/src/usr.bin/config/scan.l
$(HOST_OBJ) : $(RUMP_TOOL)/lex.yy.c
$(HOST_TARGET): $(HOST_OBJ)
$(VERBOSE_MK)mkdir -p $(RUMP_TOOL)/bin
$(VERBOSE)$(HOST_CC) -lrt -lz -o $@ $(HOST_OBJ)
$(RUMP_TOOL)/%.o: %.c
$(VERBOSE)$(HOST_CC) $(HOST_CC_OPT) -o $@ -c $<
vpath %.c $(RUMP_PORT_DIR)/src/common/lib/libc/string
vpath %.c $(RUMP_PORT_DIR)/src/lib/libutil
vpath %.c $(RUMP_PORT_DIR)/src/lib/libc/gen
vpath %.c $(RUMP_PORT_DIR)/src/usr.bin/config
vpath %.c $(RUMP_PORT_DIR)/src/usr.bin/cksum
vpath %.c $(RUMP_TOOL)

View File

@ -1,5 +1,18 @@
#
# ARM specific
#
SRC_NOLINK += atomic_inc_32.S atomic_swap.S atomic_add_32.S \
atomic_or_32.S atomic_dec_32.S atomic_and_32.S \
atomic_cas_32.S membar_ops.S \
bswap64.c
RUMP_OPT =
REQUIRES = arm_v7
SRC_NOLINK += rump_generic_cpu.c rump_generic_pmap.c
include $(REP_DIR)/lib/mk/rump_base.inc
INC_DIR += $(RUMP_PORT_DIR)/src/sys/rump/include
include $(REP_DIR)/lib/mk/rump.inc
vpath %.S $(RUMP_PORT_DIR)/src/common/lib/libc/arch/arm/atomic
vpath %.S $(RUMP_PORT_DIR)/src/common/lib/libc/gen
vpath %.c $(RUMP_PORT_DIR)/src/sys/arch/arm/arm32
vpath %.c $(RUMP_PORT_DIR)/src/sys/rump/librump/rumpkern/arch/generic

View File

@ -0,0 +1,4 @@
INC_MACHINE = $(RUMP_PORT_DIR)/src/sys/arch/evbarm/include
INC_ARCH = arm
include $(REP_DIR)/lib/mk/rump_include.inc

View File

@ -1,4 +1,18 @@
#
# x86 specific
#
SRC_NOLINK += atomic.S bswap64.c
RUMP_OPT = -32
SRC_NOLINK += rump_x86_cpu_counter.c \
rump_x86_cpu.c \
rump_x86_pmap.c \
rump_x86_spinlock.c \
rump_x86_spl.c
include $(REP_DIR)/lib/mk/rump_base.inc
include $(REP_DIR)/lib/mk/rump.inc
vpath %.S $(RUMP_PORT_DIR)/src/common/lib/libc/arch/i386/atomic
vpath %.S $(RUMP_PORT_DIR)/src/common/lib/libc/gen
vpath %.c $(RUMP_PORT_DIR)/src/sys/arch/i386/i386
vpath %.c $(RUMP_PORT_DIR)/src/sys/rump/librump/rumpkern/arch/x86

View File

@ -0,0 +1,5 @@
INC_MACHINE = $(RUMP_PORT_DIR)/src/sys/arch/i386/include
INC_ARCH = i386 x86
include $(REP_DIR)/lib/mk/rump_include.inc

View File

@ -1,4 +1,20 @@
#
# x86 specific
#
SRC_NOLINK += atomic.S byte_swap_2.S byte_swap_4.S byte_swap_8.S
RUMP_OPT =
SRC_NOLINK += rump_x86_cpu_counter.c \
rump_x86_cpu.c \
rump_x86_pmap.c \
rump_x86_spinlock.c \
rump_x86_spl.c
include $(REP_DIR)/lib/mk/rump_base.inc
INC_MACHINE = $(RUMP_PORT_DIR)/src/sys/arch/amd64/include
INC_ARCH = x86
include $(REP_DIR)/lib/mk/rump.inc
vpath %.S $(RUMP_PORT_DIR)/src/common/lib/libc/arch/x86_64/atomic
vpath %.S $(RUMP_PORT_DIR)/src/common/lib/libc/arch/x86_64/gen
vpath %.c $(RUMP_PORT_DIR)/src/sys/arch/amd64/amd64
vpath %.c $(RUMP_PORT_DIR)/src/sys/rump/librump/rumpkern/arch/x86

View File

@ -0,0 +1,5 @@
INC_MACHINE = $(RUMP_PORT_DIR)/src/sys/arch/amd64/include
INC_ARCH = x86
include $(REP_DIR)/lib/mk/rump_include.inc

View File

@ -1,221 +0,0 @@
diff --git a/buildrump.sh b/buildrump.sh
index 9cc5457..620dbf1 100755
--- a/buildrump.sh
+++ b/buildrump.sh
@@ -191,8 +191,8 @@ probear ()
{
# Check for GNU/BSD ar
- if ! ${AR} -V 2>/dev/null | egrep '(GNU|BSD) ar' > /dev/null ; then
- die Need GNU or BSD ar "(`type ${AR}`)"
+ if ! ${TOOLS_AR} -V 2>/dev/null | egrep '(GNU|BSD) ar' > /dev/null ; then
+ die Need GNU or BSD ar "(`type ${TOOLS_AR}`)"
fi
}
@@ -223,7 +223,7 @@ doesitbuild ()
warnflags="-Wmissing-prototypes -Wstrict-prototypes -Wimplicit -Werror"
printf "${theprog}" \
- | ${CC} ${warnflags} ${EXTRA_LDFLAGS} ${EXTRA_CFLAGS} \
+ | ${TOOLS_CC} ${warnflags} ${EXTRA_LDFLAGS} ${EXTRA_CFLAGS} -x c - -o /dev/null $* \
-x c - -o /dev/null $* > /dev/null 2>&1
}
@@ -242,13 +242,7 @@ checkcheckout ()
checkcompiler ()
{
-
- if ! ${KERNONLY}; then
- doesitbuild 'int main(void) {return 0;}\n' \
- ${EXTRA_RUMPUSER} ${EXTRA_RUMPCOMMON}
- [ $? -eq 0 ] || ${TITANMODE} || \
- die 'Probe cannot build a binary'
- fi
+ return
}
probe_rumpuserbits ()
@@ -548,7 +542,8 @@ makemake ()
stage=$2
cmd=$3
- env CFLAGS= HOST_LDFLAGS=-L${OBJDIR} ./build.sh \
+ env CC=${BUILD_CC} AR=${BUILD_AR} NM=${BUILD_NM} OBJCOPY=${BUILD_OBJCOPY} \
+ CFLAGS= BUILD_LDFLAGS=-L${OBJDIR} ./build.sh \
-m ${MACHINE} -u \
-D ${stage} -w ${wrapper} \
-T ${BRTOOLDIR} -j ${JNUM} \
@@ -708,10 +703,27 @@ evaltoolchain ()
rm -f ${OBJDIR}/canrun
fi
+ # check for crossbuild with tools running on host
+ : ${BUILD_CC:=}
+ [ ${BUILD_CC} ] && HYBRIDBUILD=true
+
+ if ${HYBRIDBUILD}; then
+ : ${TOOLS_CC:=${BUILD_CC}}
+ : ${TOOLS_AR:=${BUILD_AR}}
+ : ${TOOLS_NM:=${BUILD_NM}}
+ : ${TOOLS_OBJCOPY:=${BUILD_OBJCOPY}}
+ else
+ : ${TOOLS_CC:=${CC}}
+ : ${TOOLS_AR:=${AR}}
+ : ${TOOLS_NM:=${NM}}
+ : ${TOOLS_OBJCOPY:=${OBJCOPY}}
+ fi
+
+
# Check for variant of compiler.
# XXX: why can't all cc's that are gcc actually tell me
# that they're gcc with cc --version?!?
- ccver=$(${CC} --version)
+ ccver=$(${TOOLS_CC} --version)
if echo ${ccver} | grep -q 'Free Software Foundation'; then
CC_FLAVOR=gcc
elif echo ${ccver} | grep -q clang; then
@@ -721,33 +733,21 @@ evaltoolchain ()
CC_FLAVOR=pcc
PCC='-V HAVE_PCC=1'
else
- die Unsupported \${CC} "(`type ${CC}`)"
+ die Unsupported \${TOOLS_CC} "(`type ${TOOLS_CC}`)"
fi
- # Check the arch we're building for so as to work out the necessary
- # NetBSD machine code we need to use. First try -dumpmachine,
- # and if that works, be happy with it. Not all compilers support
- # it (e.g. older versions of clang), so if that doesn't work,
- # try parsing the output of -v
- if ! CC_TARGET=$(${CC} -dumpmachine 2>/dev/null) ; then
- # first check "${CC} -v" ... just in case it fails, we want a
- # sensible return value instead of it being lost in the pipeline
- # (this is easier than adjusting IFS)
- if ${CC} -v >/dev/null 2>&1 ; then
- # then actually process the output of ${CC} -v
- CC_TARGET=$(LC_ALL=C ${CC} -v 2>&1 \
- | sed -n 's/^Target: //p' )
- [ -z "${CC_TARGET}" ] \
- && die failed to probe target of \"${CC}\"
- else
- # this might be pcc
- ${CC} -v 2>&1 | grep pcc > /dev/null || \
- die \"${CC} -v failed\". Check \"${CC}\"
- CC_TARGET=$(${CC} -v 2>&1 \
- | sed -n -e 's/^pcc.*for //' -e 's/,.*//p' )
- fi
+ MACH_ARCH=$(echo ${CC_TARGET} | sed 's/.*-\(.*\)-.*/\1/' )
+ echo "MACH_ARCH cc ${MACH_ARCH}"
+
+
+ if [ "${MACH_ARCH}" = 'x86' ] ; then
+ CC_TARGET=genode-x86
+ MACH_ARCH=x86_64
+ elif [ "${MACH_ARCH}" = 'arm' ] ; then
+ CC_TARGET=genode-arm
+ else
+ die Unsupported architectur ${MACH_ARCH}
fi
- MACH_ARCH=$(echo ${CC_TARGET} | sed 's/-.*//' )
# Set names of tools we're going to use. try to guess them
# for common scenarios
@@ -767,6 +767,9 @@ evaltoolchain ()
done
case ${CC_TARGET} in
+ "genode")
+ RUMPKERN_UNDEF='-U__FreeBSD__'
+ ;;
*-linux*)
RUMPKERN_UNDEF='-Ulinux -U__linux -U__linux__ -U__gnu_linux__'
cppdefines _BIG_ENDIAN \
@@ -793,10 +796,10 @@ evaltoolchain ()
${TITANMODE} || die ELF required as target object format
fi
- if cppdefines __LP64__; then
- THIRTYTWO=false
- else
+ if ${TARGET_IS_32BIT}; then
THIRTYTWO=true
+ else
+ THIRTYTWO=false
fi
# The compiler cannot do %zd/u warnings if the NetBSD kernel
@@ -857,6 +860,9 @@ evalplatform ()
echo '>> Mach-O object format used by OS X is not yet supported'
target_supported=false
;;
+ genode-*)
+ TARGET=genode
+ ;;
*)
target_supported=false
;;
@@ -867,8 +873,8 @@ evalplatform ()
fi
# does target support __thread. if yes, optimize curlwp
- doesitbuild '__thread int lanka; int main(void) {return lanka;}\n'
- [ $? -eq 0 ] && RUMP_CURLWP=__thread
+# doesitbuild '__thread int lanka; int main(void) {return lanka;}\n'
+# [ $? -eq 0 ] && RUMP_CURLWP=__thread
}
# ARM targets require a few extra checks
@@ -880,8 +886,8 @@ probearm ()
MACHINE="evbearm-el"
MACH_ARCH="arm"
else
- MACHINE="evbearm-eb"
- MACH_ARCH="armeb"
+ MACHINE="evbearm"
+ MACH_ARCH="arm"
fi
TOOLABI="elf-eabi"
@@ -893,6 +899,11 @@ probearm ()
if cppdefines __VFP_FP__; then
MKSOFTFLOAT=no
fi
+
+ EXTRA_CFLAGS='-march=armv7-a'
+ EXTRA_AFLAGS='-march=armv7-a'
+ EXTRA_LDFLAGS='-nostdlib'
+ appendvar EXTRA_CWARNFLAGS -Wno-format
}
# aarch64 requires a few checks
@@ -962,6 +973,9 @@ evalmachine ()
MACHINE="i386"
MACH_ARCH="i486"
TOOLABI="elf"
+ appendvar EXTRA_CFLAGS -m32
+ appendvar EXTRA_LDFLAGS -m32
+ appendvar EXTRA_AFLAGS -m32
else
MACHINE="amd64"
MACH_ARCH="x86_64"
@@ -1044,13 +1058,17 @@ parseargs ()
debugginess=0
KERNONLY=false
NATIVENETBSD=false
+ TARGET_IS_32BIT=false
OBJDIR=./obj
DESTDIR=./rump
SRCDIR=./src
JNUM=4
- while getopts 'd:DhHj:kNo:qrs:T:V:F:' opt; do
+ while getopts '3:d:DhHj:kNo:qrs:T:V:F:' opt; do
case "$opt" in
+ 3)
+ TARGET_IS_32BIT=true
+ ;;
d)
DESTDIR=${OPTARG}
;;

View File

@ -1,26 +0,0 @@
diff --git a/src/sys/arch/arm/include/Makefile.common b/src/sys/arch/arm/include/Makefile.common
index 6d7643a..c91f55c 100644
--- a/src/sys/arch/arm/include/Makefile.common
+++ b/src/sys/arch/arm/include/Makefile.common
@@ -2,7 +2,7 @@
.PATH: ../../arm/include/common
-.if 0
+.if 1
INCS+= ansi.h aout_machdep.h asm.h \
bswap.h \
cdefs.h cpu.h \
diff --git a/src/sys/arch/evbarm/Makefile b/src/sys/arch/evbarm/Makefile
index c4340cb..ec9445b 100644
--- a/src/sys/arch/evbarm/Makefile
+++ b/src/sys/arch/evbarm/Makefile
@@ -3,7 +3,7 @@
# Makefile for evbarm tags file and boot blocks
# Find where ARM source files are for inclusion in tags
-.include <../arm/Makefile.inc>
+#.include <../arm/Makefile.inc>
TEVBARM= ${SYSDIR}/arch/evbarm/tags
SEVBARM= ${SYSDIR}/arch/evbarm/adi_brh/*.[ch]

View File

@ -0,0 +1,12 @@
diff --git a/src/usr.bin/config/gram.y b/src/usr.bin/config/gram.y
index 7e63598..5f9064a 100644
--- a/src/usr.bin/config/gram.y
+++ b/src/usr.bin/config/gram.y
@@ -142,6 +142,7 @@ static struct condexpr *mk_cx_or(struct condexpr *, struct condexpr *);
static void setmachine(const char *, const char *, struct nvlist *, int);
static void check_maxpart(void);
+static void check_version(void);
static struct loclist *present_loclist(struct loclist *ll);
static void app(struct loclist *, struct loclist *);

View File

@ -1,13 +0,0 @@
diff --git a/src/share/mk/bsd.own.mk b/src/share/mk/bsd.own.mk
index 9bdc7c7..518440e 100644
--- a/src/share/mk/bsd.own.mk
+++ b/src/share/mk/bsd.own.mk
@@ -1155,7 +1155,7 @@ INSTPRIV?= ${INSTPRIV.unpriv} -N ${NETBSDSRCDIR}/etc
STRIPFLAG?=
.if ${NEED_OWN_INSTALL_TARGET} != "no"
-INSTALL_DIR?= ${INSTALL} ${INSTPRIV} -d
+INSTALL_DIR = ${INSTALL} ${INSTPRIV} -d
INSTALL_FILE?= ${INSTALL} ${INSTPRIV} ${COPY} ${PRESERVE} ${RENAME}
INSTALL_LINK?= ${INSTALL} ${INSTPRIV} ${HRDLINK} ${RENAME}
INSTALL_SYMLINK?= ${INSTALL} ${INSTPRIV} ${SYMLINK} ${RENAME}

View File

@ -1,13 +0,0 @@
diff --git a/src/share/mk/bsd.lib.mk b/src/share/mk/bsd.lib.mk
index ab658e7..85575bb 100644
--- a/src/share/mk/bsd.lib.mk
+++ b/src/share/mk/bsd.lib.mk
@@ -402,7 +402,7 @@ _LIB_g.a:=${_LIB}_g.a
_LIB_pic.a:=${_LIB}_pic.a
_LIB.ln:=llib-l${LIB}.ln
-.if ${MKPIC} != "no" && defined(SHLIB_FULLVERSION)
+.if ${MKPIC} != "no" && defined(SHLIB_FULLVERSION) && 0
_LIB.so:=${_LIB}.so
_LIB.so.major:=${_LIB}.so.${SHLIB_MAJOR}
_LIB.so.full:=${_LIB}.so.${SHLIB_FULLVERSION}

View File

@ -1 +1 @@
8719ed349bf425eb570d0ee7f16acf980b44adb4
2e7f21f64fa91b723c2679eb3ed90d8c861d6273

View File

@ -1,33 +1,20 @@
LICENSE := BSD
VERSION := git
DOWNLOADS := rump.git nblibs.git
VERSION := cvs
DOWNLOADS := rump.cvs
URL(rump) := https://github.com/rumpkernel/buildrump.sh.git
REV(rump) := fd4bdac4ad6357a36b9a0af6abde02bf3bb42232
DIR(rump) := src/lib/dde_rump
$(call check_tool, cvs)
URL(nblibs) := https://github.com/rumpkernel/src-netbsd.git
REV(nblibs) := b71ee7667ea9904c28b089feadc594a62f406bd5
DIR(nblibs) := src/lib/dde_rump/nblibs
URL(rump) := :pserver:anoncvs@anoncvs.netbsd.org:2401/cvsroot
REV(rump) := "20141216 2100UTC"
DIR(rump) := src/lib/dde_rump
HASH_INPUT += $(REP_DIR)/rump.list
PATCHES := $(shell find $(REP_DIR)/patches/*.patch)
PATCH_OPT := -N -d ${DIR(rump)} -p1
GIT_NETBSD_COMMIT := 0875d49ae93a8101d5321b7a73983daee5c1b581
NETBSD_SRC := src/lib/dde_rump/src
# checkout NetBSD sources
default: checkout_src
checkout_src: $(DOWNLOADS)
@$(MSG_PREFIX)"checkout NetBSD src "
$(VERBOSE)if [ -d "$(NETBSD_SRC)/.git" ]; then cd $(NETBSD_SRC) && git checkout -f; fi
$(VERBOSE)src/lib/dde_rump/checkout.sh git src/lib/dde_rump/src
$(VERBOSE)cd $(NETBSD_SRC) && git reset --hard $(GIT_NETBSD_COMMIT)
$(VERBOSE)ln -sf ../src/common src/lib/dde_rump/nblibs/common
DIRS := include/rump
DIR_CONTENT(include/rump) := src/lib/dde_rump/src/sys/rump/include/rump/*.h
%.cvs:
@echo "CVS checkout rump ..."
$(VERBOSE)cat $(REP_DIR)/rump.list | xargs cvs -d $(URL($*)) -Q -z3 export \
-D $(REV($*)) -d $(DIR($*))
# vi: set ft=make :

View File

@ -1,5 +1,14 @@
LIB_MK := $(addprefix lib/mk/,rump_fs.mk vfs_rump.mk rump.inc rump_base.inc) \
$(foreach SPEC,x86_32 x86_64 arm,lib/mk/spec/$(SPEC)/rump.mk)
LIB_MK := $(addprefix lib/mk/, \
rump_common.inc \
rump_fs.mk \
rump.inc \
rump_include.inc \
rump_prefix.inc \
rump_tools.mk \
vfs_rump.mk) \
$(foreach SPEC,x86_32 x86_64 arm, \
lib/mk/spec/$(SPEC)/rump.mk \
lib/mk/spec/$(SPEC)/rump_include.mk)
PORT_DIR := $(call port_dir,$(REP_DIR)/ports/dde_rump)
@ -9,11 +18,7 @@ MIRROR_FROM_REP_DIR := $(LIB_MK) \
include/rump include/rump_fs \
include/util
MIRROR_FROM_PORT_DIR := $(shell cd $(PORT_DIR); find src/lib/dde_rump -maxdepth 1 -type f; \
for d in src/lib/dde_rump/brlib src/lib/dde_rump/nblibs \
src/lib/dde_rump/src; do \
find $$d -mindepth 1 -maxdepth 1 -not -name .git; \
done)
MIRROR_FROM_PORT_DIR := src/lib/dde_rump/src
content: $(MIRROR_FROM_REP_DIR) $(MIRROR_FROM_PORT_DIR)
@ -26,4 +31,8 @@ $(MIRROR_FROM_PORT_DIR):
content: LICENSE
LICENSE:
cp $(PORT_DIR)/src/lib/dde_rump/$@ $@
( echo "The NetBSD Foundation's (TNF) license is a “2 clause” Berkeley-style"; \
echo "license, which is used for all code contributed to TNF.If you write"; \
echo "code and assign the copyright to TNF, this is the license that will"; \
echo "be used. For the license of a individual file, please refer to the"; \
echo "header information.") > $@

988
repos/dde_rump/rump.list Normal file
View File

@ -0,0 +1,988 @@
src/common/include/ppath/ppath.h
src/common/include/ppath/ppath_impl.h
src/common/include/prop/plistref.h
src/common/include/prop/prop_array.h
src/common/include/prop/prop_bool.h
src/common/include/prop/prop_data.h
src/common/include/prop/prop_dictionary.h
src/common/include/prop/prop_ingest.h
src/common/include/prop/proplib.h
src/common/include/prop/prop_number.h
src/common/include/prop/prop_object.h
src/common/include/prop/prop_string.h
src/common/lib/libc/arch/arm/atomic/atomic_add_32.S
src/common/lib/libc/arch/arm/atomic/atomic_and_32.S
src/common/lib/libc/arch/arm/atomic/atomic_cas_32.S
src/common/lib/libc/arch/arm/atomic/atomic_dec_32.S
src/common/lib/libc/arch/arm/atomic/atomic_inc_32.S
src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h
src/common/lib/libc/arch/arm/atomic/atomic_or_32.S
src/common/lib/libc/arch/arm/atomic/atomic_swap.S
src/common/lib/libc/arch/arm/atomic/membar_ops.S
src/common/lib/libc/arch/i386/atomic/atomic.S
src/common/lib/libc/arch/x86_64/atomic/atomic.S
src/common/lib/libc/arch/x86_64/gen/byte_swap_2.S
src/common/lib/libc/arch/x86_64/gen/byte_swap_4.S
src/common/lib/libc/arch/x86_64/gen/byte_swap_8.S
src/common/lib/libc/cdb/cdbr.c
src/common/lib/libc/gen/bswap16.c
src/common/lib/libc/gen/bswap32.c
src/common/lib/libc/gen/bswap64.c
src/common/lib/libc/gen/ptree.c
src/common/lib/libc/gen/rb.c
src/common/lib/libc/gmon/mcount.c
src/common/lib/libc/hash/murmurhash/murmurhash.c
src/common/lib/libc/hash/rmd160/rmd160.c
src/common/lib/libc/hash/sha1/sha1.c
src/common/lib/libc/hash/sha2/sha2.c
src/common/lib/libc/inet/inet_addr.c
src/common/lib/libc/md/md4c.c
src/common/lib/libc/md/md5c.c
src/common/lib/libc/stdlib/heapsort.c
src/common/lib/libc/stdlib/mi_vector_hash.c
src/common/lib/libc/stdlib/random.c
src/common/lib/libc/stdlib/strtoimax.c
src/common/lib/libc/stdlib/_strtol.h
src/common/lib/libc/stdlib/strtoll.c
src/common/lib/libc/stdlib/strtoul.c
src/common/lib/libc/stdlib/_strtoul.h
src/common/lib/libc/stdlib/strtoull.c
src/common/lib/libc/stdlib/strtoumax.c
src/common/lib/libc/string/bcopy.c
src/common/lib/libc/string/consttime_memequal.c
src/common/lib/libc/string/explicit_memset.c
src/common/lib/libc/string/ffs.c
src/common/lib/libc/string/memchr.c
src/common/lib/libc/string/memcmp.c
src/common/lib/libc/string/memcpy.c
src/common/lib/libc/string/memmove.c
src/common/lib/libc/string/memset.c
src/common/lib/libc/string/popcount32.c
src/common/lib/libc/string/popcount64.c
src/common/lib/libc/string/strcasecmp.c
src/common/lib/libc/string/strcat.c
src/common/lib/libc/string/strchr.c
src/common/lib/libc/string/strcmp.c
src/common/lib/libc/string/strcpy.c
src/common/lib/libc/string/strcspn.c
src/common/lib/libc/string/strlcat.c
src/common/lib/libc/string/strlcpy.c
src/common/lib/libc/string/strlen.c
src/common/lib/libc/string/strncasecmp.c
src/common/lib/libc/string/strncat.c
src/common/lib/libc/string/strncmp.c
src/common/lib/libc/string/strncpy.c
src/common/lib/libc/string/strnlen.c
src/common/lib/libc/string/strpbrk.c
src/common/lib/libc/string/strrchr.c
src/common/lib/libc/string/strsep.c
src/common/lib/libc/string/strspn.c
src/common/lib/libc/string/strstr.c
src/common/lib/libc/sys/cpuset.c
src/common/lib/libppath/ppath.c
src/common/lib/libppath/ppath_extant.c
src/common/lib/libppath/ppath_kmem_alloc.c
src/common/lib/libprop/prop_array.c
src/common/lib/libprop/prop_array_util.c
src/common/lib/libprop/prop_bool.c
src/common/lib/libprop/prop_data.c
src/common/lib/libprop/prop_dictionary.c
src/common/lib/libprop/prop_dictionary_util.c
src/common/lib/libprop/prop_ingest.c
src/common/lib/libprop/prop_kern.c
src/common/lib/libprop/prop_number.c
src/common/lib/libprop/prop_object.c
src/common/lib/libprop/prop_object_impl.h
src/common/lib/libprop/prop_rb_impl.h
src/common/lib/libprop/prop_stack.c
src/common/lib/libprop/prop_stack.h
src/common/lib/libprop/prop_string.c
src/common/lib/libutil/getfstypename.c
src/common/lib/libutil/proc_compare.c
src/common/lib/libutil/snprintb.c
src/include/stdbool.h
src/include/vis.h
src/lib/libc/gen/unvis.c
src/lib/libc/gen/vis.c
src/lib/libutil/efun.c
src/sys/altq/files.altq
src/sys/altq/if_altq.h
src/sys/arch/amd64/amd64/kobj_machdep.c
src/sys/arch/amd64/include/ansi.h
src/sys/arch/amd64/include/asm.h
src/sys/arch/amd64/include/bswap.h
src/sys/arch/amd64/include/bus_defs.h
src/sys/arch/amd64/include/bus_funcs.h
src/sys/arch/amd64/include/byte_swap.h
src/sys/arch/amd64/include/cdefs.h
src/sys/arch/amd64/include/cpu_counter.h
src/sys/arch/amd64/include/cpufunc.h
src/sys/arch/amd64/include/cpu.h
src/sys/arch/amd64/include/disklabel.h
src/sys/arch/amd64/include/elf_machdep.h
src/sys/arch/amd64/include/endian.h
src/sys/arch/amd64/include/endian_machdep.h
src/sys/arch/amd64/include/frame.h
src/sys/arch/amd64/include/frame_regs.h
src/sys/arch/amd64/include/int_const.h
src/sys/arch/amd64/include/int_fmtio.h
src/sys/arch/amd64/include/int_limits.h
src/sys/arch/amd64/include/int_mwgwtypes.h
src/sys/arch/amd64/include/intrdefs.h
src/sys/arch/amd64/include/intr.h
src/sys/arch/amd64/include/int_types.h
src/sys/arch/amd64/include/limits.h
src/sys/arch/amd64/include/lock.h
src/sys/arch/amd64/include/mcontext.h
src/sys/arch/amd64/include/mutex.h
src/sys/arch/amd64/include/param.h
src/sys/arch/amd64/include/pcb.h
src/sys/arch/amd64/include/pic.h
src/sys/arch/amd64/include/pmap.h
src/sys/arch/amd64/include/proc.h
src/sys/arch/amd64/include/psl.h
src/sys/arch/amd64/include/pte.h
src/sys/arch/amd64/include/ptrace.h
src/sys/arch/amd64/include/rwlock.h
src/sys/arch/amd64/include/segments.h
src/sys/arch/amd64/include/signal.h
src/sys/arch/amd64/include/specialreg.h
src/sys/arch/amd64/include/trap.h
src/sys/arch/amd64/include/tss.h
src/sys/arch/amd64/include/types.h
src/sys/arch/amd64/include/vmparam.h
src/sys/arch/amd64/include/wchar_limits.h
src/sys/arch/arm/arm32/kobj_machdep.c
src/sys/arch/arm/include/ansi.h
src/sys/arch/arm/include/arm32/frame.h
src/sys/arch/arm/include/arm32/param.h
src/sys/arch/arm/include/arm32/pte.h
src/sys/arch/arm/include/arm32/types.h
src/sys/arch/arm/include/arm32/vmparam.h
src/sys/arch/arm/include/armreg.h
src/sys/arch/arm/include/asm.h
src/sys/arch/arm/include/bswap.h
src/sys/arch/arm/include/byte_swap.h
src/sys/arch/arm/include/cdefs.h
src/sys/arch/arm/include/cpuconf.h
src/sys/arch/arm/include/cpufunc.h
src/sys/arch/arm/include/cpufunc_proto.h
src/sys/arch/arm/include/disklabel.h
src/sys/arch/arm/include/elf_machdep.h
src/sys/arch/arm/include/endian_machdep.h
src/sys/arch/arm/include/frame.h
src/sys/arch/arm/include/int_const.h
src/sys/arch/arm/include/int_fmtio.h
src/sys/arch/arm/include/int_limits.h
src/sys/arch/arm/include/int_mwgwtypes.h
src/sys/arch/arm/include/int_types.h
src/sys/arch/arm/include/limits.h
src/sys/arch/arm/include/lock.h
src/sys/arch/arm/include/locore.h
src/sys/arch/arm/include/mcontext.h
src/sys/arch/arm/include/mutex.h
src/sys/arch/arm/include/param.h
src/sys/arch/arm/include/pcb.h
src/sys/arch/arm/include/proc.h
src/sys/arch/arm/include/ptrace.h
src/sys/arch/arm/include/reg.h
src/sys/arch/arm/include/rwlock.h
src/sys/arch/arm/include/signal.h
src/sys/arch/arm/include/types.h
src/sys/arch/arm/include/wchar_limits.h
src/sys/arch/evbarm/include/ansi.h
src/sys/arch/evbarm/include/asm.h
src/sys/arch/evbarm/include/bswap.h
src/sys/arch/evbarm/include/cdefs.h
src/sys/arch/evbarm/include/disklabel.h
src/sys/arch/evbarm/include/elf_machdep.h
src/sys/arch/evbarm/include/endian.h
src/sys/arch/evbarm/include/endian_machdep.h
src/sys/arch/evbarm/include/frame.h
src/sys/arch/evbarm/include/int_const.h
src/sys/arch/evbarm/include/int_fmtio.h
src/sys/arch/evbarm/include/int_limits.h
src/sys/arch/evbarm/include/int_mwgwtypes.h
src/sys/arch/evbarm/include/int_types.h
src/sys/arch/evbarm/include/limits.h
src/sys/arch/evbarm/include/lock.h
src/sys/arch/evbarm/include/mcontext.h
src/sys/arch/evbarm/include/mutex.h
src/sys/arch/evbarm/include/param.h
src/sys/arch/evbarm/include/pcb.h
src/sys/arch/evbarm/include/proc.h
src/sys/arch/evbarm/include/ptrace.h
src/sys/arch/evbarm/include/rwlock.h
src/sys/arch/evbarm/include/signal.h
src/sys/arch/evbarm/include/types.h
src/sys/arch/evbarm/include/vmparam.h
src/sys/arch/evbarm/include/wchar_limits.h
src/sys/arch/i386/i386/kobj_machdep.c
src/sys/arch/i386/include/ansi.h
src/sys/arch/i386/include/asm.h
src/sys/arch/i386/include/bswap.h
src/sys/arch/i386/include/bus_defs.h
src/sys/arch/i386/include/bus_funcs.h
src/sys/arch/i386/include/byte_swap.h
src/sys/arch/i386/include/cdefs.h
src/sys/arch/i386/include/cpu_counter.h
src/sys/arch/i386/include/cpufunc.h
src/sys/arch/i386/include/cpu.h
src/sys/arch/i386/include/disklabel.h
src/sys/arch/i386/include/elf_machdep.h
src/sys/arch/i386/include/endian.h
src/sys/arch/i386/include/endian_machdep.h
src/sys/arch/i386/include/frame.h
src/sys/arch/i386/include/int_const.h
src/sys/arch/i386/include/int_fmtio.h
src/sys/arch/i386/include/int_limits.h
src/sys/arch/i386/include/int_mwgwtypes.h
src/sys/arch/i386/include/intrdefs.h
src/sys/arch/i386/include/intr.h
src/sys/arch/i386/include/int_types.h
src/sys/arch/i386/include/limits.h
src/sys/arch/i386/include/lock.h
src/sys/arch/i386/include/mcontext.h
src/sys/arch/i386/include/mutex.h
src/sys/arch/i386/include/param.h
src/sys/arch/i386/include/pcb.h
src/sys/arch/i386/include/pic.h
src/sys/arch/i386/include/pmap.h
src/sys/arch/i386/include/proc.h
src/sys/arch/i386/include/psl.h
src/sys/arch/i386/include/pte.h
src/sys/arch/i386/include/ptrace.h
src/sys/arch/i386/include/rwlock.h
src/sys/arch/i386/include/segments.h
src/sys/arch/i386/include/signal.h
src/sys/arch/i386/include/specialreg.h
src/sys/arch/i386/include/trap.h
src/sys/arch/i386/include/tss.h
src/sys/arch/i386/include/types.h
src/sys/arch/i386/include/vmparam.h
src/sys/arch/i386/include/wchar_limits.h
src/sys/arch/x86/include/bus_defs.h
src/sys/arch/x86/include/busdefs.h
src/sys/arch/x86/include/bus_funcs.h
src/sys/arch/x86/include/cacheinfo.h
src/sys/arch/x86/include/cpu_counter.h
src/sys/arch/x86/include/cpu_extended_state.h
src/sys/arch/x86/include/cpufunc.h
src/sys/arch/x86/include/cpu.h
src/sys/arch/x86/include/intrdefs.h
src/sys/arch/x86/include/intr.h
src/sys/arch/x86/include/lock.h
src/sys/arch/x86/include/mutex.h
src/sys/arch/x86/include/pic.h
src/sys/arch/x86/include/pmap.h
src/sys/arch/x86/include/pmap_pv.h
src/sys/arch/x86/include/psl.h
src/sys/arch/x86/include/pte.h
src/sys/arch/x86/include/rwlock.h
src/sys/arch/x86/include/specialreg.h
src/sys/arch/x86/include/trap.h
src/sys/coda/files.coda
src/sys/compat/common/compat_mod.h
src/sys/compat/common/compat_util.h
src/sys/compat/common/kern_select_50.c
src/sys/compat/common/kern_time_50.c
src/sys/compat/common/vfs_syscalls_50.c
src/sys/compat/sys/clockctl.h
src/sys/compat/sys/dirent.h
src/sys/compat/sys/mount.h
src/sys/compat/sys/resource.h
src/sys/compat/sys/stat.h
src/sys/compat/sys/time.h
src/sys/compat/sys/time_types.h
src/sys/compat/sys/timex.h
src/sys/conf/copyright
src/sys/conf/files
src/sys/conf/majors
src/sys/conf/newvers.sh
src/sys/conf/osrelease.sh
src/sys/conf/param.c
src/sys/crypto/arc4/files.arc4
src/sys/crypto/blowfish/files.blowfish
src/sys/crypto/camellia/files.camellia
src/sys/crypto/cast128/files.cast128
src/sys/crypto/cprng_fast/cprng_fast.c
src/sys/crypto/cprng_fast/cprng_fast.h
src/sys/crypto/cprng_fast/files.cprng_fast
src/sys/crypto/des/files.des
src/sys/crypto/nist_ctr_drbg/files.nist_ctr_drbg
src/sys/crypto/nist_ctr_drbg/nist_ctr_aes_rijndael.h
src/sys/crypto/nist_ctr_drbg/nist_ctr_drbg_aes128.h
src/sys/crypto/nist_ctr_drbg/nist_ctr_drbg.c
src/sys/crypto/nist_ctr_drbg/nist_ctr_drbg_config.h
src/sys/crypto/nist_ctr_drbg/nist_ctr_drbg.h
src/sys/crypto/rijndael/files.rijndael
src/sys/crypto/rijndael/rijndael-alg-fst.c
src/sys/crypto/rijndael/rijndael-alg-fst.h
src/sys/crypto/rijndael/rijndael-api-fst.c
src/sys/crypto/rijndael/rijndael-api-fst.h
src/sys/crypto/rijndael/rijndael.c
src/sys/crypto/rijndael/rijndael.h
src/sys/crypto/rijndael/rijndael_local.h
src/sys/crypto/skipjack/files.skipjack
src/sys/ddb/files.ddb
src/sys/dev/altmem/files.altmem
src/sys/dev/clock_subr.c
src/sys/dev/clock_subr.h
src/sys/dev/cons.c
src/sys/dev/cons.h
src/sys/dev/dksubr.c
src/sys/dev/dkvar.h
src/sys/dev/dkwedge/dk.c
src/sys/dev/dm/files.dm
src/sys/dev/dmover/files.dmover
src/sys/dev/drm/files.drm
src/sys/dev/dtv/files.dtv
src/sys/dev/files.audio
src/sys/dev/firmload.c
src/sys/dev/firmload.h
src/sys/dev/flash/files.flash
src/sys/dev/gpio/files.gpio
src/sys/dev/i2c/files.i2c
src/sys/dev/ic/files.athn
src/sys/dev/ir/files.ir
src/sys/dev/iscsi/files.iscsi
src/sys/dev/mii/files.mii
src/sys/dev/nand/files.nand
src/sys/dev/nor/files.nor
src/sys/dev/onewire/files.onewire
src/sys/dev/pad/files.pad
src/sys/dev/ppbus/files.ppbus
src/sys/dev/raidframe/files.raidframe
src/sys/dev/rasops/files.rasops
src/sys/dev/rcons/files.rcons
src/sys/dev/rnd_private.h
src/sys/dev/spi/files.spi
src/sys/dev/splash/files.splash
src/sys/dev/stbi/files.stbi
src/sys/dev/sysmon/files.sysmon
src/sys/dev/tprof/files.tprof
src/sys/dev/videomode/files.videomode
src/sys/dev/wscons/files.wscons
src/sys/dev/wsfb/files.wsfb
src/sys/dev/wsfont/files.wsfont
src/sys/external/bsd/drm2/drm/files.drmkms
src/sys/external/bsd/drm2/linux/files.drmkms_linux
src/sys/external/bsd/drm2/ttm/files.ttm
src/sys/external/bsd/drm/conf/files.drm
src/sys/external/bsd/dwc2/conf/files.dwc2
src/sys/external/isc/atheros_hal/conf/files.ath_hal
src/sys/fs/adosfs/files.adosfs
src/sys/fs/cd9660/cd9660_bmap.c
src/sys/fs/cd9660/cd9660_extern.h
src/sys/fs/cd9660/cd9660_lookup.c
src/sys/fs/cd9660/cd9660_mount.h
src/sys/fs/cd9660/cd9660_node.c
src/sys/fs/cd9660/cd9660_node.h
src/sys/fs/cd9660/cd9660_rrip.c
src/sys/fs/cd9660/cd9660_rrip.h
src/sys/fs/cd9660/cd9660_util.c
src/sys/fs/cd9660/cd9660_vfsops.c
src/sys/fs/cd9660/cd9660_vnops.c
src/sys/fs/cd9660/files.cd9660
src/sys/fs/cd9660/iso.h
src/sys/fs/cd9660/iso_rrip.h
src/sys/fs/efs/files.efs
src/sys/fs/filecorefs/files.filecorefs
src/sys/fs/hfs/files.hfs
src/sys/fs/msdosfs/bootsect.h
src/sys/fs/msdosfs/bpb.h
src/sys/fs/msdosfs/denode.h
src/sys/fs/msdosfs/direntry.h
src/sys/fs/msdosfs/fat.h
src/sys/fs/msdosfs/files.msdosfs
src/sys/fs/msdosfs/msdosfs_conv.c
src/sys/fs/msdosfs/msdosfs_denode.c
src/sys/fs/msdosfs/msdosfs_fat.c
src/sys/fs/msdosfs/msdosfs_lookup.c
src/sys/fs/msdosfs/msdosfsmount.h
src/sys/fs/msdosfs/msdosfs_vfsops.c
src/sys/fs/msdosfs/msdosfs_vnops.c
src/sys/fs/nilfs/files.nilfs
src/sys/fs/ntfs/files.ntfs
src/sys/fs/ptyfs/files.ptyfs
src/sys/fs/puffs/files.puffs
src/sys/fs/smbfs/files.smbfs
src/sys/fs/sysvbfs/files.sysvbfs
src/sys/fs/tmpfs/files.tmpfs
src/sys/fs/udf/ecma167-udf.h
src/sys/fs/udf/files.udf
src/sys/fs/unicode.h
src/sys/fs/union/files.union
src/sys/fs/v7fs/files.v7fs
src/sys/ipkdb/files.ipkdb
src/sys/kern/bufq_disksort.c
src/sys/kern/bufq_fcfs.c
src/sys/kern/bufq_priocscan.c
src/sys/kern/bufq_readprio.c
src/sys/kern/files.kern
src/sys/kern/init_sysctl_base.c
src/sys/kern/kern_auth.c
src/sys/kern/kern_cfglock.c
src/sys/kern/kern_descrip.c
src/sys/kern/kern_event.c
src/sys/kern/kern_hook.c
src/sys/kern/kern_ksyms.c
src/sys/kern/kern_ktrace.c
src/sys/kern/kern_ktrace_vfs.c
src/sys/kern/kern_malloc.c
src/sys/kern/kern_module.c
src/sys/kern/kern_module_vfs.c
src/sys/kern/kern_mutex_obj.c
src/sys/kern/kern_ntptime.c
src/sys/kern/kern_physio.c
src/sys/kern/kern_pmf.c
src/sys/kern/kern_proc.c
src/sys/kern/kern_prot.c
src/sys/kern/kern_rate.c
src/sys/kern/kern_resource.c
src/sys/kern/kern_rndpool.c
src/sys/kern/kern_rndq.c
src/sys/kern/kern_rndsink.c
src/sys/kern/kern_stub.c
src/sys/kern/kern_syscall.c
src/sys/kern/kern_sysctl.c
src/sys/kern/kern_tc.c
src/sys/kern/kern_time.c
src/sys/kern/kern_timeout.c
src/sys/kern/kern_uidinfo.c
src/sys/kern/kern_xxx.c
src/sys/kern/subr_autoconf.c
src/sys/kern/subr_bufq.c
src/sys/kern/subr_callback.c
src/sys/kern/subr_copy.c
src/sys/kern/subr_cprng.c
src/sys/kern/subr_device.c
src/sys/kern/subr_devsw.c
src/sys/kern/subr_disk.c
src/sys/kern/subr_disk_mbr.c
src/sys/kern/subr_disk_open.c
src/sys/kern/subr_evcnt.c
src/sys/kern/subr_extent.c
src/sys/kern/subr_hash.c
src/sys/kern/subr_humanize.c
src/sys/kern/subr_iostat.c
src/sys/kern/subr_kcpuset.c
src/sys/kern/subr_kmem.c
src/sys/kern/subr_kobj.c
src/sys/kern/subr_kobj_vfs.c
src/sys/kern/subr_log.c
src/sys/kern/subr_lwp_specificdata.c
src/sys/kern/subr_once.c
src/sys/kern/subr_pcq.c
src/sys/kern/subr_percpu.c
src/sys/kern/subr_pool.c
src/sys/kern/subr_prf.c
src/sys/kern/subr_pserialize.c
src/sys/kern/subr_specificdata.c
src/sys/kern/subr_time.c
src/sys/kern/subr_vmem.c
src/sys/kern/subr_workqueue.c
src/sys/kern/subr_xcall.c
src/sys/kern/syscalls.c
src/sys/kern/sys_descrip.c
src/sys/kern/sys_generic.c
src/sys/kern/sys_module.c
src/sys/kern/sys_pipe.c
src/sys/kern/sys_select.c
src/sys/kern/sys_syscall.c
src/sys/kern/uipc_sem.c
src/sys/kern/vfs_bio.c
src/sys/kern/vfs_cache.c
src/sys/kern/vfs_cwd.c
src/sys/kern/vfs_dirhash.c
src/sys/kern/vfs_getcwd.c
src/sys/kern/vfs_hooks.c
src/sys/kern/vfs_init.c
src/sys/kern/vfs_lockf.c
src/sys/kern/vfs_lookup.c
src/sys/kern/vfs_mount.c
src/sys/kern/vfs_quotactl.c
src/sys/kern/vfs_subr.c
src/sys/kern/vfs_syscalls.c
src/sys/kern/vfs_trans.c
src/sys/kern/vfs_vnode.c
src/sys/kern/vfs_vnops.c
src/sys/kern/vfs_wapbl.c
src/sys/kern/vfs_xattr.c
src/sys/kern/vnode_if.c
src/sys/lib/libkern/crc32.c
src/sys/lib/libkern/crc32.h
src/sys/lib/libkern/imax.c
src/sys/lib/libkern/imin.c
src/sys/lib/libkern/intoa.c
src/sys/lib/libkern/kern_assert.c
src/sys/lib/libkern/libkern.h
src/sys/lib/libkern/lmax.c
src/sys/lib/libkern/lmin.c
src/sys/lib/libkern/__main.c
src/sys/lib/libkern/max.c
src/sys/lib/libkern/mertwist.c
src/sys/lib/libkern/min.c
src/sys/lib/libkern/pmatch.c
src/sys/lib/libkern/rngtest.c
src/sys/lib/libkern/scanc.c
src/sys/lib/libkern/skpc.c
src/sys/lib/libkern/ulmax.c
src/sys/lib/libkern/ulmin.c
src/sys/lib/libkern/xlat_mbr_fstype.c
src/sys/lib/libx86emu/files.x86emu
src/sys/miscfs/deadfs/dead_vfsops.c
src/sys/miscfs/deadfs/dead_vnops.c
src/sys/miscfs/fdesc/files.fdesc
src/sys/miscfs/fifofs/fifo.h
src/sys/miscfs/genfs/genfs.h
src/sys/miscfs/genfs/genfs_io.c
src/sys/miscfs/genfs/genfs_node.h
src/sys/miscfs/genfs/genfs_rename.c
src/sys/miscfs/genfs/genfs_vfsops.c
src/sys/miscfs/genfs/genfs_vnops.c
src/sys/miscfs/kernfs/files.kernfs
src/sys/miscfs/nullfs/files.nullfs
src/sys/miscfs/overlay/files.overlay
src/sys/miscfs/procfs/files.procfs
src/sys/miscfs/specfs/specdev.h
src/sys/miscfs/specfs/spec_vnops.c
src/sys/miscfs/syncfs/syncfs.h
src/sys/miscfs/syncfs/sync_subr.c
src/sys/miscfs/syncfs/sync_vnops.c
src/sys/miscfs/umapfs/files.umapfs
src/sys/net80211/files.net80211
src/sys/net/agr/files.agr
src/sys/netatalk/files.netatalk
src/sys/netbt/files.netbt
src/sys/net/dlt.h
src/sys/net/files.net
src/sys/net/files.pf
src/sys/net/if_arp.h
src/sys/net/if.h
src/sys/netinet6/files.netinet6
src/sys/netinet6/in6.h
src/sys/netinet/files.ipfilter
src/sys/netinet/files.netinet
src/sys/netinet/in.h
src/sys/netipsec/files.netipsec
src/sys/netisdn/files.i4b
src/sys/netmpls/files.netmpls
src/sys/netnatm/files.netnatm
src/sys/net/npf/files.npf
src/sys/net/pfil.h
src/sys/net/pktqueue.h
src/sys/netsmb/files.netsmb
src/sys/nfs/files.nfs
src/sys/nfs/nfs.h
src/sys/nfs/nfsproto.h
src/sys/nfs/nfs_var.h
src/sys/nfs/rpcv2.h
src/sys/opencrypto/files.opencrypto
src/sys/rump/dev/files.rump
src/sys/rump/include/machine/cpu.h
src/sys/rump/include/machine/intr.h
src/sys/rump/include/machine/pmap.h
src/sys/rump/include/rump/rumpdefs.h
src/sys/rump/include/rump/rump.h
src/sys/rump/include/rump/rumpkern_if_pub.h
src/sys/rump/include/rump/rump_namei.h
src/sys/rump/include/rump/rumpnet_if_pub.h
src/sys/rump/include/rump/rump_syscalls_compat.h
src/sys/rump/include/rump/rump_syscalls.h
src/sys/rump/include/rump/rumpuser.h
src/sys/rump/include/rump/rumpvfs_if_pub.h
src/sys/rump/include/rump/rumpvnode_if.h
src/sys/rump/include/sys/bus.h
src/sys/rump/librump/rumpdev/autoconf.c
src/sys/rump/librump/rumpdev/MAINBUS.ioconf
src/sys/rump/librump/rumpdev/opt/wsdisplay.h
src/sys/rump/librump/rumpdev/rump_dev.c
src/sys/rump/librump/rumpdev/rump_dev_private.h
src/sys/rump/librump/rumpkern/accessors.c
src/sys/rump/librump/rumpkern/arch/generic/rump_generic_cpu.c
src/sys/rump/librump/rumpkern/arch/generic/rump_generic_pmap.c
src/sys/rump/librump/rumpkern/arch/x86/rump_x86_cpu.c
src/sys/rump/librump/rumpkern/arch/x86/rump_x86_cpu_counter.c
src/sys/rump/librump/rumpkern/arch/x86/rump_x86_pmap.c
src/sys/rump/librump/rumpkern/arch/x86/rump_x86_spinlock.c
src/sys/rump/librump/rumpkern/arch/x86/rump_x86_spl.c
src/sys/rump/librump/rumpkern/cons.c
src/sys/rump/librump/rumpkern/devsw.c
src/sys/rump/librump/rumpkern/emul.c
src/sys/rump/librump/rumpkern/etfs_wrap.c
src/sys/rump/librump/rumpkern/hyperentropy.c
src/sys/rump/librump/rumpkern/intr.c
src/sys/rump/librump/rumpkern/klock.c
src/sys/rump/librump/rumpkern/kobj_rename.c
src/sys/rump/librump/rumpkern/locks_up.c
src/sys/rump/librump/rumpkern/ltsleep.c
src/sys/rump/librump/rumpkern/lwproc.c
src/sys/rump/librump/rumpkern/opt/config_file.h
src/sys/rump/librump/rumpkern/opt/ksyms.h
src/sys/rump/librump/rumpkern/opt/opt_bufcache.h
src/sys/rump/librump/rumpkern/opt/opt_compat_43.h
src/sys/rump/librump/rumpkern/opt/opt_compat_netbsd.h
src/sys/rump/librump/rumpkern/opt/opt_ddb.h
src/sys/rump/librump/rumpkern/opt/opt_defcorename.h
src/sys/rump/librump/rumpkern/opt/opt_dump.h
src/sys/rump/librump/rumpkern/opt/opt_hz.h
src/sys/rump/librump/rumpkern/opt/opt_ipkdb.h
src/sys/rump/librump/rumpkern/opt/opt_kgdb.h
src/sys/rump/librump/rumpkern/opt/opt_ktrace.h
src/sys/rump/librump/rumpkern/opt/opt_lockdebug.h
src/sys/rump/librump/rumpkern/opt/opt_magiclinks.h
src/sys/rump/librump/rumpkern/opt/opt_modular.h
src/sys/rump/librump/rumpkern/opt/opt_multiprocessor.h
src/sys/rump/librump/rumpkern/opt/opt_ptrace.h
src/sys/rump/librump/rumpkern/opt/opt_revcache.h
src/sys/rump/librump/rumpkern/opt/opt_rnd_printf.h
src/sys/rump/librump/rumpkern/opt/opt_rtc_offset.h
src/sys/rump/librump/rumpkern/opt/opt_sysv.h
src/sys/rump/librump/rumpkern/opt/opt_sysvparam.h
src/sys/rump/librump/rumpkern/opt/opt_uvmhist.h
src/sys/rump/librump/rumpkern/opt/veriexec.h
src/sys/rump/librump/rumpkern/rump.c
src/sys/rump/librump/rumpkern/rumpcopy.c
src/sys/rump/librump/rumpkern/rump_curlwp.h
src/sys/rump/librump/rumpkern/rump_curlwp_hypercall.h
src/sys/rump/librump/rumpkern/rumpkern_if_priv.h
src/sys/rump/librump/rumpkern/rumpkern_if_wrappers.c
src/sys/rump/librump/rumpkern/rumpkern_syscalls.c
src/sys/rump/librump/rumpkern/rump_private.h
src/sys/rump/librump/rumpkern/rump_syscalls.c
src/sys/rump/librump/rumpkern/scheduler.c
src/sys/rump/librump/rumpkern/signals.c
src/sys/rump/librump/rumpkern/sleepq.c
src/sys/rump/librump/rumpkern/threads.c
src/sys/rump/librump/rumpkern/vm.c
src/sys/rump/librump/rumpnet/rumpnet_if_priv.h
src/sys/rump/librump/rumpnet/rump_net_private.h
src/sys/rump/librump/rumpvfs/compat.c
src/sys/rump/librump/rumpvfs/devnodes.c
src/sys/rump/librump/rumpvfs/devnull.c
src/sys/rump/librump/rumpvfs/rumpblk.c
src/sys/rump/librump/rumpvfs/rumpfs.c
src/sys/rump/librump/rumpvfs/rump_vfs.c
src/sys/rump/librump/rumpvfs/rumpvfs_if_priv.h
src/sys/rump/librump/rumpvfs/rumpvfs_if_wrappers.c
src/sys/rump/librump/rumpvfs/rump_vfs_private.h
src/sys/rump/librump/rumpvfs/rumpvfs_syscalls.c
src/sys/rump/librump/rumpvfs/rumpvnode_if.c
src/sys/rump/librump/rumpvfs/vm_vfs.c
src/sys/secmodel/bsd44/files.bsd44
src/sys/secmodel/extensions/files.extensions
src/sys/secmodel/files.secmodel
src/sys/secmodel/keylock/files.keylock
src/sys/secmodel/overlay/files.overlay
src/sys/secmodel/secmodel.c
src/sys/secmodel/secmodel.h
src/sys/secmodel/securelevel/files.securelevel
src/sys/secmodel/suser/files.suser
src/sys/secmodel/suser/secmodel_suser.c
src/sys/secmodel/suser/suser.h
src/sys/sys/acct.h
src/sys/sys/aio.h
src/sys/sys/ansi.h
src/sys/sys/atomic.h
src/sys/sys/bitops.h
src/sys/sys/bootblock.h
src/sys/sys/bswap.h
src/sys/sys/buf.h
src/sys/sys/bufq.h
src/sys/sys/bufq_impl.h
src/sys/sys/bus.h
src/sys/sys/bus_proto.h
src/sys/sys/callback.h
src/sys/sys/callout.h
src/sys/sys/cdbr.h
src/sys/sys/cdefs_elf.h
src/sys/sys/cdefs.h
src/sys/sys/cdio.h
src/sys/sys/clockctl.h
src/sys/sys/clock.h
src/sys/sys/common_int_limits.h
src/sys/sys/common_int_mwgwtypes.h
src/sys/sys/common_int_types.h
src/sys/sys/condvar.h
src/sys/sys/conf.h
src/sys/sys/cprng.h
src/sys/sys/cpu_data.h
src/sys/sys/cpu.h
src/sys/sys/debug.h
src/sys/sys/device.h
src/sys/sys/device_if.h
src/sys/sys/devmon.h
src/sys/sys/dirent.h
src/sys/sys/dirhash.h
src/sys/sys/disk.h
src/sys/sys/disklabel_acorn.h
src/sys/sys/disklabel.h
src/sys/sys/dkbad.h
src/sys/sys/dkio.h
src/sys/sys/dtrace_bsd.h
src/sys/sys/endian.h
src/sys/sys/errno.h
src/sys/sys/evcnt.h
src/sys/sys/event.h
src/sys/sys/eventvar.h
src/sys/sys/exec_elf.h
src/sys/sys/exec.h
src/sys/sys/extattr.h
src/sys/sys/extent.h
src/sys/sys/fcntl.h
src/sys/sys/fd_set.h
src/sys/sys/featuretest.h
src/sys/sys/filedesc.h
src/sys/sys/file.h
src/sys/sys/filio.h
src/sys/sys/fstrans.h
src/sys/sys/fstypes.h
src/sys/sys/hash.h
src/sys/sys/intr.h
src/sys/sys/inttypes.h
src/sys/sys/ioccom.h
src/sys/sys/ioctl_compat.h
src/sys/sys/ioctl.h
src/sys/sys/iostat.h
src/sys/sys/ipi.h
src/sys/sys/kauth.h
src/sys/sys/kcpuset.h
src/sys/sys/kernel.h
src/sys/sys/kernhist.h
src/sys/sys/kmem.h
src/sys/sys/kobj.h
src/sys/sys/kobj_impl.h
src/sys/sys/kprintf.h
src/sys/sys/ksem.h
src/sys/sys/ksyms.h
src/sys/sys/kthread.h
src/sys/sys/ktrace.h
src/sys/sys/lockdebug.h
src/sys/sys/lockf.h
src/sys/sys/lock.h
src/sys/sys/lwp.h
src/sys/sys/malloc.h
src/sys/sys/mallocvar.h
src/sys/sys/mbuf.h
src/sys/sys/md4.h
src/sys/sys/md5.h
src/sys/sys/mman.h
src/sys/sys/module.h
src/sys/sys/mount.h
src/sys/sys/mqueue.h
src/sys/sys/msgbuf.h
src/sys/sys/mutex.h
src/sys/sys/namei.h
src/sys/sys/null.h
src/sys/sys/once.h
src/sys/sys/param.h
src/sys/sys/pcq.h
src/sys/sys/pcu.h
src/sys/sys/percpu.h
src/sys/sys/percpu_types.h
src/sys/sys/pipe.h
src/sys/sys/pmf.h
src/sys/sys/poll.h
src/sys/sys/pool.h
src/sys/sys/proc.h
src/sys/sys/prot.h
src/sys/sys/protosw.h
src/sys/sys/pserialize.h
src/sys/sys/pset.h
src/sys/sys/ptrace.h
src/sys/sys/ptree.h
src/sys/sys/queue.h
src/sys/sys/quotactl.h
src/sys/sys/quota.h
src/sys/sys/ras.h
src/sys/sys/rbtree.h
src/sys/sys/reboot.h
src/sys/sys/resource.h
src/sys/sys/resourcevar.h
src/sys/sys/rmd160.h
src/sys/sys/rnd.h
src/sys/sys/rndsink.h
src/sys/sys/rngtest.h
src/sys/sys/rwlock.h
src/sys/sys/sched.h
src/sys/sys/select.h
src/sys/sys/selinfo.h
src/sys/sys/sha1.h
src/sys/sys/sha2.h
src/sys/sys/siginfo.h
src/sys/sys/signal.h
src/sys/sys/signalvar.h
src/sys/sys/sigtypes.h
src/sys/sys/sleepq.h
src/sys/sys/socket.h
src/sys/sys/socketvar.h
src/sys/sys/sockio.h
src/sys/sys/specificdata.h
src/sys/sys/spldebug.h
src/sys/sys/spl.h
src/sys/sys/stat.h
src/sys/sys/statvfs.h
src/sys/sys/stdarg.h
src/sys/sys/stdint.h
src/sys/sys/syncobj.h
src/sys/sys/syscallargs.h
src/sys/sys/syscall.h
src/sys/sys/syscall_stats.h
src/sys/sys/syscallvar.h
src/sys/sys/sysctl.h
src/sys/sys/syslimits.h
src/sys/sys/syslog.h
src/sys/sys/systm.h
src/sys/sys/termios.h
src/sys/sys/timeb.h
src/sys/sys/time.h
src/sys/sys/timepps.h
src/sys/sys/times.h
src/sys/sys/timetc.h
src/sys/sys/timevar.h
src/sys/sys/timex.h
src/sys/sys/tprintf.h
src/sys/sys/trace.h
src/sys/sys/tree.h
src/sys/sys/ttychars.h
src/sys/sys/ttycom.h
src/sys/sys/ttydefaults.h
src/sys/sys/ttydev.h
src/sys/sys/tty.h
src/sys/sys/types.h
src/sys/sys/ucontext.h
src/sys/sys/ucred.h
src/sys/sys/uidinfo.h
src/sys/sys/uio.h
src/sys/sys/unistd.h
src/sys/sys/userconf.h
src/sys/sys/utsname.h
src/sys/sys/verified_exec.h
src/sys/sys/vfs_syscalls.h
src/sys/sys/vmem.h
src/sys/sys/vmem_impl.h
src/sys/sys/vmmeter.h
src/sys/sys/vnode.h
src/sys/sys/vnode_if.h
src/sys/sys/wait.h
src/sys/sys/wapbl.h
src/sys/sys/wapbl_replay.h
src/sys/sys/workqueue.h
src/sys/sys/xattr.h
src/sys/sys/xcall.h
src/sys/ufs/ext2fs/ext2fs_alloc.c
src/sys/ufs/ext2fs/ext2fs_balloc.c
src/sys/ufs/ext2fs/ext2fs_bmap.c
src/sys/ufs/ext2fs/ext2fs_bswap.c
src/sys/ufs/ext2fs/ext2fs_dinode.h
src/sys/ufs/ext2fs/ext2fs_dir.h
src/sys/ufs/ext2fs/ext2fs_extern.h
src/sys/ufs/ext2fs/ext2fs.h
src/sys/ufs/ext2fs/ext2fs_inode.c
src/sys/ufs/ext2fs/ext2fs_lookup.c
src/sys/ufs/ext2fs/ext2fs_readwrite.c
src/sys/ufs/ext2fs/ext2fs_rename.c
src/sys/ufs/ext2fs/ext2fs_subr.c
src/sys/ufs/ext2fs/ext2fs_vfsops.c
src/sys/ufs/ext2fs/ext2fs_vnops.c
src/sys/ufs/ffs/ffs_alloc.c
src/sys/ufs/ffs/ffs_appleufs.c
src/sys/ufs/ffs/ffs_balloc.c
src/sys/ufs/ffs/ffs_bswap.c
src/sys/ufs/ffs/ffs_extern.h
src/sys/ufs/ffs/ffs_inode.c
src/sys/ufs/ffs/ffs_quota2.c
src/sys/ufs/ffs/ffs_snapshot.c
src/sys/ufs/ffs/ffs_subr.c
src/sys/ufs/ffs/ffs_tables.c
src/sys/ufs/ffs/ffs_vfsops.c
src/sys/ufs/ffs/ffs_vnops.c
src/sys/ufs/ffs/ffs_wapbl.c
src/sys/ufs/ffs/fs.h
src/sys/ufs/files.ufs
src/sys/ufs/lfs/lfs_extern.h
src/sys/ufs/lfs/lfs.h
src/sys/ufs/mfs/mfs_extern.h
src/sys/ufs/mfs/mfs_miniroot.c
src/sys/ufs/ufs/dinode.h
src/sys/ufs/ufs/dir.h
src/sys/ufs/ufs/dirhash.h
src/sys/ufs/ufs/extattr.h
src/sys/ufs/ufs/inode.h
src/sys/ufs/ufs/quota1.h
src/sys/ufs/ufs/quota1_subr.c
src/sys/ufs/ufs/quota2.h
src/sys/ufs/ufs/quota2_subr.c
src/sys/ufs/ufs/quota.h
src/sys/ufs/ufs/ufs_bmap.c
src/sys/ufs/ufs/ufs_bswap.h
src/sys/ufs/ufs/ufs_dirhash.c
src/sys/ufs/ufs/ufs_extattr.c
src/sys/ufs/ufs/ufs_extern.h
src/sys/ufs/ufs/ufs_inode.c
src/sys/ufs/ufs/ufs_lookup.c
src/sys/ufs/ufs/ufsmount.h
src/sys/ufs/ufs/ufs_quota2.c
src/sys/ufs/ufs/ufs_quota.c
src/sys/ufs/ufs/ufs_quota.h
src/sys/ufs/ufs/ufs_readwrite.c
src/sys/ufs/ufs/ufs_rename.c
src/sys/ufs/ufs/ufs_vfsops.c
src/sys/ufs/ufs/ufs_vnops.c
src/sys/ufs/ufs/ufs_wapbl.c
src/sys/ufs/ufs/ufs_wapbl.h
src/sys/uvm/files.uvm
src/sys/uvm/uvm_amap.h
src/sys/uvm/uvm_anon.h
src/sys/uvm/uvm_aobj.c
src/sys/uvm/uvm_aobj.h
src/sys/uvm/uvm_ddb.h
src/sys/uvm/uvm_device.h
src/sys/uvm/uvm_extern.h
src/sys/uvm/uvm_fault.h
src/sys/uvm/uvm_fault_i.h
src/sys/uvm/uvm_glue.h
src/sys/uvm/uvm.h
src/sys/uvm/uvm_kmguard.h
src/sys/uvm/uvm_km.h
src/sys/uvm/uvm_loan.h
src/sys/uvm/uvm_map.h
src/sys/uvm/uvm_object.c
src/sys/uvm/uvm_object.h
src/sys/uvm/uvm_page.h
src/sys/uvm/uvm_pager.h
src/sys/uvm/uvm_param.h
src/sys/uvm/uvm_pdaemon.h
src/sys/uvm/uvm_pdpolicy.h
src/sys/uvm/uvm_pglist.h
src/sys/uvm/uvm_pmap.h
src/sys/uvm/uvm_prot.h
src/sys/uvm/uvm_readahead.c
src/sys/uvm/uvm_readahead.h
src/sys/uvm/uvm_stat.h
src/sys/uvm/uvm_swap.h
src/sys/uvm/uvm_swapstub.c
src/sys/uvm/uvm_vnode.c
src/tools/compat/compat_defs.h
src/tools/compat/namespace.h
src/tools/compat/vis.h
src/usr.bin/cksum/crc.c
src/usr.bin/cksum/crc_extern.h
src/usr.bin/cksum/extern.h
src/usr.bin/config/defs.h
src/usr.bin/config/files.c
src/usr.bin/config/gram.y
src/usr.bin/config/hash.c
src/usr.bin/config/lint.c
src/usr.bin/config/main.c
src/usr.bin/config/mkdevsw.c
src/usr.bin/config/mkheaders.c
src/usr.bin/config/mkioconf.c
src/usr.bin/config/mkmakefile.c
src/usr.bin/config/mkswap.c
src/usr.bin/config/pack.c
src/usr.bin/config/scan.l
src/usr.bin/config/sem.c
src/usr.bin/config/sem.h
src/usr.bin/config/util.c

View File

@ -1,136 +0,0 @@
if {[have_spec arm]} {
assert_spec arm_v7
}
#
# Check used commands
#
set dd [check_installed dd]
#
# Build
#
set build_components {
core init
drivers/timer
server/ram_blk
server/rump_cgd
server/rump_fs
test/libc_vfs
}
build $build_components
#
# Prepare image
#
set disk_image "cgd.raw"
puts "preparing bin/$disk_image..."
if {![file exists $disk_image]} {
catch { exec $dd if=/dev/zero of=bin/$disk_image bs=1M count=16 }
}
set cgd_key [exec [genode_dir]/tool/rump -c bin/$disk_image]
if {[catch { exec [genode_dir]/tool/rump -c -d "/dev/rcgd0a" -f -F ext2fs -k "$cgd_key" bin/$disk_image }]} {
puts stderr "could not format crypto device."
exit 1
}
create_boot_directory
#
# Generate config
#
append config {
<config>
<parent-provides>
<service name="ROM"/>
<service name="IRQ"/>
<service name="IO_MEM"/>
<service name="IO_PORT"/>
<service name="PD"/>
<service name="RM"/>
<service name="CPU"/>
<service name="LOG"/>
</parent-provides>
<default-route>
<any-service> <parent/> <any-child/> </any-service>
</default-route>
<start name="timer">
<resource name="RAM" quantum="1M"/>
<provides><service name="Timer"/></provides>
</start>
<start name="ram_blk">
<resource name="RAM" quantum="20M"/>
<provides><service name="Block"/></provides>}
append config "
<config file=\"$disk_image\" block_size=\"512\"/>"
append config {
</start>
<start name="rump_cgd">
<resource name="RAM" quantum="8M" />
<provides><service name="Block"/></provides>
<config action="configure">
<params>
<method>key</method>}
append config "
<key>$cgd_key</key>"
append config {
</params>
</config>
<route>
<service name="Block"> <child name="ram_blk"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="rump_fs">
<resource name="RAM" quantum="16M"/>
<provides><service name="File_system"/></provides>
<config fs="ext2fs">
<default-policy root="/" writeable="yes"/>
</config>
<route>
<service name="Block"> <child name="rump_cgd"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="test-libc_vfs">
<resource name="RAM" quantum="4M"/>
<config>
<libc stdout="/dev/log">
<vfs>
<dir name="dev"> <log/> </dir>
<fs/>
</vfs>
</libc>
</config>
</start>
</config>}
install_config $config
#
# Boot modules
#
# generic modules
set boot_modules {
core ld.lib.so init timer ram_blk rump_cgd rump_fs test-libc_vfs
libc.lib.so rump.lib.so rump_cgd.lib.so rump_fs.lib.so
}
append boot_modules "$disk_image"
build_boot_image $boot_modules
append qemu_args " -nographic"
run_genode_until {.*child "test-libc_vfs" exited with exit value 0.*} 60
exec rm -f bin/$disk_image
puts "\nTest succeeded\n"
# vi: set ft=tcl :

View File

@ -47,6 +47,7 @@ append config {
<default-route>
<any-service> <parent/> <any-child/> </any-service>
</default-route>
<default caps="100"/>
<start name="timer">
<resource name="RAM" quantum="1M"/>
<provides><service name="Timer"/></provides>
@ -56,7 +57,7 @@ append config {
<provides><service name="Block"/></provides>
<config file="fs.raw" block_size="512"/>
</start>
<start name="rump_fs">
<start name="rump_fs" caps="200">
<resource name="RAM" quantum="8M" />
<provides><service name="File_system"/></provides>
<config fs="msdos"><default-policy root="/" writeable="yes"/></config>

View File

@ -14,7 +14,7 @@
extern "C" {
#include <sys/types.h>
#include <rump/rumpuser.h>
#include <elf.h>
#include <exec_elf.h>
}
#include <rump/env.h>
@ -24,8 +24,6 @@ extern "C" {
#include <util/string.h>
extern "C" void wait_for_continue();
#ifdef _LP64
typedef Elf64_Dyn Elf_Dyn;
typedef Elf64_Sym Elf_Sym;

View File

@ -22,7 +22,6 @@
#include <util/random.h>
#include <util/string.h>
extern "C" void wait_for_continue();
enum { SUPPORTED_RUMP_VERSION = 17 };
static bool verbose = false;

View File

@ -1,30 +0,0 @@
/**
* \brief Misc functions
* \author Sebastian Sumpf
* \date 2014-01-17
*/
/*
* Copyright (C) 2014-2017 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU Affero General Public License version 3.
*/
/* Genode includes */
#include <util/string.h>
/*
* On some platforms (namely ARM) we end-up pulling in string.h prototypes
*/
extern "C" void *memcpy(void *d, void *s, Genode::size_t n)
{
return Genode::memcpy(d, s, n);
}
extern "C" void *memset(void *s, int c, Genode::size_t n)
{
return Genode::memset(s, c, n);
}

View File

@ -0,0 +1 @@
LIBS = rump2 rump2_fs

View File

@ -1,121 +0,0 @@
/*
* \brief Block driver
* \author Josef Söntgen
* \date 2014-04-16
*/
/*
* Copyright (C) 2014-2017 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU Affero General Public License version 3.
*/
#ifndef _BLOCK_DRIVER_H_
#define _BLOCK_DRIVER_H_
/* General includes */
#include <base/log.h>
#include <block_session/connection.h>
#include <block/component.h>
#include <os/packet_allocator.h>
/* local includes */
#include "cgd.h"
class Driver : public Block::Driver
{
private:
Genode::Heap &_heap;
Block::Session::Operations _ops;
Genode::size_t _blk_sz;
Block::sector_t _blk_cnt;
Cgd::Device *_cgd_device;
public:
Driver(Genode::Env &env, Genode::Heap &heap)
:
Block::Driver(env.ram()), _heap(heap),
_blk_sz(0), _blk_cnt(0), _cgd_device(0)
{
try {
_cgd_device = Cgd::init(_heap, env);
} catch (...) {
Genode::error("could not initialize cgd device.");
throw Genode::Service_denied();
}
_blk_cnt = _cgd_device->block_count();
_blk_sz = _cgd_device->block_size();
/*
* XXX We need write access to satisfy RUMP but we have to check
* the client policy in the session interface.
*/
_ops.set_operation(Block::Packet_descriptor::READ);
_ops.set_operation(Block::Packet_descriptor::WRITE);
}
~Driver()
{
Cgd::deinit(_heap, _cgd_device);
}
bool _range_valid(Block::sector_t num, Genode::size_t count)
{
if (num + count > _blk_cnt) {
Genode::error("requested block ", num, "-", num + count, " out of range!");
return false;
}
return true;
}
/****************************
** Block-driver interface **
****************************/
Genode::size_t block_size() { return _blk_sz; }
Block::sector_t block_count() { return _blk_cnt; }
Block::Session::Operations ops() { return _ops; }
void read(Block::sector_t block_number,
Genode::size_t block_count,
char* buffer,
Block::Packet_descriptor &packet)
{
if (!_ops.supported(Block::Packet_descriptor::READ))
throw Io_error();
if(!_range_valid(block_number, block_count))
throw Io_error();
_cgd_device->read(buffer, block_count * _blk_sz, block_number * _blk_sz);
ack_packet(packet);
}
void write(Block::sector_t block_number,
Genode::size_t block_count,
const char * buffer,
Block::Packet_descriptor &packet)
{
if (!_ops.supported(Block::Packet_descriptor::WRITE))
throw Io_error();
if(!_range_valid(block_number, block_count))
throw Io_error();
_cgd_device->write(buffer, block_count * _blk_sz, block_number * _blk_sz);
ack_packet(packet);
}
void sync() { }
};
#endif /* _BLOCK_DRIVER_H_ */

View File

@ -1,504 +0,0 @@
/**
* \brief RUMP cgd
* \author Josef Soentgen
* \date 2014-04-11
*/
/*
* Copyright (C) 2014-2017 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU Affero General Public License version 3.
*/
/* Genode includes */
#include <base/attached_rom_dataspace.h>
/* repo includes */
#include <rump_cgd/cgd.h>
/* local includes */
#include "cgd.h"
/* rump includes */
extern "C" {
#include <sys/cdefs.h>
#include <sys/errno.h>
#include <fcntl.h>
#include <sys/dirent.h>
#include <sys/disklabel.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/param.h>
#include <sys/ioctl.h>
#include <sys/reboot.h>
#include <dev/cgdvar.h>
#include <rump/rump.h>
#include <rump/rump_syscalls.h>
}
/**
* Miscellaneous methods used for converting the key string
*/
namespace {
/**
* Decode base64 encoding
*/
class Base64
{
private:
/* initialize the lookup table */
static constexpr const unsigned char _ascii_to_value[256]
{
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, 64, 64, 63,
52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 64, 64, 64,
64, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 64, 64, 64, 64, 64,
64, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64
};
public:
static size_t decode(char *dst, char const *src, size_t src_len)
{
unsigned char const *usrc = reinterpret_cast<unsigned char const*>(src);
size_t i;
for (i = 0; i < src_len; i += 4) {
*(dst++) = _ascii_to_value[usrc[i]] << 2 | _ascii_to_value[usrc[i + 1]] >> 4;
*(dst++) = _ascii_to_value[usrc[i + 1]] << 4 | _ascii_to_value[usrc[i + 2]] >> 2;
*(dst++) = _ascii_to_value[usrc[i + 2]] << 6 | _ascii_to_value[usrc[i + 3]];
}
return src_len * 3/4;
}
};
/* lookup table instance */
constexpr unsigned char Base64::_ascii_to_value[256];
/**
* Convert unsigned big endian value to host endianess
*/
unsigned read_big_endian(unsigned val)
{
unsigned char *p = reinterpret_cast<unsigned char*>(&val);
return (p[3]<<0) | (p[2]<<8) | (p[1]<<16) | (p[0]<<24);
}
}
/**
* cgd(4) wrapper
*/
namespace Cgd {
struct Params
{
enum {
ALGORITHM_LEN = 16,
IVMETHOD_LEN = 16,
KEY_LEN = 64,
PASSPHRASE_LEN = 64,
SALT_LEN = 29,
};
char algorithm[ALGORITHM_LEN];
char ivmethod[IVMETHOD_LEN];
char key[KEY_LEN];
Genode::size_t keylen = 0;
Genode::size_t blocksize = 0;
Params()
{
Genode::memset(algorithm, 0, sizeof(*algorithm));
Genode::memset(ivmethod, 0, sizeof(*ivmethod));
Genode::memset(key, 0, sizeof(*key));
}
static Params *generate()
{
return 0;
}
};
/**
* Configuration of the cgd device
*
* cgdconfig(8) saves the key as base 64 encoded string. The first 4 bytes
* of this string are the length of the key in bits stored as big endian.
*/
class Config
{
public:
/* same as in cgdconfig(8) */
typedef enum { ACTION_INVALID, ACTION_CONFIGURE, ACTION_GENERATE } Action;
private:
enum { ACTION_VALUE_LEN = 16, /* action attribute value length */
ENCODED_KEY_LEN = 64, /* encoded key string buffer */
DECODED_KEY_LEN = 36, /* decoded key string buffer */
VALID_ENCODED_KEY_LEN = 48, /* length of 256Bit key */
};
Genode::Attached_rom_dataspace _cfg;
Action _action;
Params *_params;
/**
* Get action from config attribute
*
* \return action
*/
Action _get_action()
{
char action_val[ACTION_VALUE_LEN];
if (_cfg.xml().has_attribute("action"))
_cfg.xml().attribute("action").value(action_val, sizeof (action_val));
else
return ACTION_INVALID;
if (Genode::strcmp(action_val, "configure") == 0)
return ACTION_CONFIGURE;
if (Genode::strcmp(action_val, "generate") == 0)
return ACTION_GENERATE;
return ACTION_INVALID;
}
/**
* Decode key string in cgdconfig(8) format
*
* \param dst pointer to buffer to store decoded key
* \param src pointer to buffer with encoded key string
* \param src_len length of encoded key string buffer
*
* \return true if decoding was successful and false otherwise
*/
bool _decode_key_string(char *dst, char const *src, size_t src_len)
{
char dec_key[DECODED_KEY_LEN];
/* check that buffer is large enough */
if (sizeof (dec_key) < (src_len*3/4))
return false;
(void) Base64::decode(dec_key, src, src_len);
unsigned *p = reinterpret_cast<unsigned *>(dec_key);
unsigned bits = read_big_endian(*p);
Genode::memcpy(dst, p + 1, bits / 8);
return true;
}
/**
* Parse given configuration
*
* This method throws a Genode::Exception if an error in the given
* configuration is found.
*/
void _parse_config()
{
if (_cfg.xml().has_sub_node("params")) {
Genode::Xml_node pnode = _cfg.xml().sub_node("params");
char method_val[4];
pnode.sub_node("method").value(method_val, sizeof (method_val));
bool use_key = Genode::strcmp(method_val, "key") == 0 ? true : false;
if (!use_key) {
Genode::error("no valid method specified.");
throw Genode::Exception();
}
_params = new (Genode::env()->heap()) Params();
Genode::strncpy(_params->algorithm, CGD_ALGORITHM,
Params::ALGORITHM_LEN);
Genode::strncpy(_params->ivmethod, CGD_IVMETHOD,
Params::IVMETHOD_LEN);
char enc_key[ENCODED_KEY_LEN];
pnode.sub_node("key").value(enc_key, sizeof (enc_key));
size_t enc_key_len = Genode::strlen(enc_key);
if (enc_key_len != VALID_ENCODED_KEY_LEN) {
Genode::error("incorrect encoded key found.");
throw Genode::Exception();
}
if (!_decode_key_string(_params->key, enc_key, enc_key_len)) {
Genode::error("could not decode key string.");
throw Genode::Exception();
}
_params->keylen = CGD_KEYLEN;
/* let cgd(4) figure out the right blocksize */
_params->blocksize = -1;
} else {
Genode::error("no <params> node found.");
throw Genode::Exception();
}
}
public:
Config(Genode::Env &env)
:
_cfg(env, "config"),
_action(_get_action()),
_params(0)
{
_parse_config();
}
~Config() { destroy(Genode::env()->heap(), _params); }
Action action() { return _action; }
Params* params() { return _params; }
};
}
/**
* Constructor
*
* \param fd used by the rumpkernel to execute syscalls on
*/
Cgd::Device::Device(int fd)
:
_fd(fd),
_blk_sz(0), _blk_cnt(0)
{
/**
* We query the disklabel(5) on CGD_RAW_DEVICE to get the
* actual block size and the number of blocks in the
* first partition. Though there may be more partitions
* we always use the first one.
*/
disklabel dl;
Genode::memset(&dl, 0, sizeof (dl));
int err = rump_sys_ioctl(_fd, DIOCGDINFO, &dl);
if (err) {
cgd_ioctl ci;
rump_sys_ioctl(_fd, CGDIOCCLR, &ci);
rump_sys_close(_fd);
Genode::error("could not read geometry of '", CGD_RAW_DEVICE, "'");
throw Genode::Exception();
}
_blk_sz = dl.d_secsize;
_blk_cnt = dl.d_partitions[0].p_size;
}
/**
* Destructor
*/
Cgd::Device::~Device()
{
/* unconfigure cgd(4) device to explicitly clean up buffers */
cgd_ioctl ci;
rump_sys_ioctl(_fd, CGDIOCCLR, &ci);
rump_sys_close(_fd);
}
/**
* Get name of the actual cgd device
*
* \return name
*/
char const *Cgd::Device::name() const { return CGD_RAW_DEVICE; }
/**
* Read from the cgd device
*
* \param dst pointer to buffer
* \param len size of the buffer
* \param seek_offset offset from where to start reading
*
* \return bytes read
*/
Genode::size_t Cgd::Device::read(char *dst, Genode::size_t len, seek_off_t seek_offset)
{
ssize_t ret = rump_sys_pread(_fd, dst, len, seek_offset);
return ret == -1 ? 0 : ret;
}
/**
* Write to cgd device
*
* \param src pointer to buffer
* \param len size of the buffer
* \param seek_offset offset from where to start writing
*
* \return bytes written
*/
Genode::size_t Cgd::Device::write(char const *src, Genode::size_t len, seek_off_t seek_offset)
{
/* should we append? */
if (seek_offset == ~0ULL) {
off_t off = rump_sys_lseek(_fd, 0, SEEK_END);
if (off == -1)
return 0;
seek_offset = off;
}
ssize_t ret = rump_sys_pwrite(_fd, src, len, seek_offset);
return ret == -1 ? 0 : ret;
}
/**
* Configure the actual cgd device
*
* \param alloc memory allocator for metadata
* \param p pointer to parameters
* \param dev name of the block device used as backing device for cgd
*
* \return configured cgd device
*/
Cgd::Device *Cgd::Device::configure(Genode::Allocator *alloc, Cgd::Params const *p,
char const *dev)
{
int fd = rump_sys_open(CGD_RAW_DEVICE, O_RDWR);
if (fd == -1) {
Genode::error("could not open '", CGD_RAW_DEVICE, "'");
throw Genode::Exception();
}
/* perform configuration of cgd device */
cgd_ioctl ci;
Genode::memset(&ci, 0, sizeof (ci));
ci.ci_disk = dev;
ci.ci_alg = p->algorithm;
ci.ci_ivmethod = p->ivmethod;
ci.ci_key = p->key;
ci.ci_keylen = p->keylen;
ci.ci_blocksize = p->blocksize;
int err = rump_sys_ioctl(fd, CGDIOCSET, &ci);
if (err == -1) {
rump_sys_close(fd);
Genode::error("could not configure '", CGD_RAW_DEVICE, "'");
throw Genode::Exception();
}
cgd_user cu;
Genode::memset(&cu, 0, sizeof (cu));
err = rump_sys_ioctl(fd, CGDIOCGET, &cu);
if (err == -1) { /* unlikely */
/**
* Reuse former cgd_ioctl struct because it is not used by this
* ioctl() anyway.
*/
rump_sys_ioctl(fd, CGDIOCCLR, &ci);
rump_sys_close(fd);
Genode::error("could not get cgd information.");
throw Genode::Exception();
}
Cgd::Device *cgd = new (alloc) Cgd::Device(fd);
return cgd;
}
/**
* Initialize a new Cgd::Device
*/
Cgd::Device *Cgd::init(Genode::Allocator &alloc, Genode::Env &env)
{
/* start rumpkernel */
rump_init();
/* register block device */
if (rump_pub_etfs_register(GENODE_DEVICE, GENODE_BLOCK_SESSION,
RUMP_ETFS_BLK)) {
Genode::error("could not register '", GENODE_DEVICE, "' within rumpkernel");
throw Genode::Exception();
}
Cgd::Config cfg(env);
Cgd::Config::Action action = cfg.action();
Cgd::Device *cgd_dev = 0;
switch (action) {
case Cgd::Config::ACTION_CONFIGURE:
{
Cgd::Params *p = cfg.params();
if (!p)
throw Genode::Exception();
cgd_dev = Cgd::Device::configure(&alloc, p, GENODE_DEVICE);
break;
}
case Cgd::Config::ACTION_GENERATE:
{
Cgd::Params *params = Cgd::Params::generate();
(void)params;
break;
}
case Cgd::Config::ACTION_INVALID:
Genode::error("invalid action declared");
throw Genode::Exception();
break;
}
Genode::log("exporting '", cgd_dev->name(), "' as block session");
return cgd_dev;
}
/**
* Deinitialize a Cgd::Device
*/
void Cgd::deinit(Genode::Allocator &alloc, Cgd::Device *dev)
{
destroy(alloc, dev);
/* halt rumpkernel */
rump_sys_reboot(RB_HALT, 0);
}

View File

@ -1,58 +0,0 @@
/**
* \brief Rump cgd header
* \author Josef Soentgen
* \date 2014-04-11
*/
/*
* Copyright (C) 2014-2017 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU Affero General Public License version 3.
*/
#ifndef _CGD_H_
#define _CGD_H_
#include <base/signal.h>
namespace Cgd {
typedef Genode::uint64_t seek_off_t;
class Params;
class Device
{
private:
int _fd; /* fd for cgd (raw) device */
Genode::size_t _blk_sz; /* block size of cgd device */
Genode::uint64_t _blk_cnt; /* block count of cgd device */
public:
Device(int fd);
~Device();
char const *name() const;
Genode::size_t block_size() const { return _blk_sz; }
Genode::uint64_t block_count() const { return _blk_cnt; }
Genode::size_t read(char *dst, Genode::size_t len, seek_off_t seek_offset);
Genode::size_t write(char const *src, Genode::size_t len, seek_off_t seek_offset);
static Device *configure(Genode::Allocator *alloc, Params const *p, char const *dev);
};
Device *init(Genode::Allocator &alloc, Genode::Env &env);
void deinit(Genode::Allocator &alloc, Device *dev);
}
#endif /* _CGD_H_ */

View File

@ -1,57 +0,0 @@
/**
* \brief Block device encryption via cgd
* \author Josef Soentgen
* \date 2014-04-11
*/
/*
* Copyright (C) 2014-2017 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU Affero General Public License version 3.
*/
/* Genode includes */
#include <base/env.h>
#include <base/component.h>
/* local includes */
#include "block_driver.h"
#include "cgd.h"
struct Main
{
Genode::Env &env;
Genode::Heap heap { env.ram(), env.rm() };
struct Factory : Block::Driver_factory
{
Genode::Env &env;
Genode::Heap &heap;
Factory(Genode::Env &env, Genode::Heap &heap)
: env(env), heap(heap) { }
Block::Driver *create() {
return new (&heap) Driver(env, heap); }
void destroy(Block::Driver *driver) {
Genode::destroy(&heap, driver); }
} factory { env, heap };
Block::Root root { env.ep(), heap, env.rm(), factory, true };
Main(Genode::Env &env) : env(env) {
env.parent().announce(env.ep().manage(root)); }
};
void Component::construct(Genode::Env &env)
{
/* XXX execute constructors of global statics */
env.exec_static_constructors();
static Main inst(env);
}

View File

@ -1,89 +0,0 @@
/**
* \brief Add random support for CGD
* \author Sebastian Sumpf
* \author Josef Soentgen
* \date 2015-02-13
*/
/*
* Copyright (C) 2015-2017 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU Affero General Public License version 3.
*/
/* Genode includes */
#include <base/log.h>
/* local rump includes */
#include <rump/env.h>
#include <util/random.h>
/* library includes */
#include <jitterentropy.h>
typedef Genode::size_t size_t;
/***********************************
** Jitter entropy for randomness **
***********************************/
struct Entropy
{
struct rand_data *ec_stir;
struct Initialization_failed : Genode::Exception { };
Entropy(Genode::Allocator &alloc)
{
jitterentropy_init(alloc);
int err = jent_entropy_init();
if (err) {
Genode::error("could not initialize jitterentropy library");
throw Initialization_failed();
}
ec_stir = jent_entropy_collector_alloc(0, 0);
if (ec_stir == nullptr) {
Genode::error("could not initialize jitterentropy library");
throw Initialization_failed();
}
}
size_t read(char *buf, size_t len)
{
int err;
if ((err = jent_read_entropy(ec_stir, buf, len) < 0)) {
Genode::error("failed to read entropy: ", err);
return 0;
}
return len;
}
};
static Genode::Constructible<Entropy> _entropy;
static bool _init_failed;
int rumpuser_getrandom_backend(void *buf, size_t buflen, int flags, Genode::size_t *retp)
{
if (!_entropy.constructed()) {
if (_init_failed) {
*retp = 0;
return -1;
}
try { _entropy.construct(Rump::env().heap()); }
catch (Entropy::Initialization_failed) {
_init_failed = true;
return -1;
}
}
*retp = _entropy->read((char *)buf, buflen);
return 0;
}

View File

@ -1,4 +0,0 @@
TARGET = rump_cgd
SRC_CC = cgd.cc main.cc random.cc
LIBS = base rump rump_cgd jitterentropy

View File

@ -21,13 +21,14 @@
#include <base/attached_rom_dataspace.h>
/**
* We define our own fs arg structure to fit all sizes, we assume that 'fspec'
* is the only valid argument and all other fields are unused.
* We define our own fs arg structure to fit all sizes used by the different
* file system implementations, we assume that 'fspec' * is the only valid
* argument and all other fields are unused.
*/
struct fs_args
{
char *fspec;
char pad[150];
char pad[164];
fs_args() { Genode::memset(pad, 0, sizeof(pad)); }
};
@ -131,7 +132,7 @@ void File_system::mount_fs()
opts |= RUMP_MNT_NOATIME;
if (root_fd == -42) {
root_fd = open("/", O_DIRECTORY | O_RDONLY);
root_fd = rump_sys_open("/", O_DIRECTORY | O_RDONLY);
if (root_fd == -1) {
Genode::error("opening root directory failed");
throw Genode::Exception();
@ -145,7 +146,7 @@ void File_system::mount_fs()
throw Genode::Exception();
}
int const mnt_fd = open(GENODE_MOUNT_DIR, O_DIRECTORY | O_RDONLY);
int const mnt_fd = rump_sys_open(GENODE_MOUNT_DIR, O_DIRECTORY | O_RDONLY);
if (mnt_fd == -1) {
Genode::error("opening mnt directory failed");
throw Genode::Exception();

View File

@ -1,5 +1,3 @@
TARGET = rump_fs
SRC_CC = main.cc file_system.cc random.cc
LIBS = base rump rump_fs