freebsd-dev/sys/kern
Ian Lepore 28315e27a7 Implement a mechanism for making changes in the kernel<->driver PPS
interface without breaking ABI or API compatibility with existing drivers.

The existing data structures used to communicate between the kernel and
driver portions of PPS processing contain no spare/padding fields and no
flags field or other straightforward mechanism for communicating changes
in the structures or behaviors of the code.  This makes it difficult to
MFC new features added to the PPS facility.  ABI compatibility is
important; out-of-tree drivers in module form are known to exist.  (Note
that the existing api_version field in the pps_params structure must
contain the value mandated by RFC 2783 and any RFCs that come along after.)

These changes introduce a pair of abi-version fields which are filled in
by the driver and the kernel respectively to indicate the interface
version.  The driver sets its version field before calling the new
pps_init_abi() function.  That lets the kernel know how much of the
pps_state structure is understood by the driver and it can avoid using
newer fields at the end of the structure that it knows about if the driver
is a lower version.  The kernel fills in its version field during the init
call, letting the driver know what features and data the kernel supports.

To implement the new version information in a way that is backwards
compatible with code from before these changes, the high bit of the
lightly-used 'kcmode' field is repurposed as a flag bit that indicates the
driver is aware of the abi versioning scheme.  Basically if this bit is
clear that indicates a "version 0" driver and if it is set the driver_abi
field indicates the version.

These changes also move the recently-added 'mtx' field of pps_state from
the middle to the end of the structure, and make the kernel code that uses
this field conditional on the driver being abi version 1 or higher.  It
changes the only driver currently supplying the mtx field, usb_serial, to
use pps_init_abi().

