vm: implement B_RANDOMIZED_BASE_ADDRESS address specification
B_RAND_BASE_ADDRESS is basically B_BASE_ADDRESS with non-deterministic created area's base address. Initial start address is randomized and then the algorithm looks for a large enough free space in the interval [randomized start, end]. If it fails then the search is repeated in the interval [original start, randomized start]. In case it also fails the algorithm falls back to B_ANY_ADDRESS (B_RANDOMIZED_ANY_ADDRESS when it is implemented) just like B_BASE_ADDRESS does. Randomization range is limited by kMaxRandomize and kMaxInitialRandomize.
This commit is contained in:
@@ -73,11 +73,14 @@ typedef struct area_info {
|
||||
#define B_32_BIT_CONTIGUOUS 6 /* B_CONTIGUOUS, < 4 GB physical address */
|
||||
|
||||
/* address spec for create_area(), and clone_area() */
|
||||
#define B_ANY_ADDRESS 0
|
||||
#define B_EXACT_ADDRESS 1
|
||||
#define B_BASE_ADDRESS 2
|
||||
#define B_CLONE_ADDRESS 3
|
||||
#define B_ANY_KERNEL_ADDRESS 4
|
||||
#define B_ANY_ADDRESS 0
|
||||
#define B_EXACT_ADDRESS 1
|
||||
#define B_BASE_ADDRESS 2
|
||||
#define B_CLONE_ADDRESS 3
|
||||
#define B_ANY_KERNEL_ADDRESS 4
|
||||
/* B_ANY_KERNEL_BLOCK_ADDRESS 5 */
|
||||
/* B_RANDOMIZED_ANY_ADDRESS 6 */
|
||||
#define B_RANDOMIZED_BASE_ADDRESS 7
|
||||
|
||||
/* area protection */
|
||||
#define B_READ_AREA 1
|
||||
|
||||
Reference in New Issue
Block a user