Subject: extent(9) feature.
To: None <tech-kern@netbsd.org>
From: Paul Kranenburg <pk@cs.few.eur.nl>
List: tech-kern
Date: 09/01/1998 20:37:47
I propose to add an argument to extent_alloc_subregion() that allows
an arbitrary number to be specifed to which the start of the returned 
region should be aligned.

Like so:

    extent_alloc_subregion(ex, substart, subend, size, alignment, skew,
			   boundary, flags, result)


where

(A) the result is aligned to `skew' modulo `aligment', i.e.

	(result - skew) % alignment == 0


(B) `skew' is restricted to values smaller alignment:

	0 <= skew < alignment		(it follows: align==NOALIGN => skew==0)


(C) `size' + `skew' must not exceed the specified boundary:

	size + skew <= boundary		(applicable if boundary != NOBOUNDARY)


(D) obviously: if skew == 0 then there's no change to previous behaviour.



[In case you were wondering: I need this in some BUS DMA routines on
 NetBSD/sparc to set up mappings between kernel/user virtual addresses
 and DVMA addresses that are aligned with respect to the cache size
 so cache coherency iron can do its job ].

-pk