Age | Commit message (Collapse) | Author |
|
extent_alloc_region(9) that uses a pre-allocated region descriptor.
ok patrick@
|
|
|
|
ok bluhm@
|
|
freeing parts of regions that are already free) when the EX_CONFLICTOK
flag is passed to extent_free.
ok jmatthew@
|
|
free space that is already free.
ok patrick@
|
|
|
|
|
|
the ioff argument to pool_init() is unused and has been for many
years, so this replaces it with an ipl argument. because the ipl
will be set on init we no longer need pool_setipl.
most of these changes have been done with coccinelle using the spatch
below. cocci sucks at formatting code though, so i fixed that by hand.
the manpage and subr_pool.c bits i did myself.
ok tedu@ jmatthew@
@ipl@
expression pp;
expression ipl;
expression s, a, o, f, m, p;
@@
-pool_init(pp, s, a, o, f, m, p);
-pool_setipl(pp, ipl);
+pool_init(pp, s, a, ipl, f, m, p);
|
|
|
|
have any direct symbols used. Tested for indirect use by compiling
amd64/i386/sparc64 kernels.
ok tedu@ deraadt@
|
|
ok doug tedu
|
|
ok mpi@ kspillner@
|
|
CIRCLEQ_* is deprecated and not called in the tree. The other queue types
have *_END macros which were added for symmetry with CIRCLEQ_END. They are
defined as NULL. There's no reason to keep the other *_END macro calls.
ok millert@
|
|
made it so struct pool was only visible to _KERNEL. tedu broke it
too when he added the size argument to the kernel free
functions.
this fixes both issues. the main change is to provide a local version of
struct pool with just the bit (pr_size) needed for extent to run.
if extents take advantage of more malloc/pool features (eg, {M,PR}_ZERO
then this will need to be updated again.
found by and based on a diff from Theo Buehler
ok mpi@
|
|
after discussions with beck deraadt kettenis.
|
|
a region descriptor such that the extent manager doesn't need to call
malloc(9).
ok miod@, deraadt@
|
|
|
|
tested on vax (gcc3) ok miod@
|
|
in MI code; gcc 2.95 does not accept such annotation for function pointer
declarations, only function prototypes.
To be uncommented once gcc 2.95 bites the dust.
|
|
function pointer arguments which are {used as,} wrappers around the kernel
printf function.
No functional change.
|
|
kettenis@ ok
|
|
This is more clear, and as thib pointed out, the default in softraid was
wrong. ok thib.
|
|
declarations.
OK miod@, millert@
|
|
from Brad Tilley <brad at 16systems dot com>;
ok oga@
|
|
and the whole extent is used; the current code computations would wrap.
Found the hard way by jsg@, fix discuss with kettenis@, and you get a
regress test for free (which will spin if you compile it again an old
subr_extent.c)
|
|
is specified.
ok miod@
|
|
(just a noop since that doesn't matter in userland).
Pointed out by a couple of people, thanks.
|
|
from and it will do it for us.
ok miod@
|
|
has all space allocated such that we can make holes in it using extent_free().
ok miod@
|
|
allocations, making sure that the union of all space is allocated.
ok deraadt@
|
|
provides, while keeping this behaviour for extent_print_all() which is
only called by ddb. Based on a diff from deraadt@.
|
|
Not sure what's more surprising: how long it took for NetBSD to
catch up to the rest of the BSDs (including UCB), or the amount of
code that NetBSD has claimed for itself without attributing to the
actual authors.
OK deraadt@
|
|
the list is really used, i.e. if option DIAGNOSTIC || option DDB.
|
|
on RISC arches, but m68k loses a few bytes; ok deraadt@
|
|
option DIAGNOSTIC || option DDB, saves some room on installation media.
|
|
|
|
by lint.
ok art@ miod@
|
|
|
|
|
|
no change in compiler assembly output.
|
|
|
|
- Make sure that extent_register is not called more than once on an extent.
|
|
extent.
|
|
|
|
- extent_alloc_subregion shouldn't allocate a region pasts the end of subregion.
- extent_alloc_subregion1(): when a candidate region doesn't fit after being
rounded up to respect boundary limits, adjust newstart and last before
skiping to the next region. Otherwise we may check the same candidate
region against the start of the next region, no the one immediatly following
the hole, leading to corrupted map.
|
|
|
|
well (not at all) with shortages of the vm_map where the pages are mapped
(usually kmem_map).
Try to deal with it:
- group all information the backend allocator for a pool in a separate
struct. The pool will only have a pointer to that struct.
- change the pool_init API to reflect that.
- link all pools allocating from the same allocator on a linked list.
- Since an allocator is responsible to wait for physical memory it will
only fail (waitok) when it runs out of its backing vm_map, carefully
drain pools using the same allocator so that va space is freed.
(see comments in code for caveats and details).
- change pool_reclaim to return if it actually succeeded to free some
memory, use that information to make draining easier and more efficient.
- get rid of PR_URGENT, noone uses it.
|
|
|
|
all extents.
|
|
Pass the right amount of arguments and rename them back to their right names.
|