freebsd-nq/sys/kern
Konstantin Belousov aea810386d Implement mechanism to export some kernel timekeeping data to
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
2012-06-22 07:06:40 +00:00
..
bus_if.m Add a new bus method, BUS_ADJUST_RESOURCE() that is intended to be a 2011-04-29 21:36:45 +00:00
capabilities.conf Add missing system calls. 2012-05-31 19:32:37 +00:00
clock_if.m
cpufreq_if.m
device_if.m Update comments for DEVICE_PROBE() to reflect that BUS_PROBE_DEFAULT is 2011-05-24 13:22:40 +00:00
genassym.sh
imgact_aout.c Do not trash the argv[0] pointer for an a.out process on amd64. 2011-06-16 22:00:59 +00:00
imgact_elf32.c
imgact_elf64.c
imgact_elf.c Implement mechanism to export some kernel timekeeping data to 2012-06-22 07:06:40 +00:00
imgact_gzip.c Fix misuse of the kernel map in miscellaneous image activators. 2012-02-17 23:47:16 +00:00
imgact_shell.c The execution of the shebang script requires putting interpreter path, 2011-03-06 22:59:30 +00:00
inflate.c
init_main.c Extend VERBOSE_SYSINIT to also print out the name of variables passed 2012-06-01 15:42:37 +00:00
init_sysent.c Regenerate after r236361. 2012-05-31 19:34:53 +00:00
kern_acct.c - Don't log messages saying that accounting is being disabled and enabled 2012-05-02 14:25:39 +00:00
kern_alq.c
kern_clock.c Implement the DTrace sched provider. This implementation aims to be 2012-05-15 01:30:25 +00:00
kern_clocksource.c Add kern.eventtimer.activetick tunable/sysctl, specifying whether each 2012-03-13 10:21:08 +00:00
kern_condvar.c Include the associated wait channel message for context switch ktrace 2012-04-20 15:32:36 +00:00
kern_conf.c MFprojects/zfsd: 2012-05-24 11:24:44 +00:00
kern_cons.c belatedly transfer copyrights from libkern/gets.c to kern_cons.c 2011-12-17 15:50:45 +00:00
kern_context.c In order to maximize the re-usability of kernel code in user space this 2011-09-16 13:58:51 +00:00
kern_cpu.c Revert r175376 and tune cpufreq(4) frequency comparison logic instead. 2012-03-10 18:56:16 +00:00
kern_cpuset.c Add a missing curly bracket 2011-12-05 10:34:52 +00:00
kern_ctf.c Fix found places where uio_resid is truncated to int. 2012-02-21 01:05:12 +00:00
kern_descrip.c Don't check for race with close on advisory unlock (there is nothing smart we 2012-06-17 21:04:22 +00:00
kern_dtrace.c Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs. 2011-11-07 06:44:47 +00:00
kern_environment.c In order to maximize the re-usability of kernel code in user space this 2011-09-16 13:58:51 +00:00
kern_et.c Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
kern_event.c Update comment. 2012-06-14 17:32:58 +00:00
kern_exec.c Implement mechanism to export some kernel timekeeping data to 2012-06-22 07:06:40 +00:00
kern_exit.c When process exists, not only the children shall be reparented to 2012-04-02 19:35:36 +00:00
kern_fail.c Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs. 2011-11-07 06:44:47 +00:00
kern_ffclock.c Revise the sysctl handling code and restructure the hierarchy of sysctls 2011-12-01 07:19:13 +00:00
kern_fork.c The falloc() function obtains two references to newly created 'fp'. 2012-06-19 22:21:59 +00:00
kern_gzio.c Fix found places where uio_resid is truncated to int. 2012-02-21 01:05:12 +00:00
kern_hhook.c Staticize malloc types. 2011-04-13 11:28:46 +00:00
kern_idle.c On multi-core, multi-threaded PPC systems, it is important that the threads 2011-05-31 15:11:43 +00:00
kern_intr.c Export intrcnt correctly when running under 32-bit compatibility. 2012-03-09 22:30:54 +00:00
kern_jail.c Fix use-after-free in kern_jail_set() triggered e.g. by attempts 2012-05-22 19:43:20 +00:00
kern_khelp.c Use the full and proper company name for Swinburne University of Technology 2011-04-12 08:13:18 +00:00
kern_kthread.c Stop treating td_sigmask specially for the purposes of new thread 2012-05-26 20:03:47 +00:00
kern_ktr.c Use strchr() and strrchr(). 2012-01-02 12:12:10 +00:00
kern_ktrace.c Include the associated wait channel message for context switch ktrace 2012-04-20 15:32:36 +00:00
kern_linker.c If a linker file contains at least one module, but all of the modules 2012-04-12 14:49:25 +00:00
kern_lock.c Add software PMC support. 2012-03-28 20:58:30 +00:00
kern_lockf.c Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs. 2011-11-07 06:44:47 +00:00
kern_lockstat.c
kern_loginclass.c In order to maximize the re-usability of kernel code in user space this 2011-09-16 13:58:51 +00:00
kern_malloc.c - Change contigmalloc() to use the vm_paddr_t type instead of an unsigned 2012-03-01 19:58:34 +00:00
kern_mbuf.c Use ISO C99 integer types in sys/kern where possible. 2010-06-21 09:55:56 +00:00
kern_mib.c Define two new sysctl node flags: CTLFLAG_CAPRD and CTLFLAG_CAPRW, which 2011-07-17 23:05:24 +00:00
kern_module.c In order to maximize the re-usability of kernel code in user space this 2011-09-16 13:58:51 +00:00
kern_mtxpool.c
kern_mutex.c Add software PMC support. 2012-03-28 20:58:30 +00:00
kern_ntptime.c Introduce the sysclock_getsnapshot() and sysclock_snap2bintime() KPIs. The 2011-12-24 01:32:01 +00:00
kern_osd.c
kern_physio.c Account i/o done on cdevs. 2010-11-25 20:05:11 +00:00
kern_pmc.c Add software PMC support. 2012-03-28 20:58:30 +00:00
kern_poll.c Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
kern_priv.c Add an extra comment to the SDT probes definition. This allows us to get 2010-08-22 11:18:57 +00:00
kern_proc.c Fix ki_cow for compat32 binaries. 2012-05-27 05:24:53 +00:00
kern_prot.c Fix a typo. (s/nessesary/necessary/) 2012-01-08 18:48:36 +00:00
kern_racct.c Fix panic with RACCT that could occur in low memory (or out of swap) 2012-05-22 15:58:27 +00:00
kern_rangelock.c Add a rangelock implementation, intended to be used to range-locking 2012-05-30 16:06:38 +00:00
kern_rctl.c Stop treating system processes as special. This fixes panics 2012-04-17 14:31:02 +00:00
kern_resource.c Change kern.proc.rlimit sysctl to: 2012-01-22 20:25:00 +00:00
kern_rmlock.c panic: add a switch and infrastructure for stopping other CPUs in SMP case 2011-12-11 21:02:01 +00:00
kern_rwlock.c Add software PMC support. 2012-03-28 20:58:30 +00:00
kern_sdt.c Instead of only iterating over the set of known SDT probes when sdt.ko is 2012-03-27 15:07:43 +00:00
kern_sema.c
kern_shutdown.c free wdog_kern_pat calls in post-panic paths from under SW_WATCHDOG 2012-06-03 08:01:12 +00:00
kern_sig.c Add thread-private flag to indicate that error value is already placed 2012-04-12 10:48:43 +00:00
kern_switch.c critical_exit: ignore td_owepreempt if kdb_active is set 2011-12-04 21:27:41 +00:00
kern_sx.c Add software PMC support. 2012-03-28 20:58:30 +00:00
kern_synch.c Implement the DTrace sched provider. This implementation aims to be 2012-05-15 01:30:25 +00:00
kern_syscalls.c Call chainevh callback when we are invoked with neither MOD_LOAD nor 2010-10-21 20:31:50 +00:00
kern_sysctl.c Handle spurious page faults that may occur in no-fault sections of the 2012-03-22 04:52:51 +00:00
kern_tc.c Implement mechanism to export some kernel timekeeping data to 2012-06-22 07:06:40 +00:00
kern_thr.c Stop treating td_sigmask specially for the purposes of new thread 2012-05-26 20:03:47 +00:00
kern_thread.c Add a rangelock implementation, intended to be used to range-locking 2012-05-30 16:06:38 +00:00
kern_time.c In order to maximize the re-usability of kernel code in user space this 2011-09-16 13:58:51 +00:00
kern_timeout.c Move the code to call the callout callback into the helper function 2012-05-03 20:00:30 +00:00
kern_umtx.c Fix some style bugs introduced in a previous commit (r233045) 2012-04-14 23:53:31 +00:00
kern_uuid.c Convert all users of IF_ADDR_LOCK to use new locking macros that specify 2012-01-05 19:00:36 +00:00
kern_xxx.c
ksched.c Use p4prio_to_tsprio to calculate TS priority instead of using 2011-06-07 02:50:14 +00:00
link_elf_obj.c Fix found places where uio_resid is truncated to int. 2012-02-21 01:05:12 +00:00
link_elf.c Fix found places where uio_resid is truncated to int. 2012-02-21 01:05:12 +00:00
linker_if.m
Make.tags.inc Update tags build script 2011-07-10 00:53:04 +00:00
Makefile Continue to introduce Capsicum Capability Mode support: 2011-03-01 13:28:27 +00:00
makesyscalls.sh - Add the ffclock_getcounter(), ffclock_getestimate() and ffclock_setestimate() 2011-11-21 01:26:10 +00:00
md4c.c
md5c.c
p1003_1b.c In order to maximize the re-usability of kernel code in user space this 2011-09-16 13:58:51 +00:00
posix4_mib.c Define two new sysctl node flags: CTLFLAG_CAPRD and CTLFLAG_CAPRW, which 2011-07-17 23:05:24 +00:00
sched_4bsd.c Fix typo in function name SDT_PROBE4 and unbreak 4BSD UP. 2012-05-15 10:58:17 +00:00
sched_ule.c Let us manage differences of Book-E PowerPC variations i.e. vendor / 2012-05-27 10:25:20 +00:00
serdev_if.m
stack_protector.c
subr_acl_nfs4.c Fix bug where NFSv4 ACL enforcement code wouldn't unconditionally 2012-04-17 14:54:00 +00:00
subr_acl_posix1e.c Add module load/unload stubs. 2012-03-13 20:27:48 +00:00
subr_autoconf.c Retire PCONFIG and leave the priority of thread0 alone when waiting for 2011-01-06 22:09:37 +00:00
subr_blist.c - Fix typos s/(more|less) then|\1 than/ 2011-12-03 15:41:37 +00:00
subr_bufring.c
subr_bus.c device_add_child: protect against child device with no driver but fixed unit number 2012-05-25 07:32:26 +00:00
subr_clock.c Improve style and wording of comments and sysctl descriptions [1]. 2011-01-09 14:34:56 +00:00
subr_devstat.c Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
subr_disk.c Correct bioq_disksort so that bioq_insert_tail() offers barrier semantic. 2010-09-02 19:40:28 +00:00
subr_dummy_vdso_tc.c Implement mechanism to export some kernel timekeeping data to 2012-06-22 07:06:40 +00:00
subr_eventhandler.c
subr_fattime.c Use ISO C99 integer types in sys/kern where possible. 2010-06-21 09:55:56 +00:00
subr_firmware.c Use strdup() on the name (and free it when it's done) so non-static names 2012-04-13 04:22:42 +00:00
subr_hash.c Convert panic()s to KASSERT()s. This is an optimisation for 2012-01-23 16:31:46 +00:00
subr_hints.c Use strchr() and strrchr(). 2012-01-02 12:12:10 +00:00
subr_kdb.c - Extend the KDB interface to add a per-debugger callback to print a 2012-04-12 17:43:59 +00:00
subr_kobj.c As it turns out, r186347 actually is insufficient to avoid the use of the 2011-11-15 20:11:03 +00:00
subr_lock.c panic: add a switch and infrastructure for stopping other CPUs in SMP case 2011-12-11 21:02:01 +00:00
subr_log.c Add kqueue support to /dev/klog. 2012-02-01 14:34:52 +00:00
subr_mbpool.c
subr_mchain.c - Use uint8_t for the variable x and spell the size of the variable 2012-02-06 06:03:16 +00:00
subr_module.c Provide convenience function for obtaining MODINFO_ADDR and MODINFO_SIZE 2011-02-09 19:08:21 +00:00
subr_msgbuf.c - Clean up timestamps in msgbuf code. The timestamps should now be 2012-03-19 00:36:32 +00:00
subr_param.c Modestly increase the maximum allowed size of the kmem map on i386. 2011-03-23 16:38:29 +00:00
subr_pcpu.c Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs. 2011-11-07 06:44:47 +00:00
subr_power.c
subr_prf.c Fix double vision syndrome (read: double output) when in the 2011-10-16 14:16:46 +00:00
subr_prof.c Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
subr_rman.c Unlock in the error path to prevent a lock leak. 2012-05-31 17:27:05 +00:00
subr_rtc.c Core structure and functions to support a feed-forward clock within the kernel. 2011-11-19 14:10:16 +00:00
subr_sbuf.c r222015 introduced a new assertion that the size of a fixed-length sbuf 2011-08-19 08:29:10 +00:00
subr_scanf.c Xen netback driver rewrite. 2012-01-26 16:35:09 +00:00
subr_sglist.c
subr_sleepqueue.c Implement the DTrace sched provider. This implementation aims to be 2012-05-15 01:30:25 +00:00
subr_smp.c Another fixe for r236772. 2012-06-11 18:47:26 +00:00
subr_stack.c Constify stack argument for functions that don't modify it. 2011-11-16 19:06:55 +00:00
subr_syscall.c Assert that TDP_NOFAULTING and TDP_NOSPEEPING thread flags do not leak 2012-05-30 13:44:42 +00:00
subr_taskqueue.c Ensure that ta_pending doesn't overflow u_short by capping its value at USHRT_MAX. 2011-09-15 08:42:06 +00:00
subr_trap.c Remove redundant include. 2012-06-10 20:24:01 +00:00
subr_turnstile.c Implement the DTrace sched provider. This implementation aims to be 2012-05-15 01:30:25 +00:00
subr_uio.c Handle spurious page faults that may occur in no-fault sections of the 2012-03-22 04:52:51 +00:00
subr_unit.c Fix typos - remove duplicate "the". 2011-02-21 09:01:34 +00:00
subr_witness.c Fix old panic when BPF consumer attaches to destroying interface. 2012-05-21 22:17:29 +00:00
sys_capability.c Style: move opt_*.h includes in the proper place. 2012-06-10 20:22:10 +00:00
sys_generic.c The variable 'error' in sys_poll() is initialized in declaration to value 2012-06-17 13:03:50 +00:00
sys_pipe.c - Implement pipe2 syscall for Linuxulator. This syscall appeared in 2.6.27 2012-04-16 21:22:02 +00:00
sys_procdesc.c Check proper flag (PDF_DAEMON, not PD_DAEMON) when deciding if the process 2012-06-19 22:23:59 +00:00
sys_process.c Allow the parent to gather the exit status of the children reparented 2012-02-23 11:50:23 +00:00
sys_socket.c Add the fo_chown and fo_chmod methods to struct fileops and use them 2011-08-16 20:07:47 +00:00
syscalls.c Regenerate system call tables. 2012-05-25 21:52:57 +00:00
syscalls.master Remove use of non-ISO-C integer types from system call tables. 2012-05-25 21:50:48 +00:00
systrace_args.c Regenerate system call tables. 2012-05-25 21:52:57 +00:00
sysv_ipc.c
sysv_msg.c In order to maximize the re-usability of kernel code in user space this 2011-09-16 13:58:51 +00:00
sysv_sem.c In order to maximize the re-usability of kernel code in user space this 2011-09-16 13:58:51 +00:00
sysv_shm.c Close a race due to dropping of the map lock between creating a map entry 2012-02-19 00:28:49 +00:00
tty_compat.c
tty_info.c Fix whitespace inconsistencies in TTY code. 2012-02-06 18:15:46 +00:00
tty_inq.c Use strchr() and strrchr(). 2012-01-02 12:12:10 +00:00
tty_outq.c Fix whitespace inconsistencies in the TTY layer and its drivers owned by me. 2011-06-26 18:26:20 +00:00
tty_pts.c In order to maximize the re-usability of kernel code in user space this 2011-09-16 13:58:51 +00:00
tty_tty.c Finish r210923, 210926. Mark some devices as eternal. 2011-01-04 10:59:38 +00:00
tty_ttydisc.c Fix found places where uio_resid is truncated to int. 2012-02-21 01:05:12 +00:00
tty.c In tty_makedev() the following construction: 2012-06-18 07:34:38 +00:00
uipc_accf.c
uipc_cow.c Add some FEATURE macros for various features (AUDIT/CAM/IPC/KTR/MAC/NFS/NTP/ 2011-02-25 10:11:01 +00:00
uipc_debug.c
uipc_domain.c Catch up with r195837 (2.5 years ago) which renamed net_add_domain() to domain_add(). 2012-02-23 17:47:19 +00:00
uipc_mbuf2.c Use ISO C99 integer types in sys/kern where possible. 2010-06-21 09:55:56 +00:00
uipc_mbuf.c Fix found places where uio_resid is truncated to int. 2012-02-21 01:05:12 +00:00
uipc_mqueue.c Remove unused thread argument to vrecycle(). 2012-04-23 14:10:34 +00:00
uipc_sem.c In order to maximize the re-usability of kernel code in user space this 2011-09-16 13:58:51 +00:00
uipc_shm.c Export some more useful info about shared memory objects to userland 2012-04-01 18:22:48 +00:00
uipc_sockbuf.c Document a large number of currently undocumented sysctls. While here 2011-12-13 00:38:50 +00:00
uipc_socket.c - Remove redundant call to pr_ctloutput from code that handles SO_SETFIB. 2012-04-03 18:38:00 +00:00
uipc_syscalls.c Style fixes and simplifications. 2012-06-11 16:08:03 +00:00
uipc_usrreq.c When checking if file descriptor number is valid, explicitely check for 'fd' 2012-06-13 22:12:10 +00:00
vfs_acl.c In order to maximize the re-usability of kernel code in user space this 2011-09-16 13:58:51 +00:00
vfs_aio.c Add 32-bit compat code for AIO kevent flags introduced in revision 230857. 2012-02-05 04:49:31 +00:00
vfs_bio.c Fix typo [1]. Use commas to separate flag printouts, in style with 2012-06-02 19:39:12 +00:00
vfs_cache.c Post r230394, the Lookup RPC counts for both NFS clients increased 2012-03-03 01:06:54 +00:00
vfs_cluster.c Unbreak detection of the async mode for clustered writes after r231075. 2012-02-08 15:07:19 +00:00
vfs_default.c When synchronously syncing a device (MNT_WAIT), wait for buffers 2012-06-09 22:26:53 +00:00
vfs_export.c
vfs_extattr.c Fix found places where uio_resid is truncated to int. 2012-02-21 01:05:12 +00:00
vfs_hash.c
vfs_init.c Modify vfs_register() to use a hash calculation 2011-09-13 21:01:26 +00:00
vfs_lookup.c Avoid double-unlock or double unreference for ndp->ni_dvp when the vnode dp 2012-01-01 18:45:59 +00:00
vfs_mount.c This change creates a new list of active vnodes associated with 2012-04-20 06:50:44 +00:00
vfs_mountroot.c Fix found places where uio_resid is truncated to int. 2012-02-21 01:05:12 +00:00
vfs_subr.c free wdog_kern_pat calls in post-panic paths from under SW_WATCHDOG 2012-06-03 08:01:12 +00:00
vfs_syscalls.c Further refine the implementation of POSIX_FADV_NOREUSE. 2012-06-19 18:42:24 +00:00
vfs_vnops.c Fix locking for f_offset, vn_read() and vn_write() cases only, for now. 2012-06-21 09:19:41 +00:00
vnode_if.src Introduce VOP_UNP_BIND(), VOP_UNP_CONNECT(), and VOP_UNP_DETACH() 2012-02-29 21:38:31 +00:00