mrg
6b11eea5b2
reject attempts to map an immutable or append-only file, shared with
...
write protection. this stops data corruption where it was possible
to change the in-memory copy of an append-only file (but not the on-disk
copy). this is documented in NetBSD security advisory 1998-003. thanks
to darrenr, lukem, cgd, mycroft and mrg for this.
1998-05-10 12:35:58 +00:00
kleink
6fa43ba824
Minor KNF.
1998-05-09 15:05:50 +00:00
kleink
afeaa5bb57
Use size_t to pass the length of the memory region to operate on to chgkprot(),
...
kernacc(), useracc(), vslock() and vsunlock(); (unsigned) ints are not
adequate on all platforms.
1998-05-09 15:04:39 +00:00
kleink
d9066c40e9
Make uvm_vsunlock() actually use the proc * passed to it; per discussion
...
with Jason Thorpe.
1998-05-08 17:41:41 +00:00
kleink
182e12f413
Remove inclusions of syscall (and syscall argument) related header files;
...
we don't need them here.
1998-05-05 20:51:04 +00:00
mrg
dae55b7b7b
fix a problem with swapping to files where a new variable introduced was not
...
later incremented correctedly, causing the wrong data to be paged out, which
then caused general lossage later when the data was paged in and the process
tried to use it. found by pk.
1998-05-01 01:40:02 +00:00
thorpej
73863dd3c9
Pass vslock() and vsunlock() a proc *, rather than implicitly operating
...
on curproc.
1998-04-30 06:28:57 +00:00
matthias
fceafcf990
port-pc532 now has pmap_new just like port-i386.
1998-04-25 19:58:58 +00:00
thorpej
339c715a9e
Fix small whitespace botch.
1998-04-16 03:54:35 +00:00
thorpej
fe97b1da8e
Oops, fix a typo.
1998-04-09 00:24:05 +00:00
thorpej
2018d40811
Allocate kernel virtual address space for the U-area before allocating
...
the new proc structure when performing a fork. This makes it much
easier to abort a fork operation and return an error if we run out
of KVA space.
The U-area pages are still wired down in {,u}vm_fork(), as before.
1998-04-09 00:23:38 +00:00
tv
39b4c2fece
mmap() default MAP_SHARED/MAP_PRIVATE is `DEBUG'', not
`DIAGNOSTIC''
1998-04-01 21:43:52 +00:00
chuck
9eb2927bec
free correct page in incomplete section of MNN, as pointed
...
out by Soren S. Jorvang.
1998-03-31 03:04:59 +00:00
chuck
fe4846acdc
have ddb show map print resident page count
1998-03-30 17:34:58 +00:00
mycroft
0652b9af01
Mark scheduler() and uvm_scheduler() as never returning.
1998-03-30 06:24:42 +00:00
kleink
6618749e5a
Per XPG, if the file descriptor argument to mmap() refers to a file whose
...
type is not supported (neither VREG nor VCHR, or not a vnode at all), fail
with ENODEV instead of EINVAL.
1998-03-28 16:58:04 +00:00
thorpej
b65c510879
Split uvmspace_alloc() into uvmspace_alloc() and uvmspace_init(). The latter
...
can be used for initializing a pre-allocated vmspace.
1998-03-27 01:47:06 +00:00
chuck
db81cc9c76
update per-process rusage fault counters (ru_majflt/ru_minflt) under UVM
1998-03-26 21:50:14 +00:00
chuck
e6da5a01e4
remove tmpwire arg from uvm_pagewire() -- it isn't needed anymore.
...
noted by chuck s.
1998-03-22 21:29:30 +00:00
chuck
617118bccc
fix released pg bugs detected by Chuck S.:
...
- release the correct page (ppsp[lcv], not pg)
- don't access the page's fields after we have released it
- in the uvm_objct case: move on to the next page if we've released
[should have been merged in on 1998/02/12, but we somehow missed it]
1998-03-22 16:10:29 +00:00
chuck
dd370f11a3
rework the copy inheritance case of fork. the old way did not handle
...
the very rare case of shared mappings that have amap's attached in a
reasonable way -- this is not currently causing any problems, but i
fixed it anyway. update the comment in this section of code and also
be smarter about avoiding needless calls to pmap_protect().
1998-03-19 19:26:50 +00:00
thorpej
dbc7bbee68
Make the previous change `atomic'.
1998-03-19 06:37:26 +00:00
thorpej
daade671ae
When unsharing or execing, deactivate the old vmspace before reassigning
...
and activating the new one. Pointed out by Chris Demetriou.
1998-03-19 04:19:21 +00:00
mrg
be92b169f8
oops, missed a bit of KNF here.
1998-03-17 07:50:08 +00:00
chuck
927ec8b012
bug fix: when doing uvm_vnp_sync() actually skip over blocked uvn's so
...
that we don't try and sync them later. should get rid of the
"uvm_vnp_sync: dying vnode on sync list" related warnings that were
occuring during a "make install."
1998-03-11 01:37:40 +00:00
chuck
21624aaf72
uvm_dump now dumps some important pointers for debugging
1998-03-10 14:36:55 +00:00
mrg
8106d13596
KNF.
1998-03-09 00:58:55 +00:00
mycroft
24e6e6a0e7
Convert MAP_PRIVATE device mappings to MAP_SHARED on *all* platforms, not just
...
the SPARC.
Remove the #ifdef COMPAT_13 for automatically adding a sharing type, since the
interface is *supposed* to support this.
Also modify the DIAGNOSTIC messages here a bit.
1998-03-03 14:34:10 +00:00
fvdl
e5bc90f40c
Merge with Lite2 + local changes
1998-03-01 02:20:01 +00:00
chuck
cbd05b1537
be consistent about offsets in kernel objects. vm_map_min(kernel_map)
...
should always be the base [fixes problem on m68k detected by jason thorpe]
add comments to uvm_km.c explaining kernel memory management in more detail
1998-02-24 15:58:09 +00:00
thorpej
1e3e1bfe09
Include the NFS option header.
1998-02-19 00:55:04 +00:00
drochner
93a065690b
fix map range boundary check
1998-02-18 14:50:32 +00:00
mrg
3ed2e6ac6c
bug fix from chuck: uvm_vnp_terminate panic when /sbin/init was unlinked
1998-02-18 06:35:46 +00:00
thorpej
550678e57f
Oops, fix a typo.
1998-02-13 05:34:30 +00:00
thorpej
e6c31d3db7
KNF.
1998-02-13 05:33:55 +00:00
thorpej
872181c2f2
A few changes to make it possible to read UVM histories from userland:
...
- Protect option headers from inclusion if ! _KERNEL or if _LKM.
- Make sure struct uvm_history is always the same size (not dependent
on NCPU).
- Add fmtlen and fnlen members to struct uvm_history_ent, which specify
the lengths fo the fmt and fn strings.
- Add name, namelen, and a list entry to struct uvm_history.
- When a history is initialized, place it on the global list of all histories.
1998-02-13 04:55:14 +00:00
thorpej
cb5f8ef1df
Add a global list of all UVM histories.
1998-02-13 04:52:00 +00:00
thorpej
90aee42d35
Provide a patchable knob (uvmhist_print_enabled) so that UVM history
...
buffer printing can be switched on and off at run-time. Only exists
if the kernel is build with UVMHIST_PRINT, and defaults to `on'.
1998-02-12 20:10:15 +00:00
chs
7f45dbdfae
add copyright.
1998-02-12 07:36:43 +00:00
mrg
d90485202c
- add defopt's for UVM, UVMHIST and PMAP_NEW.
...
- remove unnecessary UVMHIST_DECL's.
1998-02-10 14:08:44 +00:00
perry
021fdb646a
add/cleanup multiple inclusion protection.
1998-02-10 02:34:17 +00:00
mrg
e92c7d991e
KNF.
1998-02-09 14:35:48 +00:00
mrg
7d3aef40b3
keep statistics on pageout/pagein, total pages, and total operations.
1998-02-09 13:08:22 +00:00
mrg
3112d4b3e1
KNF.
1998-02-09 04:05:36 +00:00
mrg
7ff12d37cc
fill out vmtotals: t_free, t_vm, t_avm, t_rm and t_arm. leaves shared of same, and t_pw.
1998-02-08 22:23:33 +00:00
thorpej
39f8b8c99b
Round allocations to page size in uvm_pageboot_alloc().
1998-02-08 18:27:30 +00:00
mrg
6122fae970
KNF
1998-02-08 16:07:57 +00:00
mrg
bc3395e590
turn of UVM history logging by default.
1998-02-08 14:19:21 +00:00
mrg
d9b2f81e27
move pdhist initialisation to the same place as maphist. also, declare
...
the history buffers are "struct uvm_history_ent" to ensure proper
alignment (eg, alpha). this fixes a boottime panic when the pdhist was
used before it had been initialised.
1998-02-08 07:52:28 +00:00
thorpej
1305ecbe62
Allow callers of uvm_km_suballoc() to specify where the base of the
...
submap _must_ begin, by adding a "fixed" boolean argument.
1998-02-08 06:15:53 +00:00
mrg
0a058cb62f
implement counters for pages paged in/out
1998-02-07 17:00:36 +00:00
mrg
4ef57d4d22
KNF.
1998-02-07 12:45:53 +00:00
mrg
5e55ce6648
bzero the entire vmspace, like the old vm does. makes ps report sane values of VSZ for swapper/pagedaemon
1998-02-07 12:31:32 +00:00
mrg
1f6b921cf7
restore rcsids
1998-02-07 11:07:38 +00:00
chs
9b371040ea
keep track of how many pages are currently being paged out,
...
stop initiating new pageouts when "(free + paging) > freetarg".
fix pageq locking.
1998-02-07 02:35:11 +00:00
chs
c2f8ffc062
reserve some pages for the kernel, and some more especially
...
for the pagedaemon allocating from kmem_object. this should
prevent from the pagedaemon running out of memory and deadlocking.
fix counting of wired pages.
add some debugging code to detect attempts to reference free vm_pages.
1998-02-07 02:34:08 +00:00
chs
249efd73a1
enable hashtables for swapslot storage - deadlock is fixed.
...
fix initialization of swhash entries.
use malloc(M_NOWAIT) for creating kernel object.
avoid dereferencing a vm_page once the page has been freed.
1998-02-07 02:32:37 +00:00
chs
39c12db74f
declare aobj_pager, needed in uvm_km.c.
1998-02-07 02:31:06 +00:00
chs
c82ac447df
convert kernel_object to an aobj.
...
in uvm_km_pgremove(), free swapslots if the object is an aobj.
in uvm_km_kmemalloc(), mark pages as wired and count them.
1998-02-07 02:29:21 +00:00
chs
6376c02019
enable paging of kernel_object.
1998-02-07 02:26:46 +00:00
chs
732a925b1b
add locking of kernel_map in uvm_kernacc().
...
check return value of uvm_fault_wire() in uvm_fork().
enable swappings.
1998-02-07 02:26:04 +00:00
chs
29ec5fd8d5
prototype for uvm_map_checkprot() moved here.
...
add uvmexp fields for pagouts-in-progress and kernel-reserved pages.
1998-02-07 02:24:02 +00:00
chs
273ac223ec
prototype for uvm_map_checkprot() moved to uvm_extern.h.
1998-02-07 02:22:24 +00:00
chs
21e2cac359
fix typoes in locking.
...
use M_UVMAMAP instead of M_TEMP for malloc type.
1998-02-07 02:21:29 +00:00
chs
5a7c4f2caa
don't try to relock amap if there isn't one.
1998-02-07 02:19:55 +00:00
chs
7cb9f7e5b1
rearrange a bit for clarity.
1998-02-07 02:18:27 +00:00
chs
098b8c2420
fix typoes in locking.
1998-02-07 02:17:48 +00:00
chs
1f583a43b1
remove locking from UVMCNT counters.
...
they don't need to be exact, and the locking causes problems
in some of places they're used.
1998-02-07 02:16:52 +00:00
thorpej
9eb328b495
RCS ID police.
1998-02-06 22:26:13 +00:00
mrg
f2caacc717
initial import of the new virtual memory system, UVM, into -current.
...
UVM was written by chuck cranor <chuck@maria.wustl.edu>, with some
minor portions derived from the old Mach code. i provided some help
getting swap and paging working, and other bug fixes/ideas. chuck
silvers <chuq@chuq.com> also provided some other fixes.
this is the UVM kernel code portion.
this will be KNF'd shortly. :-)
1998-02-05 06:25:08 +00:00