1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-19 10:53:58 +00:00
freebsd/sys/kern
Attilio Rao c7aebda8a1 The soft and hard busy mechanism rely on the vm object lock to work.
Unify the 2 concept into a real, minimal, sxlock where the shared
acquisition represent the soft busy and the exclusive acquisition
represent the hard busy.
The old VPO_WANTED mechanism becames the hard-path for this new lock
and it becomes per-page rather than per-object.
The vm_object lock becames an interlock for this functionality:
it can be held in both read or write mode.
However, if the vm_object lock is held in read mode while acquiring
or releasing the busy state, the thread owner cannot make any
assumption on the busy state unless it is also busying it.

Also:
- Add a new flag to directly shared busy pages while vm_page_alloc
  and vm_page_grab are being executed.  This will be very helpful
  once these functions happen under a read object lock.
- Move the swapping sleep into its own per-object flag

The KPI is heavilly changed this is why the version is bumped.
It is very likely that some VM ports users will need to change
their own code.

Sponsored by:	EMC / Isilon storage division
Discussed with:	alc
Reviewed by:	jeff, kib
Tested by:	gavin, bapt (older version)
Tested by:	pho, scottl
2013-08-09 11:11:11 +00:00
..
bus_if.m Add a BUS_CHILD_DELETED() method that a bus can hook to allow it to cleanup 2012-08-21 18:13:09 +00:00
capabilities.conf Add pipe2() system call. 2013-05-01 22:42:42 +00:00
clock_if.m
cpufreq_if.m
device_if.m Revert r239178 and implement two new functions, namely 2012-08-15 15:42:57 +00:00
dtio_kdtrace.c Change the module name for the I/O provider to "kernel" from 2012-09-25 19:16:28 +00:00
genassym.sh
imgact_aout.c Cosmetics: define FREEBSD32_MINUSER and AOUT32_MINUSER for struct 2012-07-22 13:41:45 +00:00
imgact_elf32.c
imgact_elf64.c
imgact_elf.c Revert r253939: 2013-08-05 08:55:35 +00:00
imgact_gzip.c Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
imgact_shell.c
inflate.c
init_main.c Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
init_sysent.c aio_mlock() added: 2013-06-08 13:30:13 +00:00
kern_acct.c acct: create a special plimit object and set it for exiting processes 2013-06-30 19:08:06 +00:00
kern_alq.c The fix committed in r250951 replaced the reported panic with a deadlock... gold 2013-06-17 09:49:07 +00:00
kern_clock.c Correct a bug that prevented deadlkres from (almost) ever firing. 2013-06-28 15:55:30 +00:00
kern_clocksource.c - Make callout(9) tickless, relying on eventtimers(4) as backend for 2013-03-04 11:09:56 +00:00
kern_condvar.c MFcalloutng: 2013-03-04 12:20:48 +00:00
kern_conf.c Reject spaces and double quotation marks in device names. devctl(4) 2012-12-22 13:33:28 +00:00
kern_cons.c cngetc: use cpu_spinwait to ease the cncheckc loop a tiny bit 2012-10-06 19:50:23 +00:00
kern_context.c
kern_cpu.c
kern_cpuset.c Several improvements to rmlock(9). Many of these are based on patches 2013-06-25 18:44:15 +00:00
kern_ctf.c Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +00:00
kern_descrip.c Plug up the lock lock leakage when exporting to a short buffer. 2013-07-01 03:27:14 +00:00
kern_dtrace.c
kern_environment.c r249408 and r249436 cause a NULL pointer dereference on the CUBIEBOARD 2013-04-16 22:09:08 +00:00
kern_et.c Fix incorrect assertion that caused panic when periodic-only timers used. 2013-03-13 06:42:01 +00:00
kern_event.c Don't emit a spurious EVFILT_PROC event with no fflags set on process exit 2013-08-07 19:56:35 +00:00
kern_exec.c The soft and hard busy mechanism rely on the vm object lock to work. 2013-08-09 11:11:11 +00:00
kern_exit.c Remove cr_prison NULL check from proc_to_reap. 2013-07-22 02:07:15 +00:00
kern_fail.c
kern_ffclock.c
kern_fork.c Include PID in the error message which is printed when the maxproc limit 2013-04-19 15:19:29 +00:00
kern_gzio.c Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +00:00
kern_hhook.c Move hhook's per-vnet initialisation to an earlier SYSINIT SI_SUB stage to 2013-06-15 10:08:34 +00:00
kern_idle.c
kern_intr.c The change in r236456 (atomic_store_rel not locked) exposed a bug 2013-07-04 05:53:05 +00:00
kern_jail.c Refine the "nojail" rc keyword, adding "nojailvnet" for files that don't 2013-05-19 04:10:34 +00:00
kern_khelp.c Cleanup and simplification in khelp_{register|deregister}_helper(). No 2013-06-15 06:45:17 +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 ktr: correctly handle possible wrap-around in the boot buffer 2013-02-08 07:29:07 +00:00
kern_ktrace.c Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +00:00
kern_linker.c Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +00:00
kern_lock.c A few mostly cosmetic nits to aid in debugging: 2013-06-25 20:23:08 +00:00
kern_lockf.c
kern_lockstat.c
kern_loginclass.c
kern_malloc.c Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
kern_mbuf.c Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
kern_mib.c fix some fat-fingering in r246246 2013-02-02 14:19:50 +00:00
kern_module.c Fix a typo. 2012-08-22 20:01:57 +00:00
kern_mtxpool.c
kern_mutex.c Fix r253823. Some WIP patches snuck in. 2013-07-30 23:50:09 +00:00
kern_ntptime.c rename scheduler->swapper and SI_SUB_RUN_SCHEDULER->SI_SUB_LAST 2013-07-24 09:45:31 +00:00
kern_osd.c
kern_physio.c Add dev_strategy_csw() function, which is similar to dev_strategy() 2013-03-27 11:34:27 +00:00
kern_pmc.c
kern_poll.c Remove unsigned comparison < 0 2013-08-07 07:22:56 +00:00
kern_priv.c Make the comments a little more clear about PRIV_KMEM_*, explicitly 2013-07-06 00:10:52 +00:00
kern_proc.c Similarly to proc_getargv() and proc_getenvv(), export proc_getauxv() 2013-04-14 20:03:48 +00:00
kern_prot.c Style fix 2012-11-14 10:33:12 +00:00
kern_racct.c Accessing td_state requires thread lock to be held. 2013-03-14 23:20:18 +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 Add CPU percentage limit enforcement to RCTL. The resouce name is "pcpu". 2012-10-26 16:01:08 +00:00
kern_resource.c Call sched_prio() to immediately change the priority of the thread in 2013-03-07 02:53:29 +00:00
kern_rmlock.c Fix build with INVARIANT_SUPPORT enabled but not INVARIANTS. 2013-07-08 21:17:20 +00:00
kern_rwlock.c A few mostly cosmetic nits to aid in debugging: 2013-06-25 20:23:08 +00:00
kern_sdt.c
kern_sema.c
kern_sharedpage.c Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
kern_shutdown.c Switch the vm_object mutex to be a rwlock. This will enable in the 2013-03-09 02:32:23 +00:00
kern_sig.c Remove duplicate assertion from tdsendsignal. 2013-07-22 00:44:37 +00:00
kern_switch.c Add a comment on why inlining critical_enter() may not be a good idea 2012-12-09 04:54:22 +00:00
kern_sx.c A few mostly cosmetic nits to aid in debugging: 2013-06-25 20:23:08 +00:00
kern_synch.c should_yield: protect from td_swvoltick being uninitialized or too stale 2013-07-09 09:01:44 +00:00
kern_syscalls.c
kern_sysctl.c Add a helpful message that can help point to why a sysctl tree removal failed 2013-08-09 01:04:44 +00:00
kern_tc.c - Make callout(9) tickless, relying on eventtimers(4) as backend for 2013-03-04 11:09:56 +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 Another NFS SIGSTOP related fix: Ignore thread suspend requests due to 2013-03-21 14:06:27 +00:00
kern_time.c Implement compat32 wrappers for the ktimer_* syscalls. 2013-07-21 19:43:52 +00:00
kern_timeout.c Cache the callout precision argument as part of the informations required 2013-03-25 09:43:50 +00:00
kern_umtx.c Fix two issues with the spin loops in the umtx(2) implementation. 2013-06-13 09:33:22 +00:00
kern_uuid.c Further restrict the MAC addresses that we use for UUID generation 2013-07-24 18:13:43 +00:00
kern_xxx.c
ksched.c sched_rr_interval() seems always returned period in hz ticks, but same 2012-08-10 18:19:57 +00:00
link_elf_obj.c Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +00:00
link_elf.c Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +00:00
linker_if.m
Make.tags.inc - Trim an unused and bogus Makefile for mount_smbfs. 2013-06-28 21:00:08 +00:00
Makefile
makesyscalls.sh
md4c.c
md5c.c
p1003_1b.c
posix4_mib.c
sched_4bsd.c rename scheduler->swapper and SI_SUB_RUN_SCHEDULER->SI_SUB_LAST 2013-07-24 09:45:31 +00:00
sched_ule.c Point args[0] not at the thread that is ending but at the one that 2013-04-15 17:21:02 +00:00
serdev_if.m
stack_protector.c
subr_acl_nfs4.c
subr_acl_posix1e.c
subr_autoconf.c
subr_blist.c Remove reference to the rlist code from comments, and fix a typo visible 2013-02-05 20:08:33 +00:00
subr_bufring.c
subr_bus_dma.c Move an assertion to the right spot; only bus_dmamap_load_mbuf(9) 2013-06-01 11:42:47 +00:00
subr_bus.c Allow drivers to return BUS_PROBE_NOWILDCARD from their attach routine to 2013-08-08 19:30:49 +00:00
subr_busdma_bufalloc.c Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
subr_clock.c
subr_counter.c Revert r249590 and in case if mp_ncpus isn't initialized use MAXCPU. This 2013-07-23 11:16:40 +00:00
subr_devstat.c Fix build for kernels with dtrace hooks. 2012-07-11 18:50:50 +00:00
subr_disk.c
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
subr_firmware.c Correct sizeof usage 2012-06-25 05:41:16 +00:00
subr_hash.c
subr_hints.c Style fixes. 2012-09-04 23:16:55 +00:00
subr_kdb.c
subr_kobj.c
subr_lock.c Several improvements to rmlock(9). Many of these are based on patches 2013-06-25 18:44:15 +00:00
subr_log.c MFcalloutng (r244255 by mav, with minor changes): 2013-03-04 16:07:55 +00:00
subr_mbpool.c
subr_mchain.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
subr_module.c
subr_msgbuf.c
subr_param.c Implement the concept of the unmapped VMIO buffers, i.e. buffers which 2013-03-19 14:13:12 +00:00
subr_pcpu.c
subr_pctrie.c - Add a new general purpose path-compressed radix trie which can be used 2013-05-12 04:05:01 +00:00
subr_power.c
subr_prf.c
subr_prof.c
subr_rman.c Unlock in the error path to prevent a lock leak. 2012-05-31 17:27:05 +00:00
subr_rtc.c
subr_sbuf.c A library function shall not set errno to 0. 2013-05-16 18:13:10 +00:00
subr_scanf.c
subr_sglist.c
subr_sleepqueue.c Partially revert r195702. Deferring stops is now implemented via a set of 2013-03-18 17:23:58 +00:00
subr_smp.c - Correctly handle EWOULDBLOCK in quiesce_cpus 2012-12-19 20:08:06 +00:00
subr_stack.c
subr_syscall.c Fix build on ARM (and probably other platforms) 2012-12-28 06:52:53 +00:00
subr_taskqueue.c Extend taskqueue(9) to enable per-taskqueue callbacks. 2013-03-23 15:11:53 +00:00
subr_trap.c Partially revert r195702. Deferring stops is now implemented via a set of 2013-03-18 17:23:58 +00:00
subr_turnstile.c Update the comment: we do show the backtrace of misbehaving thread. 2013-02-17 21:37:32 +00:00
subr_uio.c The soft and hard busy mechanism rely on the vm object lock to work. 2013-08-09 11:11:11 +00:00
subr_unit.c Correct double "the the" 2012-09-14 21:28:56 +00:00
subr_vmem.c Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
subr_witness.c Make kassert_printf use __printflike. 2013-07-07 21:39:37 +00:00
sys_capability.c Use proper malloc type for ioctls white-list. 2013-05-23 21:07:26 +00:00
sys_generic.c Help out gcc. clang understands. 2013-06-29 04:35:04 +00:00
sys_pipe.c Add pipe2() system call. 2013-05-01 22:42:42 +00:00
sys_procdesc.c Add the wait6(2) system call. It takes POSIX waitid()-like process 2012-11-13 12:52:31 +00:00
sys_process.c Revert r253939: 2013-08-05 08:55:35 +00:00
sys_socket.c
syscalls.c aio_mlock() added: 2013-06-08 13:30:13 +00:00
syscalls.master Add new system call - aio_mlock(). The name speaks for itself. It allows 2013-06-08 13:27:57 +00:00
systrace_args.c aio_mlock() added: 2013-06-08 13:30:13 +00:00
sysv_ipc.c
sysv_msg.c
sysv_sem.c
sysv_shm.c Be more aggressive in using superpages in all mappings of objects: 2013-07-19 19:06:15 +00:00
tty_compat.c
tty_info.c
tty_inq.c
tty_outq.c
tty_pts.c Allow O_CLOEXEC in posix_openpt() flags. 2013-03-21 21:39:15 +00:00
tty_tty.c
tty_ttydisc.c Correct SIGTTIN handling. 2012-10-25 09:05:21 +00:00
tty.c Merge Capsicum overhaul: 2013-03-02 00:53:12 +00:00
uipc_accf.c
uipc_cow.c
uipc_debug.c
uipc_domain.c - Implement two new system calls: 2013-03-02 21:11:30 +00:00
uipc_mbuf2.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
uipc_mbuf.c Nuke mbstat. It wasn't used for mbuf statistics since FreeBSD 5. 2013-07-15 12:18:36 +00:00
uipc_mqueue.c Wrap kmq_notify(2) for compat32 to properly consume struct sigevent32 2013-07-21 19:40:30 +00:00
uipc_sem.c Similar to 233760 and 236717, export some more useful info about the 2013-05-03 21:11:57 +00:00
uipc_shm.c The soft and hard busy mechanism rely on the vm object lock to work. 2013-08-09 11:11:11 +00:00
uipc_sockbuf.c When a previous call to sbsndptr() leaves sb->sb_sndptroff at the start of an 2013-06-19 03:08:01 +00:00
uipc_socket.c When the accept queue is full print the number of already pending 2013-05-08 14:13:14 +00:00
uipc_syscalls.c The soft and hard busy mechanism rely on the vm object lock to work. 2013-08-09 11:11:11 +00:00
uipc_usrreq.c Fix receiving fd over unix socket broken in r247740. 2013-07-02 07:36:04 +00:00
vfs_acl.c Don't dereference null pointer should acl_alloc() be passed M_NOWAIT 2013-08-09 08:40:31 +00:00
vfs_aio.c Remove extra zeroing after M_ZERO allocation. 2013-08-02 13:06:49 +00:00
vfs_bio.c The soft and hard busy mechanism rely on the vm object lock to work. 2013-08-09 11:11:11 +00:00
vfs_cache.c namecache sdt: freebsd doesn't support structured characters yet 2013-07-09 08:58:34 +00:00
vfs_cluster.c The soft and hard busy mechanism rely on the vm object lock to work. 2013-08-09 11:11:11 +00:00
vfs_default.c - Convert the bufobj lock to rwlock. 2013-05-31 00:43:41 +00:00
vfs_export.c Further refine the handling of stop signals in the NFS client. The 2013-02-21 19:02:50 +00:00
vfs_extattr.c Use a shared lock for VOP_GETEXTATTR, as it is a read-like operation. 2013-03-30 15:09:04 +00:00
vfs_hash.c Add exported vfs_hash_index() function, which calculates the canonical 2013-01-14 05:41:40 +00:00
vfs_init.c Revert accidental commit. 2013-06-29 05:05:57 +00:00
vfs_lookup.c Do not override the ENOENT error for the empty path, or EFAULT errors 2013-08-05 19:42:03 +00:00
vfs_mount.c Add vfs_mounted and vfs_unmounted events so that components can be informed 2013-07-10 15:35:25 +00:00
vfs_mountroot.c Add a tunable for the default timeout. 2013-08-03 04:25:25 +00:00
vfs_subr.c When creation of the v_pollinfo raced and our instance of vpollinfo 2013-07-28 06:59:29 +00:00
vfs_syscalls.c - Fix nullfs vnode reference leak in nullfs_reclaim_lowervp(). The 2013-05-11 11:17:44 +00:00
vfs_vnops.c There are several code sequences like 2013-07-09 20:49:32 +00:00
vnode_if.src remove vop_lookup_pre and vop_lookup_post 2012-11-22 10:36:10 +00:00