christos
28bd7a84c0
Don't allocate > 1K on the stack.
2006-06-12 21:05:47 +00:00
kardel
de4337ab21
merge FreeBSD timecounters from branch simonb-timecounters
...
- struct timeval time is gone
time.tv_sec -> time_second
- struct timeval mono_time is gone
mono_time.tv_sec -> time_uptime
- access to time via
{get,}{micro,nano,bin}time()
get* versions are fast but less precise
- support NTP nanokernel implementation (NTP API 4)
- further reading:
Timecounter Paper: http://phk.freebsd.dk/pubs/timecounter.pdf
NTP Nanokernel: http://www.eecis.udel.edu/~mills/ntp/html/kern.html
2006-06-07 22:33:33 +00:00
yamt
c24f70bcad
move wait points for kva from upper layers to vm_map. PR/33185 #1 .
...
XXX there is a concern about interaction with kva fragmentation.
see: http://mail-index.NetBSD.org/tech-kern/2006/05/11/0000.html
2006-05-25 14:27:28 +00:00
yamt
1075c99d89
introduce macros, UAREA_TO_USER and USER_TO_UAREA,
...
to convert uarea VA into a pointer to struct user and vice versa,
so that MD code can change the layout in uarea.
2006-05-22 13:43:54 +00:00
elad
b3e7e1b010
Better implementation of PaX MPROTECT, after looking some more into the
...
code and not trying to use temporary solutions.
Lots of comments and help from YAMAMOTO Takashi, also thanks to the PaX
author for being quick to recognize that something fishy's going on. :)
Hook up in mmap/vmcmd rather than (ugh!) uvm_map_protect().
Next time I suggest to commit a temporary solution just revoke my
commit bit.
2006-05-20 15:45:37 +00:00
yamt
c876210968
UVM_MAPFLAG: add missing parens.
2006-05-19 15:08:14 +00:00
elad
04d63f90b5
Introduce PaX MPROTECT -- mprotect(2) restrictions used to strengthen
...
W^X mappings.
Disabled by default.
First proposed in:
http://mail-index.netbsd.org/tech-security/2005/12/18/0000.html
More information in:
http://pax.grsecurity.net/docs/mprotect.txt
Read relevant parts of options(4) and sysctl(3) before using!
Lots of thanks to the PaX author and Matt Thomas.
2006-05-16 00:08:24 +00:00
elad
fc9422c9d9
integrate kauth.
2006-05-14 21:31:52 +00:00
yamt
de6ea5711e
- rename uvm_tree_sanity to uvm_map_check and add some
...
(non tree related) checks.
- remove treesanity_label. instead, just panic if any corruption is detected.
2006-05-14 08:22:50 +00:00
yamt
37f3579cf8
- uvm_mapent_trymerge: don't forget to update hints.
...
- clear_hints: new function.
- uvm_map_replace: use clear_hints. no functional change.
- add some assertions.
2006-05-14 08:21:36 +00:00
yamt
be55e1f38a
update first_free correctly.
2006-05-14 08:20:35 +00:00
christos
103d2f520c
XXX: GCC uninitialized.
2006-05-14 05:30:31 +00:00
yamt
6957cc2e13
ubc_fault: use PMAP_CANFAIL. pointed by Jed Davis on tech-kern@.
2006-05-03 15:57:35 +00:00
yamt
38ae305f09
uvm_km_suballoc: consider kva overhead of "kmapent".
...
fixes PR/31275 (me) and PR/32287 (Christian Biere).
2006-05-03 14:12:01 +00:00
yamt
93127a7b4c
amap_splitref: assert that origref->ar_amap is initialized
...
by caller beforehand.
2006-04-21 14:04:45 +00:00
yamt
0f4aad0236
- share some code between uvm_map_clip_end and uvm_map_clip_start.
...
- add a map entry sanity-check function, uvm_mapent_check().
discussed on source-changes@.
2006-04-21 14:03:01 +00:00
yamt
c8d2679980
from Christian Ehrhardt:
...
* uvm_loanzero may call uvm_analloc which will return with anon->an_lock
locked. This lock is never dropped by uvm_loanzero and AFAICS the caller
doesn't drop it either.
2006-04-18 09:56:16 +00:00
yamt
4dec4ffdcb
uvm_page_own: more assertions.
2006-04-13 08:33:18 +00:00
christos
14ac201ca2
Change previous to KASSERT per yamt's request.
2006-04-13 02:32:14 +00:00
yamt
047ff68ce8
ubc_fault: don't forget to clear PG_WANTED.
...
reported by Michael Lorenz on tech-kern@.
2006-04-13 02:17:42 +00:00
christos
7778288678
Coverity CID 762: Protect against NULL dereferencing entry->object.uvm_obj
...
like we do a few lines before. Maybe all the tests should be changed
to UVM_ET_ISOBJ(), or the macro should do it internally?
2006-04-13 01:11:08 +00:00
christos
3e31f5d682
Coverity CID 835: Check before dereferencing pg->uanon.
2006-04-13 01:05:17 +00:00
yamt
52a31ea140
uvm_pagermapin: nowait allocation for pagedaemon.
2006-04-11 09:29:40 +00:00
yamt
c03e4d19d3
add assertions.
2006-04-11 09:28:14 +00:00
uebayasi
c515049d02
Update comment to match reality (vm_physmemseg -> vm_physseg).
2006-04-06 07:18:23 +00:00
yamt
9f6a649d14
uvm_km_pgremove/uvm_km_pgremove_intrsafe: fix assertions.
2006-04-05 21:56:24 +00:00
christos
435a7d0d03
Coverity CID 2721: Avoid bitching for impossible cases, by adding KASSERT.
2006-04-05 19:49:28 +00:00
yamt
4038c2995b
uvm_km_check_empty: fix an assertion.
2006-03-17 09:37:55 +00:00
drochner
e10923fd37
-clean up the interface to uvm_fault: the "fault type" didn't serve
...
any purpose (done by a macro, so we don't save any cycles for now)
-kill vm_fault_t; it is not needed for real faults, and for simulated
faults (wiring) it can be replaced by UVM internal flags
-remove <uvm/uvm_fault.h> from uvm_extern.h again
2006-03-15 18:09:25 +00:00
yamt
ec5a93183a
merge yamt-uio_vmspace branch.
...
- use vmspace rather than proc or lwp where appropriate.
the latter is more natural to specify an address space.
(and less likely to be abused for random purposes.)
- fix a swdmover race.
2006-03-01 12:38:10 +00:00
drochner
2d1a0b57b6
kill the "fault_type" argument to pager's pgo_fault() methods
...
it is never used
(and using it would comprise an abstraction violation imho)
2006-02-22 22:28:18 +00:00
bjh21
0638b201c9
Include page ownership information in the output of the DDB "show all pages"
...
command if UVM_PAGE_TRKOWN is enabled.
2006-02-22 22:20:56 +00:00
bjh21
ed2f09f139
Add a "show all pages" command to DDB which prints one line per physical
...
page in the system. Useful for getting some idea where all your memory's
gone, at least on a sufficiently small system.
2006-02-19 18:52:29 +00:00
perry
fbae48b901
Change "inline" back to "__inline" in .h files -- C99 is still too
...
new, and some apps compile things in C89 mode. C89 keywords stay.
As per core@.
2006-02-16 20:17:12 +00:00
yamt
9040ed946b
- amap_copy: take a "flags" argument instead of booleans.
...
- add AMAP_COPY_NOMERGE flag, and use it for uvm_map_extract.
PR/32806 from Julio M. Merino Vidal.
2006-02-15 14:06:45 +00:00
yamt
f382834c1a
share some code between uvmpd_scan_inactive and uvmpd_scan.
2006-02-14 15:06:27 +00:00
yamt
16f42c29a4
fix a compilation problem where PAGE_SHIFT is not a constant.
...
pointed by Chuck Silvers.
2006-02-14 02:28:21 +00:00
yamt
e6e15660e2
remove an outdated comment.
2006-02-13 14:41:22 +00:00
yamt
62eb3a15e1
factor out swap clustering code.
2006-02-12 09:19:59 +00:00
yamt
2a89e06daa
uvm_pageunwire: use uvm_pageactivate rather than a copy.
2006-02-12 09:19:27 +00:00
yamt
a3af4c1530
remove the following options. no objections on tech-kern@.
...
UVM_PAGER_INLINE
UVM_AMAP_INLINE
UVM_PAGE_INLINE
UVM_MAP_INLINE
2006-02-11 12:45:07 +00:00
simonb
8b00a8c689
Make a note that some counters should be 64-bit as they wrap far to
...
quickly.
2006-02-10 00:53:04 +00:00
yamt
acb669a7cf
handle "strange" filesystems like layered filesystems and tmpfs,
...
where pgo_get returns pages which don't belong to the uobj.
also fix an XXX in uvm_loananon and lock-unlock mismatch in uvm_loanuobj.
PR/28372, PR/32665 (Alan Barrett).
2006-01-31 14:11:25 +00:00
yamt
43ed84382c
re-apply uvm_fault.c 1.104. fixes will follow.
2006-01-31 14:05:47 +00:00
yamt
f03efb066e
uvm_mremap: whitespace.
2006-01-31 14:03:53 +00:00
yamt
7fcddedf0b
revert uvm_fault.c 1.104 for now. see PR/28372, PR/32665.
2006-01-30 11:50:17 +00:00
yamt
f67f4b05f1
uvm_mremap: fix "easy cases".
2006-01-23 07:53:01 +00:00
matt
7db3afd210
Fix u_int64_t -> uint64_t stragglers.
2006-01-21 18:57:45 +00:00
yamt
e8e7ab8637
implement compat_linux mremap.
2006-01-21 13:34:15 +00:00
yamt
651bed2a01
- uvm_fault: move a common code of 1B and 2B to a new function.
...
don't attempt to allocate anons with kernel_map locked. PR/32543.
- amap_copy: add an assertion.
2006-01-21 13:13:07 +00:00
yamt
5865f6ed1d
uvm_map_replace: remove a wrong comment.
2006-01-21 13:10:41 +00:00
chs
5570661cd8
in amap_alloc(), only put the amap on the list of amaps if we succeeded
...
in allocating it.
2006-01-18 17:03:36 +00:00
yamt
b88fc0e1b7
make some debug statistics evcnt.
2006-01-15 08:31:31 +00:00
yamt
37dd42949a
clean up uvm_map evcnt code. no functional changes.
2006-01-08 09:18:27 +00:00
yamt
dc9b2af242
uvmpd_scan_inactive: when reactivating a page,
...
use pmap_is_referenced rather than pmap_clear_reference.
we don't need to clear the bit here as we'll do so when
moving pages back to inactive queue again. pointed by Chuck Silvers.
2006-01-05 10:47:33 +00:00
yamt
690d424f28
- add simple functions to allocate/free a buffer for i/o.
...
- make bufpool static.
2006-01-04 10:13:05 +00:00
perry
3d4ed1fbc7
__inline__ -> inline
2005-12-24 23:41:33 +00:00
perry
0f0296d88a
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
2005-12-24 20:45:08 +00:00
yamt
2b91131918
uao_get: don't mark pages dirty unless it's a write fault.
2005-12-24 13:22:13 +00:00
yamt
79265831ba
uvmpd_scan: when deactivating a page, clear its reference bit.
...
discussed on tech-kern@.
2005-12-21 12:24:47 +00:00
yamt
ca08761347
whitespace in SYSCTL_DESCR.
2005-12-21 12:23:44 +00:00
yamt
4fce5d6f5e
make length of inactive queue tunable by sysctl. (vm.inactivepct)
2005-12-21 12:19:04 +00:00
skrll
dd1a604b66
Whitespace
2005-12-20 08:25:58 +00:00
christos
95e1ffb156
merge ktrace-lwp.
2005-12-11 12:16:03 +00:00
chs
b794108bfa
Avoid leaking memory if uiomove fails. from openbsd via PR 32251.
2005-12-06 16:01:13 +00:00
yamt
ebf0820ef4
uao_pagein_page: pass PGO_SYNCIO to uao_get.
...
uao_get doesn't always assume PGO_SYNCIO after yamt-readahead merge.
reported and a dump provided by Masanori Kanaoka.
2005-12-05 01:24:07 +00:00
yamt
b09859311d
add files i forgot to add when merging yamt-readahead branch.
2005-11-29 23:37:59 +00:00
yamt
221616873d
merge yamt-readahead branch.
2005-11-29 22:52:02 +00:00
yamt
52f0a62851
read-ahead statistics.
2005-11-29 15:45:28 +00:00
thorpej
ff810990b2
Move UVM files to files.uvm
2005-11-27 22:18:41 +00:00
simonb
155c8bd666
Whitespace nit.
2005-11-09 12:47:39 +00:00
yamt
9df1f09b91
add a function to drop all swap slots in a given range. for tmpfs.
...
XXX maybe it's better to implement true truncation.
2005-11-08 23:02:22 +00:00
chs
5332333501
in amap_cow_now(), handle the case where we have to sleep and some of the
...
already-copied pages are paged out. anons that have already been copied
will have refcount == 1, whereas anons that still need to be copied will
have refcount > 1. fixes PR 25392, PR 30257, PR 31924.
2005-11-06 15:57:32 +00:00
yamt
94ce3d822f
don't include uvm_*_i.h unless needed,
...
to reduce bogus header dependencies.
2005-10-30 11:56:51 +00:00
chs
da3f825c26
remove the assertion in uvm_swapout_threads() about LSONPROC lwps
...
not running on the same CPU as the swapper. l_stat is protected by
sched_lock, which isn't held here, so we can race with that lwp
starting to run and see its l_cpu not updated yet, as in PR 31870.
we check l_stat again in uvm_swapout() while holding sched_lock,
so the race itself is harmless.
2005-10-24 00:26:37 +00:00
yamt
aec75b1cc6
- change the way to specify a bufq strategy. (by string rather than by number)
...
- rather than embedding bufq_state in driver softc,
have a pointer to the former.
- move bufq related functions from kern/subr_disk.c to kern/subr_bufq.c.
- rename method to strategy for consistency.
- move some definitions which don't need to be exposed to the rest of kernel
from sys/bufq.h to sys/bufq_impl.h.
(is it better to move it to kern/ or somewhere?)
- fix some obvious breakage in dev/qbus/ts.c. (not tested)
2005-10-15 17:29:10 +00:00
chs
9307d68e6a
stop converting async msync() to sync.
...
this hasn't been needed for years (if it ever was).
2005-10-10 15:53:28 +00:00
yamt
bddc9e47fe
add a file which i forgot when reviving VMSWAP option.
2005-09-21 10:21:46 +00:00
yamt
b63b4e8324
- make uvm_swap_stats acquire swap_syscall_lock by itsself
...
so that callers don't need to acquire it beforehand.
- make swap_syscall_lock static.
2005-09-17 14:51:50 +00:00
yamt
d597202302
make VMSWAP optional again.
2005-09-17 14:38:38 +00:00
yamt
1f6a8b12c5
uao_put: don't skip loaned or wired pages.
2005-09-14 20:25:21 +00:00
yamt
6fbf5bf6f1
wrap swap related code by #ifdef VMSWAP. always #define VMSWAP for now.
2005-09-13 22:00:05 +00:00
yamt
873763ea0f
uao_put: recognize endoff == 0 as "to the end of the object",
...
as VOP_PUTPAGES (thus vnode pager) does. for tmpfs.
2005-09-13 19:54:09 +00:00
yamt
74be61b2e6
remove one of duplicated forward decl. of vmspace. pointed by Dheeraj S.
2005-09-01 02:21:12 +00:00
yamt
b34f62d5e9
put back uvm_fault.h for now as it's needed for some ports.
2005-09-01 02:16:46 +00:00
yamt
be5d1db4a4
don't include uvm_fault.h unnecessarily.
2005-08-27 16:11:32 +00:00
yamt
38ca5312d2
revert "defflag VMSWAP" changes for now.
...
there seems to be far more people who don't want to edit
their kernel config files than i thought.
2005-07-31 04:04:30 +00:00
yamt
1d0891101c
defflag VMSWAP.
2005-07-30 06:33:33 +00:00
yamt
b7bfe82866
update file timestamps for nfsd loaned-read and mmap.
...
PR/25279. discussed on tech-kern@.
2005-07-23 12:18:41 +00:00
yamt
62cab9eab7
uvm_fault: check a correct object in the case of layered filesystems.
...
fix PR/30811 from Jukka Salmi.
2005-07-22 14:57:39 +00:00
yamt
8af42d8d3c
ensure that vnodes with dirty pages are always on syncer's queue.
...
- genfs_putpages: wait for i/o completion of PG_RELEASED/PG_PAGEOUT pages by
setting "wasclean" false when encountering them.
suggested by Stephan Uphoff in PR/24596 (1).
- genfs_putpages: write protect pages when cleaning out, if
we're going to take the vnode off the syncer's queue.
uvm_fault: don't write-map pages unless its vnode is already on
the syncer's queue.
fix PR/24596 (3) but in the different way from the suggested fix.
(to keep our current behaviour, ie. not to require explicit msync.
discussed on tech-kern@.)
- genfs_putpages: don't mistakenly take a vnode off the queue
by introducing a generation number in genfs_node.
genfs_getpages: increment the generation number.
suggested by Stephan Uphoff in PR/24596 (2).
- add some assertions.
2005-07-17 12:27:47 +00:00
yamt
2a6dc9d02d
- introduce PGO_NOBLOCKALLOC and use it for ubc mapping
...
to prevent unnecessary block allocations in the case that
page size > block size.
- ufs_balloc_range: use VM_PROT_WRITE+PGO_NOBLOCKALLOC rather than
VM_PROT_READ.
2005-07-17 09:13:35 +00:00
thorpej
5303f3b378
Clean up the cpp macro used to say "we're compiling this specific C file".
2005-06-28 05:25:42 +00:00
thorpej
9057ed7600
Make a note about why a large function like uvm_loanentry() can be
...
an inline in this case.
2005-06-28 04:06:52 +00:00
thorpej
8d3ff810fa
Add missing PAGE_INLINE to uvm_pagelookup()
2005-06-28 04:00:07 +00:00
thorpej
fcd6584a58
Clean up the use of __inline in this file. In particular, don't inline
...
really big chunks of code. This saves almost 2.5K on a GENERIC i386
kernel, and has the added benefit of not polluting the I$ so much.
2005-06-28 01:07:56 +00:00
thorpej
b651fb886d
Sprinkle some static.
2005-06-27 02:29:32 +00:00
thorpej
154a970ff4
Small whitespace tweak.
2005-06-27 02:23:26 +00:00
thorpej
e569facced
Use ANSI function decls.
2005-06-27 02:19:48 +00:00
jmc
1786cf4f46
Change signature of uvm_kmapent_map defintiion to __INLINE to match prototype
2005-06-13 20:39:14 +00:00