7b36a08108
usermode, using shared page. The structures and functions have vdso prefix, to indicate the intended location of the code in some future. The versioned per-algorithm data is exported in the format of struct vdso_timehands, which mostly repeats the content of in-kernel struct timehands. Usermode reading of the structure can be lockless. Compatibility export for 32bit processes on 64bit host is also provided. Kernel also provides usermode with indication about currently used timecounter, so that libc can fall back to syscall if configured timecounter is unknown to usermode code. The shared data updates are initiated both from the tc_windup(), where a fast task is queued to do the update, and from sysctl handlers which change timecounter. A manual override switch kern.timecounter.fast_gettime allows to turn off the mechanism. Only x86 architectures export the real algorithm data, and there, only for tsc timecounter. HPET counters page could be exported as well, but I prefer to not further glue the kernel and libc ABI there until proper vdso-based solution is developed. Minimal stubs neccessary for non-x86 architectures to still compile are provided. Discussed with: bde Reviewed by: jhb Tested by: flo MFC after: 1 month
125 lines
4.3 KiB
Plaintext
125 lines
4.3 KiB
Plaintext
# This file tells config what files go into building a kernel,
|
|
# files marked standard are always included.
|
|
#
|
|
# Copyright (c) 2001, 2004-2005, Juniper Networks, Inc.
|
|
# All rights reserved.
|
|
# JNPR: files.mips,v 1.11 2007/08/09 12:25:35 katta
|
|
#
|
|
# ----------------------------------------------------------------------
|
|
# Phase 2
|
|
# ----------------------------------------------------------------------
|
|
# This file tells config what files go into building a kernel,
|
|
# files marked standard are always included.
|
|
#
|
|
# Copyright (c) 2001, 2004-2005, Juniper Networks, Inc.
|
|
# All rights reserved.
|
|
# JNPR: files.mips,v 1.11 2007/08/09 12:25:35 katta
|
|
# $FreeBSD$
|
|
#
|
|
# ----------------------------------------------------------------------
|
|
# Phase 2
|
|
# ----------------------------------------------------------------------
|
|
mips/mips/machdep.c standard
|
|
mips/mips/mp_machdep.c optional smp
|
|
mips/mips/mpboot.S optional smp
|
|
# ----------------------------------------------------------------------
|
|
# Phase 3
|
|
# ----------------------------------------------------------------------
|
|
mips/mips/autoconf.c standard
|
|
mips/mips/cpu.c standard
|
|
mips/mips/elf_machdep.c standard
|
|
mips/mips/exception.S standard
|
|
mips/mips/gdb_machdep.c standard
|
|
mips/mips/pmap.c standard
|
|
mips/mips/trap.c standard
|
|
mips/mips/vm_machdep.c standard
|
|
# ----------------------------------------------------------------------
|
|
# Phase 4
|
|
# ----------------------------------------------------------------------
|
|
# ----------------------------------------------------------------------
|
|
# Phase 5
|
|
# ----------------------------------------------------------------------
|
|
mips/mips/fp.S standard
|
|
mips/mips/pm_machdep.c standard
|
|
mips/mips/swtch.S standard
|
|
mips/mips/tlb.c standard
|
|
|
|
mips/mips/bus_space_generic.c standard
|
|
mips/mips/busdma_machdep.c standard
|
|
mips/mips/cache.c standard
|
|
mips/mips/cache_mipsNN.c standard
|
|
mips/mips/db_disasm.c optional ddb
|
|
mips/mips/db_interface.c optional ddb
|
|
mips/mips/db_trace.c optional ddb
|
|
mips/mips/dump_machdep.c standard
|
|
mips/mips/in_cksum.c optional inet | inet6
|
|
mips/mips/locore.S standard no-obj
|
|
mips/mips/minidump_machdep.c standard
|
|
mips/mips/mem.c optional mem
|
|
mips/mips/libkern_machdep.c standard
|
|
mips/mips/nexus.c standard
|
|
mips/mips/stack_machdep.c optional ddb | stack
|
|
mips/mips/support.S standard
|
|
mips/mips/sys_machdep.c standard
|
|
mips/mips/swtch.S standard
|
|
mips/mips/uio_machdep.c standard
|
|
mips/mips/uma_machdep.c standard
|
|
crypto/blowfish/bf_enc.c optional crypto | ipsec
|
|
crypto/des/des_enc.c optional crypto | ipsec | netsmb
|
|
geom/geom_bsd.c optional geom_bsd
|
|
geom/geom_bsd_enc.c optional geom_bsd
|
|
geom/geom_mbr.c optional geom_mbr
|
|
geom/geom_mbr_enc.c optional geom_mbr
|
|
libkern/ashldi3.c standard
|
|
libkern/ashrdi3.c standard
|
|
libkern/cmpdi2.c standard
|
|
libkern/ffsl.c standard
|
|
libkern/fls.c standard
|
|
libkern/flsl.c standard
|
|
libkern/lshrdi3.c standard
|
|
libkern/memchr.c optional fdt
|
|
libkern/memmove.c standard
|
|
libkern/ucmpdi2.c standard
|
|
|
|
#XXX: We can't use these versions, as strcmp.c is included conf/files
|
|
#libkern/mips/strcmp.S standard
|
|
#libkern/mips/strncmp.S standard
|
|
|
|
cddl/compat/opensolaris/kern/opensolaris_atomic.c optional zfs compile-with "${ZFS_C}"
|
|
compat/freebsd32/freebsd32_ioctl.c optional compat_freebsd32
|
|
compat/freebsd32/freebsd32_misc.c optional compat_freebsd32
|
|
compat/freebsd32/freebsd32_syscalls.c optional compat_freebsd32
|
|
compat/freebsd32/freebsd32_sysent.c optional compat_freebsd32
|
|
kern/imgact_elf32.c optional compat_freebsd32
|
|
kern/subr_dummy_vdso_tc.c standard
|
|
mips/mips/freebsd32_machdep.c optional compat_freebsd32
|
|
|
|
kern/kern_clocksource.c standard
|
|
kern/link_elf_obj.c standard
|
|
|
|
dev/cfe/cfe_api.c optional cfe
|
|
dev/cfe/cfe_console.c optional cfe_console
|
|
dev/cfe/cfe_env.c optional cfe_env
|
|
#dev/cfe/cfe_resource.c optional cfe # not yet needed
|
|
|
|
dev/siba/siba.c optional siba
|
|
dev/siba/siba_cc.c optional siba
|
|
dev/siba/siba_core.c optional siba
|
|
dev/siba/siba_pcib.c optional siba pci
|
|
#mips/sentry5/siba_mips.c optional siba # not yet
|
|
|
|
dev/hwpmc/hwpmc_mips.c optional hwpmc
|
|
|
|
dev/rt/if_rt.c optional rt
|
|
dev/nvram2env/nvram2env.c optional nvram2env
|
|
|
|
dev/ofw/openfirm.c optional fdt
|
|
dev/ofw/openfirmio.c optional fdt
|
|
dev/ofw/ofw_bus_if.m optional fdt
|
|
dev/ofw/ofw_if.m optional fdt
|
|
dev/ofw/ofw_bus_subr.c optional fdt
|
|
dev/ofw/ofw_fdt.c optional fdt
|
|
|
|
dev/fdt/fdt_mips.c optional fdt
|
|
|