Alan Cox
cccf11b865
Change kernel_object and kmem_object to (&kernel_object_store) and
...
(&kmem_object_store), respectively. This allows the address of these
objects to be resolved at link-time rather than run-time.
2003-06-01 23:59:48 +00:00
Alan Cox
34567de7fc
Add vm object locking to vm_object_madvise().
2003-05-31 19:40:57 +00:00
Alan Cox
1c500307d1
Reduce the size of a vm object by converting its shadow list from a TAILQ
...
to a LIST.
Approved by: re (rwatson)
2003-05-18 04:10:16 +00:00
Alan Cox
3a12f5da1f
Give the kmem object's mutex a unique name, instead of "vm object",
...
to avoid false reports of lock-order reversal with a system map mutex.
Approved by: re (jhb)
2003-05-09 02:13:23 +00:00
Alan Cox
658ad5fff5
Lock the vm_object when performing vm_pager_deallocate().
2003-05-06 02:45:28 +00:00
Alan Cox
f7dd7b637b
Extend the scope of the vm_object lock in vm_object_terminate().
2003-05-04 19:23:40 +00:00
Alan Cox
ad682c4825
Lock the vm_object on entry to vm_object_vndeallocate().
2003-05-03 20:28:26 +00:00
Alan Cox
bff99f0d12
- Revert kern/vfs_subr.c revision 1.444. The vm_object's size isn't
...
trustworthy for vnode-backed objects.
- Restore the old behavior of vm_object_page_remove() when the end
of the given range is zero. Add a comment to vm_object_page_remove()
regarding this behavior.
Reported by: iedowse
2003-05-03 08:09:24 +00:00
Alan Cox
f92039a1fc
Move a declaration to its proper place.
2003-05-03 04:21:16 +00:00
Alan Cox
6be365253d
Lock the vm_object when updating its shadow list.
2003-05-02 04:55:21 +00:00
Alan Cox
4f7c7f6e23
Simplify the removal of a shadow object in vm_object_collapse().
2003-05-02 03:00:21 +00:00
Alan Cox
8e3a76fb6f
Extend the scope of the vm_object locking in vm_object_split().
2003-05-01 05:06:33 +00:00
Alan Cox
1534781737
- Update the vm_object locking in vm_object_reference().
...
- Convert some dead code in vm_object_reference() into a comment.
2003-05-01 03:29:20 +00:00
Alan Cox
ed6a786313
- Define VM_OBJECT_LOCK_INIT().
...
- Avoid repeatedly mtx_init()ing and mtx_destroy()ing the vm_object's lock
using UMA's uminit callback, in this case, vm_object_zinit().
2003-04-28 03:45:35 +00:00
Alan Cox
c9917419ef
- Tell witness that holding two or more vm_object locks is okay.
...
- In vm_object_deallocate(), lock the child when removing the parent
from the child's shadow list.
2003-04-27 20:07:57 +00:00
Alan Cox
570a2f4ac5
Various changes to vm_object_shadow(): (1) update the vm_object locking,
...
(2) remove a pointless assertion, and (3) make a trivial change to a
comment.
2003-04-27 05:43:03 +00:00
Alan Cox
ecde4b3218
Various changes to vm_object_page_remove():
...
- Eliminate an odd, special-case feature:
if start == end == 0 then all pages are removed. Only one caller
used this feature and that caller can trivially pass the object's
size.
- Assert that the vm_object is locked on entry; don't bother testing
for a NULL vm_object.
- Style: Fix lines that are longer than 80 characters.
2003-04-26 23:41:30 +00:00
Alan Cox
c829b9d0fc
- Lock the vm_object on entry to vm_object_terminate().
2003-04-26 19:36:19 +00:00
Alan Cox
1ca5895341
- Convert vm_object_pip_wait() from using tsleep() to msleep().
...
- Make vm_object_pip_sleep() static.
- Lock the vm_object when performing vm_object_pip_wait().
2003-04-26 18:33:18 +00:00
Alan Cox
155080d31e
- Extend the scope of two existing vm_object locks to cover
...
swap_pager_freespace().
2003-04-26 05:30:56 +00:00
Alan Cox
b6e48e0372
- Acquire the vm_object's lock when performing vm_object_page_clean().
...
- Add a parameter to vm_pageout_flush() that tells vm_pageout_flush()
whether its caller has locked the vm_object. (This is a temporary
measure to bootstrap vm_object locking.)
2003-04-24 04:31:25 +00:00
Alan Cox
d647a0ed5a
- Assert that the vm_object is locked in vm_object_clear_flag(),
...
vm_object_pip_add() and vm_object_pip_wakeup().
- Remove GIANT_REQUIRED from vm_object_pip_subtract() and
vm_object_pip_subtract().
- Lock the vm_object when performing vm_object_page_remove().
2003-04-21 06:33:52 +00:00
Alan Cox
d7a013c320
- Lock the vm_object when performing either vm_object_clear_flag() or
...
vm_object_pip_wakeup().
2003-04-20 23:23:41 +00:00
Alan Cox
d22bc7101c
- Lock the vm_object when performing vm_object_pip_add().
2003-04-20 03:41:21 +00:00
Alan Cox
0fa05eae77
- Lock the vm_object when performing vm_object_pip_subtract().
...
- Assert that the vm_object lock is held in vm_object_pip_subtract().
2003-04-19 22:11:41 +00:00
Alan Cox
0d420ad3e6
- Lock the vm_object when performing vm_object_pip_wakeupn().
...
- Assert that the vm_object lock is held in vm_object_pip_wakeupn().
- Add a new macro VM_OBJECT_LOCK_ASSERT().
2003-04-19 21:15:44 +00:00
Alan Cox
d1dc776d9d
Lock some manipulations of the vm object's flags.
2003-04-13 23:43:34 +00:00
Alan Cox
e2479b4fc3
Lock some manipulations of the vm object's flags.
2003-04-13 20:22:02 +00:00
Alan Cox
f279b88deb
Permit vm_object_pip_add() and vm_object_pip_wakeup() on the kmem_object
...
without Giant held.
2003-04-13 00:43:48 +00:00
Jake Burkholder
227f9a1c58
- Add vm_paddr_t, a physical address type. This is required for systems
...
where physical addresses larger than virtual addresses, such as i386s
with PAE.
- Use this to represent physical addresses in the MI vm system and in the
i386 pmap code. This also changes the paddr parameter to d_mmap_t.
- Fix printf formats to handle physical addresses >4G in the i386 memory
detection code, and due to kvtop returning vm_paddr_t instead of u_long.
Note that this is a name change only; vm_paddr_t is still the same as
vm_offset_t on all currently supported platforms.
Sponsored by: DARPA, Network Associates Laboratories
Discussed with: re, phk (cdevsw change)
2003-03-25 00:07:06 +00:00
Poul-Henning Kamp
b4b138c27f
Including <sys/stdint.h> is (almost?) universally only to be able to use
...
%j in printfs, so put a newsted include in <sys/systm.h> where the printf
prototype lives and save everybody else the trouble.
2003-03-18 08:45:25 +00:00
Alan Cox
09c80124a3
Remove ENABLE_VFS_IOOPT. It is a long unfinished work-in-progress.
...
Discussed on: arch@
2003-03-06 03:41:02 +00:00
Warner Losh
a163d034fa
Back out M_* changes, per decision of the TRB.
...
Approved by: trb
2003-02-19 05:47:46 +00:00
Alan Cox
75741c0497
Simplify vm_object_page_remove(): The object's memq is now ordered. The
...
two cases that existed before for performance optimization purposes can
be reduced to one.
2003-01-27 01:12:35 +00:00
Alfred Perlstein
44956c9863
Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0.
...
Merge M_NOWAIT/M_DONTWAIT into a single flag M_NOWAIT.
2003-01-21 08:56:16 +00:00
Alan Cox
4dbeceee96
Use vm_object_lock() and vm_object_unlock() in vm_object_deallocate().
...
(This procedure needs further work, but this change is sufficient for
locking the kmem_object.)
2003-01-04 19:23:19 +00:00
Alan Cox
5440b5a974
Refine the assertion in vm_object_clear_flag() to allow operation on the
...
kmem_object without Giant. In that case, assert that the kmem_object's
mutex is held.
2003-01-03 19:19:08 +00:00
Jens Schweikhardt
9d5abbddbf
Correct typos, mostly s/ a / an / where appropriate. Some whitespace cleanup,
...
especially in troff files.
2003-01-01 18:49:04 +00:00
Alan Cox
e3a9e1b2a8
- Remove vm_object_init2(). It is unused.
...
- Add a mtx_destroy() to vm_object_collapse(). (This allows a bzero()
to migrate from _vm_object_allocate() to vm_object_zinit(), where it
will be performed less often.)
2002-12-29 21:01:14 +00:00
Alan Cox
a28cc55e5b
Reduce the number of times that we acquire and release the page queues
...
lock by making vm_page_rename()'s caller, rather than vm_page_rename(),
responsible for acquiring it.
2002-12-29 07:17:06 +00:00
Matthew Dillon
43b7990e30
Allow the VM object flushing code to cluster. When the filesystem syncer
...
comes along and flushes a file which has been mmap()'d SHARED/RW, with
dirty pages, it was flushing the underlying VM object asynchronously,
resulting in thousands of 8K writes. With this change the VM Object flushing
code will cluster dirty pages in 64K blocks.
Note that until the low memory deadlock issue is reviewed, it is not safe
to allow the pageout daemon to use this feature. Forced pageouts still
use fs block size'd ops for the moment.
MFC after: 3 days
2002-12-28 21:03:42 +00:00
Alan Cox
35c016315f
- Change vm_object_page_collect_flush() to assert rather than
...
acquire the page queues lock.
- Acquire the page queues lock in vm_object_page_clean().
2002-12-27 20:16:13 +00:00
Alan Cox
dc907f6632
- Hold the page queues lock around vm_page_wakeup().
2002-12-24 04:24:58 +00:00
Alan Cox
4b420d501f
Add a mutex to struct vm_object. Initialize and destroy that mutex
...
at appropriate times. For the moment, the mutex is only used on
the kmem_object.
2002-12-20 05:10:32 +00:00
Alan Cox
cf3e6e4837
Remove the hash_rand field from struct vm_object. As of revision 1.215 of
...
vm/vm_page.c, it is unused.
2002-12-19 20:01:22 +00:00
Alan Cox
bd82dc7460
- Hold the page queues lock when performing vm_page_busy().
...
- Replace vm_page_sleep_busy() with proper page queues locking
and vm_page_sleep_if_busy().
2002-12-18 04:39:15 +00:00
Alan Cox
2840cabe6a
As per the comments, vm_object_page_remove() now expects its caller to lock
...
the object (i.e., acquire Giant).
2002-12-15 07:30:51 +00:00
Alan Cox
3a199de3d9
Hold the page queues lock while performing pmap_page_protect().
...
Approved by: re (blanket)
2002-11-27 08:03:24 +00:00
Alan Cox
13dc71ed40
Extend the scope of the page queues/fields locking in vm_freeze_copyopts()
...
to cover pmap_remove_all().
Approved by: re
2002-11-24 06:13:38 +00:00
Alan Cox
a12cc0e489
Remove vm_page_protect(). Instead, use pmap_page_protect() directly.
2002-11-18 04:05:22 +00:00