freebsd-dev/sys/kern
Luigi Rizzo 20c510f826 Properly fix callout handling by putting all the per-cpu info in
struct callout_cpu. From the comment in the file:

+ * There is one struct callout_cpu per cpu, holding all relevant
+ * state for the callout processing thread on the individual CPU.
+ * In particular:
+ *     cc_ticks is incremented once per tick in callout_cpu().
+ *     It tracks the global 'ticks' but in a way that the individual
+ *     threads should not worry about races in the order in which
+ *     hardclock() and hardclock_cpu() run on the various CPUs.
+ *     cc_softclock is advanced in callout_cpu() to point to the
+ *     first entry in cc_callwheel that may need handling. In turn,
+ *     a softclock() is scheduled so it can serve the various entries i
+ *     such that cc_softclock <= i <= cc_ticks .

Together with a smaller patch committed in september, this fixes a
bug that affects 8.0 with apps that rely on callouts to fire exactly
in the number of ticks specified (qemu among them).
Right now, callouts in 8.0 fire one tick late.

This was discussed in september with JeffR and jhb

MFC after:	3 days
2009-12-14 12:23:46 +00:00
..
bus_if.m
clock_if.m
cpufreq_if.m
device_if.m
genassym.sh
imgact_aout.c
imgact_elf32.c
imgact_elf64.c
imgact_elf.c
imgact_gzip.c
imgact_shell.c
inflate.c
init_main.c
init_sysent.c
kern_acct.c
kern_alq.c
kern_clock.c
kern_condvar.c
kern_conf.c
kern_cons.c
kern_context.c
kern_cpu.c
kern_cpuset.c
kern_ctf.c
kern_descrip.c On the return path from F_RDAHEAD and F_READAHEAD fcntls, do not 2009-11-20 22:22:53 +00:00
kern_dtrace.c
kern_environment.c
kern_event.c
kern_exec.c
kern_exit.c
kern_fail.c
kern_fork.c
kern_idle.c Split P_NOLOAD into a per-thread flag (TDF_NOLOAD). 2009-11-03 16:46:52 +00:00
kern_intr.c Split P_NOLOAD into a per-thread flag (TDF_NOLOAD). 2009-11-03 16:46:52 +00:00
kern_jail.c Throughout the network stack we have a few places of 2009-12-13 13:57:32 +00:00
kern_kthread.c
kern_ktr.c
kern_ktrace.c
kern_linker.c - Unbreak build with KLD_DEBUG defined 2009-11-17 21:56:12 +00:00
kern_lock.c In current code, threads performing an interruptible sleep (on both 2009-12-12 21:31:07 +00:00
kern_lockf.c
kern_lockstat.c
kern_malloc.c
kern_mbuf.c
kern_mib.c
kern_module.c
kern_mtxpool.c
kern_mutex.c
kern_ntptime.c
kern_osd.c
kern_physio.c
kern_pmc.c
kern_poll.c
kern_priv.c
kern_proc.c
kern_prot.c
kern_resource.c
kern_rmlock.c
kern_rwlock.c
kern_sdt.c
kern_sema.c
kern_shutdown.c
kern_sig.c Remove wrong assertion. Debugee is allowed to lose a signal. 2009-12-03 20:16:59 +00:00
kern_subr.c
kern_switch.c
kern_sx.c In current code, threads performing an interruptible sleep (on both 2009-12-12 21:31:07 +00:00
kern_synch.c
kern_syscalls.c
kern_sysctl.c
kern_tc.c
kern_thr.c
kern_thread.c
kern_time.c
kern_timeout.c Properly fix callout handling by putting all the per-cpu info in 2009-12-14 12:23:46 +00:00
kern_umtx.c
kern_uuid.c
kern_xxx.c
ksched.c
link_elf_obj.c
link_elf.c
linker_if.m
Make.tags.inc
Makefile
makesyscalls.sh
md4c.c
md5c.c
p1003_1b.c
posix4_mib.c
sched_4bsd.c Split P_NOLOAD into a per-thread flag (TDF_NOLOAD). 2009-11-03 16:46:52 +00:00
sched_ule.c Make ULE process usage (%CPU) accounting usable again by keeping track 2009-11-24 19:57:41 +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.c For some buses, devices may have active resources assigned even though they 2009-12-09 21:52:53 +00:00
subr_clock.c
subr_devstat.c
subr_disk.c
subr_eventhandler.c
subr_fattime.c
subr_firmware.c
subr_hints.c
subr_kdb.c
subr_kobj.c
subr_lock.c
subr_log.c Make /dev/klog and kern.msgbuf* MPSAFE. 2009-11-03 21:06:19 +00:00
subr_mbpool.c
subr_mchain.c
subr_module.c
subr_msgbuf.c
subr_param.c
subr_pcpu.c
subr_power.c
subr_prf.c Make /dev/klog and kern.msgbuf* MPSAFE. 2009-11-03 21:06:19 +00:00
subr_prof.c
subr_rman.c
subr_rtc.c
subr_sbuf.c
subr_scanf.c
subr_sglist.c
subr_sleepqueue.c In current code, threads performing an interruptible sleep (on both 2009-12-12 21:31:07 +00:00
subr_smp.c
subr_stack.c
subr_taskqueue.c
subr_trap.c
subr_turnstile.c
subr_unit.c
subr_witness.c
sys_generic.c
sys_pipe.c
sys_process.c Replace VM_PROT_OVERRIDE_WRITE by VM_PROT_COPY. VM_PROT_OVERRIDE_WRITE has 2009-11-26 05:16:07 +00:00
sys_socket.c
syscalls.c
syscalls.master
systrace_args.c
sysv_ipc.c
sysv_msg.c
sysv_sem.c
sysv_shm.c
tty_compat.c
tty_info.c
tty_inq.c
tty_outq.c
tty_pts.c
tty_tty.c
tty_ttydisc.c
tty.c Don't allocate an input buffer for a TTY when the receiver is turned off. 2009-12-01 19:14:57 +00:00
uipc_accf.c
uipc_cow.c
uipc_debug.c
uipc_domain.c
uipc_mbuf2.c
uipc_mbuf.c
uipc_mqueue.c
uipc_sem.c
uipc_shm.c
uipc_sockbuf.c
uipc_socket.c
uipc_syscalls.c If socket buffer space appears to be lower then sum of count of already 2009-11-03 12:52:35 +00:00
uipc_usrreq.c
vfs_acl.c Add change that was somehow missed in r192586. It could manifest by 2009-12-03 13:29:24 +00:00
vfs_aio.c
vfs_bio.c
vfs_cache.c
vfs_cluster.c
vfs_default.c Revert r198873. Having different VAPPEND semantics for VOP_ACCESS(9) 2009-11-11 13:49:22 +00:00
vfs_export.c
vfs_extattr.c
vfs_hash.c
vfs_init.c
vfs_lookup.c When rename("a", "b/.") is performed, target namei() call returns 2009-11-10 11:50:37 +00:00
vfs_mount.c Add the possibility for vfs.root.mountfrom tunable to accept a list of 2009-11-12 15:59:05 +00:00
vfs_subr.c Extend ddb(4) "show mount" command to print active string mount options. 2009-11-19 14:33:03 +00:00
vfs_syscalls.c Don't add VAPPEND if the file is not being opened for writing. Note that this 2009-12-08 20:47:10 +00:00
vfs_vnops.c Don't add VAPPEND if the file is not being opened for writing. Note that this 2009-12-08 20:47:10 +00:00
vnode_if.src