perry
24920eefb1
RCSID Police.
1998-01-05 19:40:40 +00:00
thorpej
5739c88a75
Implement address space sharing (by keeping ref counts on the vmspace
...
structure). Many thanks to Chuck Cranor for debugging assistence.
1998-01-03 02:53:00 +00:00
thorpej
b9f1b716f3
Now that all ports have pmap_activate(), and it has an identical interface,
...
prototype it in <vm/pmap.h>
1998-01-03 01:12:59 +00:00
thorpej
a322314f51
Split out the code that prepares a VM space for exec into a new
...
vmspace_exec() function.
1997-12-31 07:47:41 +00:00
pk
443a2a02f4
"pool" routines moved to kern/subr_pool.c
1997-12-15 11:18:41 +00:00
pk
5d1352c448
Guard against synchronous I/O completetion per swap-device.
1997-12-02 13:47:37 +00:00
pk
1736bb9de8
Make the code a bit more readable.
1997-12-01 17:10:48 +00:00
pk
d4a6f93147
Make sure the damned buffer heads are initialized...
1997-12-01 16:33:15 +00:00
pk
46f604677d
Avoid several race conditions, especially when a transaction ends in error.
...
Guard sw_reg_start() against synchronous completions of the device
strategy routines, avoiding possibly boundless recursion.
1997-11-29 00:35:43 +00:00
thorpej
97d2a58201
Fix slight argument bogosity with getgroups(), setgroups(), select(),
...
and swapctl(). For the former three, they use an 'int' in their user-land
prototype which was a 'u_int' in the kernel, which screwed up automatic
generation/checking of lint syscall stubs. For the latter, the user-land
prototype uses a "const char *", but the syscall just used "char *".
From Chris Demetriou <cgd@pa.dec.com>.
1997-11-04 21:24:14 +00:00
thorpej
14cd99880c
Fix the shared library versioning snafu caused by the recent changes
...
to the stat(2) family and msync(2). This uses a primitive function
versioning scheme.
This reverts the libc shared library major version from 13 to 12, and
adds a few new interfaces to bring us to libc version 12.20.
From Frank van der Linden <fvdl@NetBSD.ORG>.
1997-10-20 22:05:06 +00:00
pk
d24dbbbfc4
A `simplelock' suffices for most swap device list traversals, as noted
...
by Chuck Cranor.
Use an exclusive (long-term) lock before applying changes to the swap
lists. This lock is also used by the stats system call because of possible
blocking in copyout().
1997-10-17 19:06:05 +00:00
christos
b82d33e84c
PR/4269: Chris Demetriou: msync is missing the MS_* flags.
...
Also change caddr_t syscall arguments to void *
1997-10-16 23:29:26 +00:00
pk
dfbda96da0
Use `long' to cast a pointer to an integer and back.
1997-10-14 08:50:18 +00:00
pk
e95c79e586
Keep a private pool of auxiliary resources (vndxfer & vndbuf structures)
...
used to setup I/O to regular files.
Implemented in a somewhat generic way, for what it's worth.
1997-10-13 19:15:19 +00:00
mrg
55c881fbd2
when creating the per-device extent, use from 0 to nblks, and then
...
extent_alloc_region() any skipped space. this is (basically) what
the previous swap code did (with rmaps rather than extents).
1997-10-10 13:16:24 +00:00
mrg
74f573d85d
remove advertising clause from all my licenses.
1997-10-10 05:39:47 +00:00
chuck
081b0ea365
correct a comment
1997-09-22 15:22:12 +00:00
enami
8a45521059
Convert RTC_OFFSET, DEVPAGER, SWAPPAGER and VNODEPAGER to be declared
...
by defopt.
1997-09-20 00:44:05 +00:00
thorpej
9a31fc02fe
Don't forget to increase the free page count in vm_page_free_memory(),
...
pointed out by Mark Brinicombe <mark@causality.com>.
1997-09-16 00:08:09 +00:00
pk
9f1374779b
Remove a comment that's incorrect since last commit.
1997-09-10 18:26:33 +00:00
pk
2d8fd853ae
Unlocking the target object within vm_object_overlay() is safe, since
...
the backing object is protected the OBJ_FADING flag.
In vm_object_deallocate(), gain a reference to the object we try to
collapse (per Manuel Bouyer).
1997-09-08 21:23:22 +00:00
chuck
1821ecc346
import sys_minherit() from openbsd.
1997-09-08 18:19:45 +00:00
pk
c5d6596b7c
vm_object_deallocate():
...
Unlock the object cache before looking for collapse candidates.
Use vm_object_lock_try() to obtain a lock on a collapse candidate.
This avoids a deadlock due to recursively entering
vm_object_deallocate() in case a backing object goes away.
vm_object_collapse() and helper functions:
The object passed in is locked; make sure it is locked when
we leave vm_object_collapse().
XXX: Currently, the object is not unlocked during while we possibly
wait for pager data. We need to consider the effects of
simultaneous calls to vm_object_collapse() on the same object
in case unlocking is necessary.
1997-09-07 21:19:41 +00:00
pk
9bec4e7918
Don't hold on to object and queue locks while sleeping.
1997-09-07 20:41:59 +00:00
pk
0c386233d4
Adapt a diagnostic to big-endian machines.
...
(Not that it actually works on little-endians, but we can easily make it not
work on big-endians all the same).
1997-09-07 20:39:23 +00:00
pk
fff424c798
Add missing `unlock(&vm_object_list_lock);'
1997-09-07 19:31:52 +00:00
mrg
66d1e506df
remove last vestigates of __FORK_BRAINDAMANGE
1997-08-27 02:35:38 +00:00
drochner
448446ec38
Don't make coredump of areas which are mmap()ed from a device.
...
This can have bad side effects.
Closes PR kern/3252.
1997-07-22 10:06:43 +00:00
fvdl
933d4afe84
Make vm_map_clear_recursive behave exactly like the old lock_clear_recursive.
...
This doesn't make a difference in the way that it's currently being called,
but it's more intuitive.
1997-07-20 23:23:45 +00:00
fvdl
5a4803bc55
XXX - some userland code includes this, needing <sys/time.h>, so
...
include it, for the time being.
1997-07-07 10:57:34 +00:00
fvdl
206e9582ef
Move lock.h and kern_lock.c to their rightful places, as in Lite2. Make
...
the VM code use the new interface.
1997-07-06 12:38:25 +00:00
drochner
8c0a9bab00
Don't cast 64bit (off_t) file sizes to vm_offset_t (32bit on many
...
architectures), truncate them intelligently instead.
The truncation is done centralized in vnode_pager.c.
This prevents from wrap-over effects when parts of large (>2^32 byte) files
are mmapped.
Don't allow to mmap above the numerical range of vm_offset_t.
This is considered a temporary solution until the vm system handles the
object sizes/offsets more cleanly.
1997-07-04 20:22:09 +00:00
thorpej
657f118b7f
Update the status of a couple of items here... specifically, more aggressive
...
object collapse (DONE), machine-dependent hook for virtual memory allocation
(DONE - PMAP_PREFER()), and better coherency between page and buffer
caches (A LITTLE BETTER - we sync up the vnode pager in the sync(2)
system call now).
1997-06-26 01:02:07 +00:00
mrg
781dfea84f
back out previous. look in unistd.h.
1997-06-23 01:15:03 +00:00
christos
796badce6b
PR/3772: Matthias Scheler: Missing swapctl prototype.
1997-06-22 19:35:55 +00:00
pk
98ce8ab879
Remove __FORK_BRAINDAMAGEd code; it's no longer needed.
1997-06-19 20:54:15 +00:00
thorpej
3bd11220b6
Don't print a message if the user attempts SWAP_OFF. Return an error
...
instead.
1997-06-17 03:37:07 +00:00
thorpej
c61704d37c
Remove the code that sets dumpdev, for two reasons:
...
- It was incorrect. A dev_t should _never_ be compared against
NULL, as 0 is a valid value (major 0, minor 0).
- The operator mave have _intentionally_ set dumpdev to "none"
(i.e. NODEV), and setting it the first time a VBLK swap device
is added would break the semantics.
setroot() deals with all dump device selection. Dumps and swap are now
in no way related.
1997-06-16 20:21:55 +00:00
mrg
c78d0720ff
- set dumpdev if not already set
...
- don't use nocoalease (from thorpej).
- fix priority list management (from pk).
- update comment for swapoff.
- free swap device extent name safely (from thorpej).
1997-06-16 13:35:17 +00:00
pk
e5b0a8820b
As long as we actually use `swapdev_vp', initialize it.
1997-06-13 15:37:17 +00:00
mrg
21cc3ddfd5
bring mrg-vm-swap2 onto mainilne.
1997-06-12 14:51:20 +00:00
thorpej
433c3cae0f
Pull thorpej-bus-dma branch into mainline.
1997-06-06 23:10:23 +00:00
gwr
09da7e273e
Eliminate vmspace.vm_pmap and all references to it unless
...
__VM_PMAP_HACK is defined (for temporary compatibility).
The __VM_PMAP_HACK code should be removed after all the
ports that define it have removed all vm_pmap references.
1997-05-16 21:39:50 +00:00
thorpej
e73580920d
Change to not require including <sys/dmap.h>
1997-04-17 00:12:50 +00:00
thorpej
27b49a0ede
XXX Kludge for PowerPC; need to use kernel vfprintf().
1997-04-17 00:12:08 +00:00
thorpej
90ece8ebcb
Declare dmmin, dmmax, swapmap, and nswapmap here.
1997-04-17 00:08:50 +00:00
mycroft
448427b7ba
Document a requirement of vm_object_bypass().
1997-04-08 22:35:49 +00:00
mycroft
69e0aacce3
Remove the `backing_object still referenced' panic, since there's an expected
...
race with vnode_pager_sync().
1997-04-07 01:57:14 +00:00
mycroft
3a474fa002
Remove a printf() that's no longer needed.
1997-03-03 20:56:12 +00:00
mycroft
700dee447e
DTRT if vm_object_lookup() returns NULL. This may happen while an object is
...
being created or destroyed.
1997-02-27 17:49:05 +00:00
tls
fad978b853
a mutex on vnode_pager_sync avoids another race condition, only possible if sync were called again while we were sleeping. This should be the last of this nest of bugs. From mycroft.
1997-02-26 02:26:19 +00:00
thorpej
cbb4319fb9
vm_object_shadow(): Add a DIAGNOSTIC check for shadowing a null object.
...
From Charles Hannum <mycroft@netbsd.org>
1997-02-25 23:28:09 +00:00
thorpej
a49641e340
vm_map_copy_entry(): Don't set "needs_copy" on a zero-fill entry.
...
From Charles Hannum <mycroft@netbsd.org>
1997-02-25 23:27:08 +00:00
thorpej
7327c8cf62
From Charles Hannum:
...
During a collapse, abort if the object is paging; the pagedaemon can
trigger a collapse, causing deadlock. (XXX)
1997-02-24 22:19:26 +00:00
mrg
82f19ac36c
lite2
1997-02-23 09:58:53 +00:00
mrg
3b9c3fff2e
restructure vm_object_overlay() to collapse objects in more cases.
...
change one diag panic() to a diag printf(). from mycroft.
1997-02-23 09:01:37 +00:00
mrg
8eba4aeacb
don't clean fading objects. from mycroft.
1997-02-23 08:56:57 +00:00
thorpej
a49beaa16a
Possesive, Jason... possesive....
1997-02-22 04:36:48 +00:00
thorpej
75be8504f4
More good stuff from Charles:
...
Eliminate a nasty race condition in vnode_pager_sync() by making
two passes. First, find all of the objects to be cleaned and reference
them. Second, traverse this list objects, cleaning them if there are
references other than us.
1997-02-22 04:11:42 +00:00
thorpej
255b9d74d8
Rewrite the object chain collapse code. Bugs fixed are too numerous
...
to describe here. This should fix the problems with "hanging processes"
people have seen since the original object collapse code was committed.
From Charles Hannum <mycroft@netbsd.org>
1997-02-21 20:30:49 +00:00
thorpej
235a2d71f7
Use vm_object_paging() to test if an object has pages in transit.
...
From Charles Hannum <mycroft@netbsd.org>
1997-02-21 20:27:21 +00:00
thorpej
dd8d0f1f00
Define a macro to test if an object has pages in transit. Clarify
...
some arithmetic, and nuke an unneeded prototype.
From Charles Hannum <mycroft@netbsd.org>.
1997-02-21 20:26:03 +00:00
thorpej
17b60fc6e9
In vnode_pager_sync(), we need to vm_object_deallocate() after cleaning
...
pages. Noticed by Thor Simon <tls@netbsd.org>, confirmed by
Charles Hannum <mycroft@netbsd.org>
1997-02-21 20:22:39 +00:00
mrg
42ae012452
This is all from mycroft:
...
Create macros (with names borrowed from Mach 3) to manipulate
object->paging_in_progress, and use them. When decreasing the
paging count, always make sure to wake up anyone waiting.
Fixes `vospgc', `vosca1', and `vosca2' hangs.
1997-02-18 13:39:31 +00:00
tls
127c6b54e7
Sigh. I initially had this exactly backwards: the object needs to be locked, the vnode does *not*. Avoids panic: locking against myself quickly reported by Charles.
1997-02-17 13:10:28 +00:00
tls
a507fda378
vnode_pager_sync bugs: A) must lock the object, not just the vnode. B) Don't remove the object from paging queues, because we'd have to put it back on one. The pagedaemon will eventually take care of this for us anyway. This was causing us to *lose track of pages completely* every time vnode_pager_sync() was called... sigh. Credit goes to mycroft for untangling this mess.
1997-02-17 06:22:52 +00:00
tls
4b1213d27c
sync needs to clean VM objects backed by vnode pagers
1997-02-13 02:54:06 +00:00
mrg
491e8af174
minor KNF from jason.
1997-02-05 08:26:25 +00:00
mrg
eadd7792d9
add thread_sleep_msg() that takes a wait message, and change thread_sleep()
...
into a macro for backwards compat. alter vm_object_sleep() to take advantage
of this.
1997-02-05 08:09:45 +00:00
mrg
85328f7b35
KNF.
1997-02-05 07:48:42 +00:00
thorpej
593fdd462d
NFSCLIENT -> NFS
1997-01-31 03:06:06 +00:00
thorpej
b7a5b84750
Treat the nswdev == 0 case like the nswap == 0 case; don't panic, just
...
report no swap space. Suggested by Leo Weppleman <leo@netbsd.org>.
1997-01-22 07:28:21 +00:00
mrg
4f2a217c2b
pull up vm_object_collapse() fix from mrg_vm_object_collapse branch.
...
many thanks to niklas hallqvist (niklas@appli.se ) for this.
1997-01-03 18:03:14 +00:00
mrg
f3d9c468e1
minor KNF changes.
1997-01-03 18:00:25 +00:00
cgd
8a3333b2a9
Fix an inconsistency that came in with Lite: setrq() was renamed to
...
setrunqueue(), but remrq() was never renamed. Rename remrq() to
remrunqueue().
1996-11-06 20:19:19 +00:00
cgd
ee08818e7a
Fix an inconsistency that came in with Lite: setrq() was renamed to
...
setrunqueue(), but remrq() was never renamed. Rename remrq() to
remrunqueue(). Also, move remrunqueue() prototype from vm/vm_extern.h
to sys/proc.h, so that it's in the same place as the setrunqueue() prototype
and other related prototypes.
1996-11-06 19:33:39 +00:00
gwr
f5927ca260
Minor nit in my change regarding const and non-ansi code...
1996-10-27 21:50:33 +00:00
gwr
2ada6af51b
Oops, part of that last commit was not meant to go in.
...
The definitions of va_alist, va_dcl belong elsewhere.
1996-10-27 20:50:00 +00:00
gwr
a0d9bd5bb2
The hack-ish tricks to make the ANSI-style va_start macro work in
...
non-ANSI mode were not quite complete. This makes non-ANSI work.
Perhaps it would be better to eliminate this hack altogether...
1996-10-27 20:30:52 +00:00
matthias
3ff0c0553e
* The kernel-stack no longer needs to be wired-down on the pc532.
1996-10-23 07:20:09 +00:00
perry
9ab047883b
Fix unused variable -Wxxx failure when MINIROOTSIZE defined.
1996-10-21 01:32:38 +00:00
christos
3dc7953eec
back out previous kprintf changes
1996-10-12 21:50:05 +00:00
christos
de1b2b437e
printf -> kprintf, sprintf -> ksprintf
1996-10-10 17:16:17 +00:00
ws
2da166f660
Fix p_nice vs. NZERO code.
...
Change NZERO to 20 to always make p_nice positive.
On Christos' suggestion make p_nice explicitly u_char.
1996-10-02 18:04:56 +00:00
mrg
2fc2b98d83
make pageout sleep on vm_pages_needed rather than lbolt. this stops
...
pathological behaviour (freezes) when running short of free pages. see
PR#2755 for a more detailed explanation (from jonathan).
thanks to john dyson for the first cut of this change.
1996-09-18 02:04:50 +00:00
cgd
62034405e6
allow kmem_malloc to return NULL if canwait is set and there's no map space
...
left, rather than panic()ing. This allows callers to set their own policy
for how to handle the shortage. Add a few comments.
1996-06-13 16:52:06 +00:00
pk
7acbd9511d
Make v_swpin & v_swpout tick.
1996-05-29 21:20:11 +00:00
mrg
047dfa8524
count pagein faults in struct user. (from kenneth stailey pr#1397])
1996-05-20 17:40:02 +00:00
ragge
621153ce0e
The unexpected remove of active kstack does happen on vax also,
...
not only on pc532. I've verivied that this "fix" work.
1996-05-19 10:00:38 +00:00
christos
a818b81625
Added missing prototypes from <sys/cpu.h>
1996-04-23 12:25:23 +00:00
pk
37a292dea0
Make prototyping of most functions conditional on `PMAP_EXCLUDE_DECLS'.
...
This allows MD pmap.h to implement access to those functions via pointers.
1996-03-31 22:15:32 +00:00
christos
ff63e6c744
Change %r -> %: as for recursive printf's
1996-03-30 21:50:45 +00:00
christos
3cc52443b5
Fix vm_offset_t (unsigned long) and vm_size_t (unsigned long) printf arguments
...
to %lx and %ld instead of %x and %d.
1996-03-16 23:15:18 +00:00
gwr
f6925cfbf3
Replace vm_object_prefer with PMAP_PREFER.
1996-02-28 22:39:13 +00:00
gwr
fdb309615e
Remove vm_object_prefer. VM code now calls PMAP_PREFER directly.
1996-02-28 22:35:35 +00:00
mycroft
8d110517c8
We no longer need the old hack for allocating the u-area on the i386.
1996-02-18 22:53:43 +00:00
christos
c048d7ba68
fix a printf warning and add pmap_page_index declaration
1996-02-12 21:51:52 +00:00
christos
d0fd3d7e62
Don't declare pmap_page_index for now. It will break the arm port.
...
This clearly needs to be fixed. I would like to declare it:
__pure u_int pmap_page_index __P((vm_offset_t));
but at least the arm port wants it signed [since it tests for -1 all over
the place]. Can we have this fixed please?
1996-02-10 00:30:39 +00:00
christos
b7b8db60ac
change pmap_page_index to return __pure u_int, like in the majority of
...
the ports
1996-02-10 00:20:09 +00:00