<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src-test2/sys/vm/vm_map.h, branch releng/6.3</title>
<subtitle>FreeBSD source tree</subtitle>
<id>https://cgit-dev.freebsd.org/src-test2/atom?h=releng%2F6.3</id>
<link rel='self' href='https://cgit-dev.freebsd.org/src-test2/atom?h=releng%2F6.3'/>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test2/'/>
<updated>2007-09-09T04:41:24Z</updated>
<entry>
<title>MFC</title>
<updated>2007-09-09T04:41:24Z</updated>
<author>
<name>Konstantin Belousov</name>
<email>kib@FreeBSD.org</email>
</author>
<published>2007-09-09T04:41:24Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test2/commit/?id=a84cba2f83c014358a38ec06bb12f40d241c0d19'/>
<id>urn:sha1:a84cba2f83c014358a38ec06bb12f40d241c0d19</id>
<content type='text'>
rev. 1.387 of src/sys/vm/vm_map.c
rev. 1.120 of src/sys/vm/vm_map.h
rev. 1.213 of src/sys/vm/vm_mmap.c

Do not drop vm_map lock between doing vm_map_remove() and vm_map_insert().
For this, introduce vm_map_fixed() that does that for MAP_FIXED case.

Tested by:	Marc G. Fournier &lt;scrappy hub org&gt;
</content>
</entry>
<entry>
<title>MFC: Close race between vmspace_exitfree() and exit1() and races between</title>
<updated>2006-06-02T00:26:27Z</updated>
<author>
<name>Tor Egge</name>
<email>tegge@FreeBSD.org</email>
</author>
<published>2006-06-02T00:26:27Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test2/commit/?id=9153feb615e563916c37775984b836802e1d5992'/>
<id>urn:sha1:9153feb615e563916c37775984b836802e1d5992</id>
<content type='text'>
     vmspace_exitfree() and vmspace_free() which could result in the same
     vmspace being freed twice.

     Factor out part of exit1() into new function vmspace_exit().  Attach
     to vmspace0 to allow old vmspace to be freed earlier.

     Add new function, vmspace_acquire_ref(), for obtaining a vmspace
     reference for a vmspace belonging to another process.  Avoid changing
     vmspace refcount from 0 to 1 since that could also lead to the same
     vmspace being freed twice.

     Change vmtotal() and swapout_procs() to use vmspace_acquire_ref().