Reviewed by:	hselasky@
2015-05-04 17:59:39 +00:00
..
bus_if.m Add a bus method to fetch the VM domain for the given device/bus. 2014-10-09 05:33:25 +00:00
capabilities.conf Add futimens and utimensat system calls. 2015-01-23 21:07:08 +00:00
clock_if.m
cpufreq_if.m
device_if.m Change the default method for device_quiesce() to return 0 instead of 2015-01-08 21:46:28 +00:00
genassym.sh
imgact_aout.c
imgact_binmisc.c Allow multiple image activators to run on the same execution by changing 2014-09-04 21:31:25 +00:00
imgact_elf32.c
imgact_elf64.c
imgact_elf.c Add kern.racct.enable tunable and RACCT_DISABLED config option. 2015-04-29 10:23:02 +00:00
imgact_gzip.c Add a mmap flag (MAP_32BIT) on 64-bit platforms to request that a mapping use 2013-09-09 18:11:59 +00:00
imgact_shell.c Allow multiple image activators to run on the same execution by changing 2014-09-04 21:31:25 +00:00
inflate.c
init_main.c Add "GELI Passphrase:" prompt to boot loader. 2015-04-16 20:53:15 +00:00
init_sysent.c Regen. 2015-04-18 21:50:53 +00:00
kern_acct.c
kern_alq.c Prevent alq from panic when the invalid alq_file path specified. 2014-04-05 16:54:47 +00:00
kern_clock.c Initialize ticks so that it wraps 10 minutes after boot to increase the 2015-02-05 01:43:21 +00:00
kern_clocksource.c Add ddb command 'show clocksource' to display state of the per-cpu 2015-02-04 14:49:47 +00:00
kern_condvar.c Revert for r277213: 2015-01-22 11:12:42 +00:00
kern_conf.c Fix for out of order device destruction notifications when using the 2015-03-22 13:11:56 +00:00
kern_cons.c Include the nulterm byte in the sysctl string. 2015-03-15 00:36:08 +00:00
kern_context.c
kern_cpu.c Pull in r267961 and r267973 again. Fix for issues reported will follow. 2014-06-28 03:56:17 +00:00
kern_cpuset.c Reject attempts to read the cpuset mask of a negative domain ID. 2015-01-08 19:11:14 +00:00
kern_ctf.c Don't specify a resid parameter if we're just going to ignore it. Instead, 2015-02-20 20:49:00 +00:00
kern_descrip.c Add kern.racct.enable tunable and RACCT_DISABLED config option. 2015-04-29 10:23:02 +00:00
kern_dtrace.c Commit the rest of the changes that were intended to be part of r266826. 2014-05-29 01:42:22 +00:00
kern_dump.c Factor out duplicated code from dumpsys() on each architecture into generic 2015-01-07 01:01:39 +00:00
kern_environment.c Test if 'env' is NULL before doing memset() and strlen(), 2014-10-23 18:23:50 +00:00
kern_et.c Trivial change / forced-commit to document prior change that slipped in 2015-03-16 19:29:19 +00:00
kern_event.c prevent doing filter ops locking for staticly compiled filter ops... 2014-11-16 01:18:41 +00:00
kern_exec.c Handle incorrect ELF images specifying size for PT_GNU_STACK not being 2015-04-23 11:27:21 +00:00
kern_exit.c Add kern.racct.enable tunable and RACCT_DISABLED config option. 2015-04-29 10:23:02 +00:00
kern_fail.c Use a regular sbuf + SYSCTL_OUT() rather than sbuf_new_for_sysctl() with 2015-03-16 19:18:45 +00:00
kern_ffclock.c The SYSCTL data pointers can come from userspace and must not be 2014-10-28 12:00:39 +00:00
kern_fork.c fd: remove filedesc argument from fdclose 2015-04-11 15:40:28 +00:00
kern_gzio.c Move zlib.c from net to libkern. 2015-04-22 14:38:58 +00:00
kern_hhook.c
kern_idle.c
kern_intr.c Remove support for Xen PV domU kernels. Support for HVM domU kernels 2015-04-30 15:48:48 +00:00
kern_jail.c Add kern.racct.enable tunable and RACCT_DISABLED config option. 2015-04-29 10:23:02 +00:00
kern_khelp.c
kern_kthread.c The umtx_lock mutex is used by top-half of the kernel, but is 2015-02-28 04:19:02 +00:00
kern_ktr.c Drop KTR records when we're in the debugger so that the debugger isn't 2014-07-02 22:13:07 +00:00
kern_ktrace.c Pull in r267961 and r267973 again. Fix for issues reported will follow. 2014-06-28 03:56:17 +00:00
kern_linker.c Const poison in a few places to ensure we don't modify things 2014-12-03 22:14:13 +00:00
kern_lock.c Revert for r277213: 2015-01-22 11:12:42 +00:00
kern_lockf.c Improve style and fix a possible use-after-free case introduced in r268384 2015-01-10 06:48:35 +00:00
kern_lockstat.c - For kernel compiled only with KDTRACE_HOOKS and not any lock debugging 2013-11-25 07:38:45 +00:00
kern_loginclass.c cred: add proc_set_cred helper 2015-03-16 00:10:03 +00:00
kern_malloc.c Set the SBUF_INCLUDENUL flag in sbuf_new_for_sysctl() so that sysctl 2015-03-14 17:08:28 +00:00
kern_mbuf.c Fix integer truncation bug in malloc(9) 2015-04-01 12:42:26 +00:00
kern_mib.c Allow the kern.osrelease and kern.osreldate sysctl values to be set in a 2015-02-27 16:28:55 +00:00
kern_module.c
kern_mtxpool.c Garbage collect mtxpool_lockbuilder, the mutex pool historically used 2014-05-02 07:57:40 +00:00
kern_mutex.c Add _NEW flag to mtx(9), sx(9), rmlock(9) and rwlock(9). 2014-12-13 21:00:10 +00:00
kern_ntptime.c Pull in r267961 and r267973 again. Fix for issues reported will follow. 2014-06-28 03:56:17 +00:00
kern_osd.c Pull in r267961 and r267973 again. Fix for issues reported will follow. 2014-06-28 03:56:17 +00:00
kern_physio.c Rewrite physio() to not allocate pbufs for unmapped I/O. 2015-04-21 10:55:53 +00:00
kern_pmc.c Pull in r267961 and r267973 again. Fix for issues reported will follow. 2014-06-28 03:56:17 +00:00
kern_poll.c When a kernel has DEVICE_POLLING turned on but no drivers have 2015-04-14 14:22:34 +00:00
kern_priv.c Pull in r267961 and r267973 again. Fix for issues reported will follow. 2014-06-28 03:56:17 +00:00
kern_proc.c Make setproctitle(3) work in Capsicum capability mode. This makes 2015-04-27 11:18:16 +00:00
kern_procctl.c Reparenting done by debugger attach can leave reaper without direct 2015-02-15 08:44:30 +00:00
kern_prot.c cred: add proc_set_cred_init helper 2015-03-21 20:24:54 +00:00
kern_racct.c Add kern.racct.enable tunable and RACCT_DISABLED config option. 2015-04-29 10:23:02 +00:00
kern_rangelock.c Change the queue of locks in kern_rangelock.c from holding lock requests in 2013-08-15 20:19:17 +00:00
kern_rctl.c Add kern.racct.enable tunable and RACCT_DISABLED config option. 2015-04-29 10:23:02 +00:00
kern_resource.c Implement support for binary to requesting specific stack size for the 2015-04-15 08:13:53 +00:00
kern_rmlock.c Add _NEW flag to mtx(9), sx(9), rmlock(9) and rwlock(9). 2014-12-13 21:00:10 +00:00
kern_rwlock.c Add _NEW flag to mtx(9), sx(9), rmlock(9) and rwlock(9). 2014-12-13 21:00:10 +00:00
kern_sdt.c Print a backtrace if the SDT(9) stub gets called so that there's at least 2014-02-22 01:41:45 +00:00
kern_sema.c
kern_sharedpage.c Remove the deprecated VM_ALLOC_RETRY flag for the vm_page_grab(9). 2013-08-22 07:39:53 +00:00
kern_shutdown.c Remove a stale reference to the stop_scheduler_on_panic tunable, which 2015-05-02 00:27:58 +00:00
kern_sig.c Disable coredump_devctl because it could lead to leaking paths to 2015-03-24 02:17:17 +00:00
kern_switch.c Revert for r277213: 2015-01-22 11:12:42 +00:00
kern_sx.c Add _NEW flag to mtx(9), sx(9), rmlock(9) and rwlock(9). 2014-12-13 21:00:10 +00:00
kern_synch.c Remove support for Xen PV domU kernels. Support for HVM domU kernels 2015-04-30 15:48:48 +00:00
kern_syscalls.c Fix up module unload for syscall_module_handler consumers. 2014-11-01 22:36:40 +00:00
kern_sysctl.c Implement a simple OID number garbage collector. Given the increasing 2015-03-25 08:55:34 +00:00
kern_tc.c Implement a mechanism for making changes in the kernel<->driver PPS 2015-05-04 17:59:39 +00:00
kern_thr.c Add kern.racct.enable tunable and RACCT_DISABLED config option. 2015-04-29 10:23:02 +00:00
kern_thread.c Initialize td_sel in the thread_init(). Struct thread is not zeroed 2015-04-18 17:21:12 +00:00
kern_time.c Fix an off by one in ppsratecheck(). If you asked for N=1 you'd get one, 2015-01-11 20:48:29 +00:00
kern_timeout.c Fix my stupid restoral of old code.. must be c_iflags now. 2015-04-14 00:02:39 +00:00
kern_umtx.c Clean up some cosmetic nits in kern_umtx.c, found during recent work 2015-03-28 21:21:40 +00:00
kern_uuid.c Fix a bug in be_uuid_dec(); it called le16dec() instead of be16dec(), 2014-02-13 22:24:36 +00:00
kern_xxx.c
ksched.c
link_elf_obj.c Move zlib.c from net to libkern. 2015-04-22 14:38:58 +00:00
link_elf.c Move zlib.c from net to libkern. 2015-04-22 14:38:58 +00:00
linker_if.m
Make.tags.inc Remove AppleTalk support. 2014-03-14 06:29:43 +00:00
Makefile
makesyscalls.sh Fix syscalls that can be loaded as kernel modules - they were not given 2013-12-15 23:19:42 +00:00
md4c.c
md5c.c
p1003_1b.c
posix4_mib.c
sched_4bsd.c Add kern.racct.enable tunable and RACCT_DISABLED config option. 2015-04-29 10:23:02 +00:00
sched_ule.c Use sbuf_new_for_sysctl() instead of plain sbuf_new() to ensure sysctl 2015-03-14 18:42:30 +00:00
serdev_if.m
stack_protector.c
subr_acl_nfs4.c
subr_acl_posix1e.c
subr_autoconf.c
subr_blist.c
subr_bufring.c
subr_bus_dma.c Add bus_dmamap_load_ma() function to load map with the array of 2013-10-27 21:39:16 +00:00
subr_bus.c Fix handling of BUS_PROBE_NOWILDCARD in 'device_probe_child()'. 2015-04-15 16:22:05 +00:00
subr_busdma_bufalloc.c Fix integer truncation bug in malloc(9) 2015-04-01 12:42:26 +00:00
subr_capability.c Remove duplicated includes. 2014-06-26 13:57:44 +00:00
subr_clock.c For architectures where time_t is wide enough, in particular, 64bit 2014-12-12 09:37:18 +00:00
subr_counter.c Create two public UMA_ZONE_PCPU zones: 64 bit sized and pointer sized. 2014-02-10 19:59:46 +00:00
subr_devstat.c Fix multiple incorrect SYSCTL arguments in the kernel: 2014-10-21 07:31:21 +00:00
subr_disk.c
subr_dnvlist.c Remove the nvlist_.*[fv] functions. 2015-04-29 22:57:04 +00:00
subr_dummy_vdso_tc.c Update the vdso timehands only via tc_windup(). 2015-01-20 03:54:30 +00:00
subr_eventhandler.c
subr_fattime.c Where appropriate, use the modern terms for the one true time base 2014-12-21 05:07:11 +00:00
subr_firmware.c
subr_hash.c
subr_hints.c Add a new device control utility for new-bus devices called devctl. This 2015-02-06 16:09:01 +00:00
subr_kdb.c Fix multiple incorrect SYSCTL arguments in the kernel: 2014-10-21 07:31:21 +00:00
subr_kobj.c
subr_lock.c Add _NEW flag to mtx(9), sx(9), rmlock(9) and rwlock(9). 2014-12-13 21:00:10 +00:00
subr_log.c
subr_mbpool.c All mbuf external free functions never fail, so let them be void. 2014-07-11 13:58:48 +00:00
subr_mchain.c
subr_module.c Turns out, this isn't only called from i386... 2014-12-30 02:39:47 +00:00
subr_msgbuf.c Pull in r267961 and r267973 again. Fix for issues reported will follow. 2014-06-28 03:56:17 +00:00
subr_nvlist.c nv_malloc can fail in userland. 2015-05-02 18:12:34 +00:00
subr_nvpair.c Introduce the NV_FLAG_NO_UNIQUE flag. When set, it allows to store 2015-05-02 18:03:47 +00:00
subr_param.c Remove support for Xen PV domU kernels. Support for HVM domU kernels 2015-04-30 15:48:48 +00:00
subr_pcpu.c Create two public UMA_ZONE_PCPU zones: 64 bit sized and pointer sized. 2014-02-10 19:59:46 +00:00
subr_pctrie.c
subr_power.c
subr_prf.c Always send log(9) messages to the message buffer. 2015-04-20 20:03:26 +00:00
subr_prof.c The process spin lock currently has the following distinct uses: 2014-11-26 14:10:00 +00:00
subr_rman.c Nuke the never-used RF_TIMESHARE feature, reducing the complexity of the 2014-07-16 22:18:19 +00:00
subr_rtc.c
subr_sbuf.c The minimum sbuf buffer size is 2 bytes (a byte plus a nulterm), assert that. 2015-03-17 21:00:31 +00:00
subr_scanf.c
subr_sfbuf.c Move KASSERT into locked region. 2014-08-11 15:06:07 +00:00
subr_sglist.c Fix a couple of panics when detaching from a cxgbe/cxl interface that was 2015-01-26 16:26:28 +00:00
subr_sleepqueue.c Revert for r277213: 2015-01-22 11:12:42 +00:00
subr_smp.c Pull in r267961 and r267973 again. Fix for issues reported will follow. 2014-06-28 03:56:17 +00:00
subr_stack.c
subr_syscall.c Thread waiting for the vfork(2)-ed child to exec or exit, must allow 2014-12-08 16:18:05 +00:00
subr_taskqueue.c Remove taskqueue_start_threads_pinned(); there's noa generic cpuset version of this. 2015-02-25 21:59:03 +00:00
subr_terminal.c vt(4): Adjust the cursor position after changing the window size 2014-11-01 17:05:15 +00:00
subr_trap.c Remove support for Xen PV domU kernels. Support for HVM domU kernels 2015-04-30 15:48:48 +00:00
subr_turnstile.c dtrace sdt: remove the ugly sname parameter of SDT_PROBE_DEFINE 2013-11-26 08:46:27 +00:00
subr_uio.c Add type qualifier volatile to the base (userspace) address argument 2014-10-31 17:43:21 +00:00
subr_unit.c Move the definition of the struct unrhdr into a separate header file, 2013-08-30 07:37:45 +00:00
subr_vmem.c Add vmem locking to r281026. 2015-04-05 14:17:26 +00:00
subr_witness.c The umtx_lock mutex is used by top-half of the kernel, but is 2015-02-28 04:19:02 +00:00
sys_capability.c cred: add proc_set_cred helper 2015-03-16 00:10:03 +00:00
sys_generic.c The lseek(2), mmap(2), truncate(2), ftruncate(2), pread(2), and 2015-04-18 21:50:13 +00:00
sys_pipe.c fd: remove filedesc argument from fdclose 2015-04-11 15:40:28 +00:00
sys_procdesc.c Add a new fo_fill_kinfo fileops method to add type-specific information to 2014-09-22 16:20:47 +00:00
sys_process.c Add a facility for non-init process to declare itself the reaper of 2014-12-15 12:01:42 +00:00
sys_socket.c In preparation of merging projects/sendfile, transform bare access to 2014-11-12 09:57:15 +00:00
syscalls.c Regen. 2015-04-18 21:50:53 +00:00
syscalls.master The lseek(2), mmap(2), truncate(2), ftruncate(2), pread(2), and 2015-04-18 21:50:13 +00:00
systrace_args.c Regen. 2015-04-18 21:50:53 +00:00
sysv_ipc.c
sysv_msg.c Add kern.racct.enable tunable and RACCT_DISABLED config option. 2015-04-29 10:23:02 +00:00
sysv_sem.c Add kern.racct.enable tunable and RACCT_DISABLED config option. 2015-04-29 10:23:02 +00:00
sysv_shm.c Add kern.racct.enable tunable and RACCT_DISABLED config option. 2015-04-29 10:23:02 +00:00
tty_compat.c
tty_info.c
tty_inq.c
tty_outq.c
tty_pts.c fd: remove filedesc argument from fdclose 2015-04-11 15:40:28 +00:00
tty_tty.c
tty_ttydisc.c
tty.c filedesc: simplify fget_unlocked & friends 2015-02-17 23:54:06 +00:00
uipc_accf.c The accept filter code is not specific to the FreeBSD IPv4 network stack, 2014-07-26 19:27:34 +00:00
uipc_debug.c Merge from projects/sendfile: 2014-11-30 12:52:33 +00:00
uipc_domain.c Merge from projects/sendfile: extend protocols API to support 2014-11-30 13:24:21 +00:00
uipc_mbuf2.c Remove a 'This is dumb' comment that has been incorrect for at least a 2015-01-09 12:08:51 +00:00
uipc_mbuf.c Use anonymous unions and structs to organize shared space in mbuf(9), 2015-02-17 20:52:51 +00:00
uipc_mbufhash.c Reduce header pollution. 2015-03-17 14:16:50 +00:00
uipc_mqueue.c fd: remove filedesc argument from fdclose 2015-04-11 15:40:28 +00:00
uipc_sem.c fd: remove filedesc argument from fdclose 2015-04-11 15:40:28 +00:00
uipc_shm.c Use correct length for sparse uiomove(). It must be the clipped to 2015-04-24 22:05:12 +00:00
uipc_sockbuf.c In sbappend*() family of functions clear M_PROTO flags of incoming 2014-12-22 15:39:24 +00:00
uipc_socket.c soreceive_generic() still has similar KASSERT(), therefore instead of 2015-02-23 15:24:43 +00:00
uipc_syscalls.c Replace struct filedesc argument in getsock_cap with struct thread 2015-04-11 16:00:33 +00:00
uipc_usrreq.c The VOP_LOOKUP() implementations for CREATE op do not put the name 2014-12-18 10:01:12 +00:00
vfs_acl.c Replace some calls to fuword() by fueword() with proper error checking. 2014-10-28 15:28:20 +00:00
vfs_aio.c Make AIO to not allocate pbufs for unmapped I/O like r281825. 2015-04-22 18:11:34 +00:00
vfs_bio.c Partially revert r255986: do not call VOP_FSYNC() when helping 2015-04-27 11:13:19 +00:00
vfs_cache.c Modify kern___getcwd() to take max pathlen limit as an additional 2015-04-21 13:55:24 +00:00
vfs_cluster.c When allocating a pbuf for the cluster write, do not sleep waiting 2013-08-27 01:31:12 +00:00
vfs_default.c Fix the comment introduced in r276192 so that it clearly 2014-12-25 14:44:04 +00:00
vfs_export.c After the changes in r274118 make NOIP kernels compile by hiding an 2014-11-06 12:19:39 +00:00
vfs_extattr.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
vfs_hash.c Convert vfs hash lock from a mutex to an rwlock. 2014-12-30 21:40:45 +00:00
vfs_init.c Rename sysctl_lock and _unlock to sysctl_xlock and _xunlock. 2014-10-21 19:02:26 +00:00
vfs_lookup.c Fix two issues with lockmgr(9) LK_CAN_SHARE() test, which determines 2014-11-02 13:10:31 +00:00
vfs_mount.c Mountd iterating over the mount points may race with the parallel 2015-02-10 18:00:32 +00:00
vfs_mountroot.c Remove the no-at variants of the kern_xx() syscall helpers. E.g., we 2014-11-13 18:01:51 +00:00
vfs_subr.c File systems that do not use the buffer cache (such as ZFS) must 2015-04-15 20:16:31 +00:00
vfs_syscalls.c The lseek(2), mmap(2), truncate(2), ftruncate(2), pread(2), and 2015-04-18 21:50:13 +00:00
vfs_vnops.c Support file verification in MAC. 2015-04-22 01:54:25 +00:00
vnode_if.src Catch up on r271387 and remove unused parameter from 2015-03-30 22:49:26 +00:00