</content>
</entry>
<entry>
<title>/* -&gt; /*- for license, minor formatting changes</title>
<updated>2005-01-07T02:29:27Z</updated>
<author>
<name>Warner Losh</name>
<email>imp@FreeBSD.org</email>
</author>
<published>2005-01-07T02:29:27Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test2/commit/?id=60727d8b86294910d41cbda1a50a855ea0537449'/>
<id>urn:sha1:60727d8b86294910d41cbda1a50a855ea0537449</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Replace the linear search in vm_map_findspace() with an O(log n)</title>
<updated>2004-08-13T08:06:34Z</updated>
<author>
<name>Alan Cox</name>
<email>alc@FreeBSD.org</email>
</author>
<published>2004-08-13T08:06:34Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test2/commit/?id=0164e0578108997ceb567576fc14cc0a8658a9fe'/>
<id>urn:sha1:0164e0578108997ceb567576fc14cc0a8658a9fe</id>
<content type='text'>
algorithm built into the map entry splay tree.  This replaces the
first_free hint in struct vm_map with two fields in vm_map_entry:
adj_free, the amount of free space following a map entry, and
max_free, the maximum amount of free space in the entry's subtree.
These fields make it possible to find a first-fit free region of a
given size in one pass down the tree, so O(log n) amortized using
splay trees.

This significantly reduces the overhead in vm_map_findspace() for
applications that mmap() many hundreds or thousands of regions, and
has a negligible slowdown (0.1%) on buildworld.  See, for example, the
discussion of a micro-benchmark titled "Some mmap observations
compared to Linux 2.6/OpenBSD" on -hackers in late October 2003.

OpenBSD adopted this approach in March 2002, and NetBSD added it in
November 2003, both with Red-Black trees.

Submitted by: Mark W. Krentel
</content>
</entry>
<entry>
<title>The vm map lock is needed in vm_fault() after the page has been found,</title>
<updated>2004-08-12T20:14:49Z</updated>
<author>
<name>Tor Egge</name>
<email>tegge@FreeBSD.org</email>
</author>
<published>2004-08-12T20:14:49Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test2/commit/?id=19dc5607564f3e0be1637b6ef5202687bcc4b104'/>
<id>urn:sha1:19dc5607564f3e0be1637b6ef5202687bcc4b104</id>
<content type='text'>
to avoid later changes before pmap_enter() and vm_fault_prefault()
has completed.

Simplify deadlock avoidance by not blocking on vm map relookup.

In collaboration with: alc
</content>
</entry>
<entry>
<title>Revamp VM map wiring.</title>
<updated>2004-08-09T19:52:29Z</updated>
<author>
<name>Brian Feldman</name>
<email>green@FreeBSD.org</email>
</author>
<published>2004-08-09T19:52:29Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test2/commit/?id=9689d5e5ee12fcabc1aeb63224dbe1137986c236'/>
<id>urn:sha1:9689d5e5ee12fcabc1aeb63224dbe1137986c236</id>
<content type='text'>
* Allow no-fault wiring/unwiring to succeed for consistency;
  however, the wired count remains at zero, so it's a special case.

* Fix issues inside vm_map_wire() and vm_map_unwire() where the
  exact state of user wiring (one or zero) and system wiring
  (zero or more) could be confused; for example, system unwiring
  could succeed in removing a user wire, instead of being an
  error.

* Require all mappings to be unwired before they are deleted.
  When VM space is still wired upon deletion, it will be waited
  upon for the following unwire.  This makes vslock(9) work
  rather than allowing kernel-locked memory to be deleted
  out from underneath of its consumer as it would before.
</content>
</entry>
<entry>
<title>Get rid of another lockmgr(9) consumer by using sx locks for the user</title>
<updated>2004-07-30T09:10:28Z</updated>
<author>
<name>Maxime Henrion</name>
<email>mux@FreeBSD.org</email>
</author>
<published>2004-07-30T09:10:28Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test2/commit/?id=12c649749ce96af5d9368d560f15176fb9f67512'/>
<id>urn:sha1:12c649749ce96af5d9368d560f15176fb9f67512</id>
<content type='text'>
maps.  We always acquire the sx lock exclusively here, but we can't
use a mutex because we want to be able to sleep while holding the
lock.  This is completely equivalent to what we were doing with the
lockmgr(9) locks before.

Approved by:	alc
</content>
</entry>
<entry>
<title>Simplify vmspace initialization.  The bcopy() of fields from the old</title>
<updated>2004-07-24T07:40:35Z</updated>
<author>
<name>Alan Cox</name>
<email>alc@FreeBSD.org</email>
</author>
<published>2004-07-24T07:40:35Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test2/commit/?id=51ab6c28904a8936adacaa9cd7a58b1724a4b264'/>
<id>urn:sha1:51ab6c28904a8936adacaa9cd7a58b1724a4b264</id>
<content type='text'>
vmspace to the new vmspace in vmspace_exec() is mostly wasted effort.  With
one exception, vm_swrss, the copied fields are immediately overwritten.
Instead, initialize these fields to zero in vmspace_alloc(), eliminating a
bcopy() from vmspace_exec() and a bzero() from vmspace_fork().
</content>
</entry>
<entry>
<title>Micro-optimize vmspace for 64-bit architectures: Colocate vm_refcnt and</title>
<updated>2004-07-06T17:35:10Z</updated>
<author>
<name>Alan Cox</name>
<email>alc@FreeBSD.org</email>
</author>
<published>2004-07-06T17:35:10Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test2/commit/?id=fd2d3549084f707c24805951231d3df9cac56ac8'/>
<id>urn:sha1:fd2d3549084f707c24805951231d3df9cac56ac8</id>
<content type='text'>
vm_exitingcnt so that alignment does not result in wasted space.
</content>
</entry>
<entry>
<title>Remove an unused field from the vmspace structure.</title>
<updated>2004-06-26T19:16:35Z</updated>
<author>
<name>Alan Cox</name>
<email>alc@FreeBSD.org</email>
</author>
<published>2004-06-26T19:16:35Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test2/commit/?id=d9dd6bfb56514703a420dec0d6f9071881cd3c8f'/>
<id>urn:sha1:d9dd6bfb56514703a420dec0d6f9071881cd3c8f</id>
<content type='text'>
</content>
</entry>
</feed>
