* Added area creation "lock" constant B_32_BIT_MEMORY for physically

contiguous memory < 4 GB.
* vm_create_anonymous_area(): Implemented support for B_LOMEM and
  B_32_BIT_MEMORY.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37200 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold 2010-06-21 16:46:19 +00:00
parent 02507604e7
commit be87d0a03e
2 changed files with 20 additions and 4 deletions

View File

@ -68,7 +68,8 @@ typedef struct area_info {
#define B_LAZY_LOCK 1
#define B_FULL_LOCK 2
#define B_CONTIGUOUS 3
#define B_LOMEM 4
#define B_LOMEM 4 /* B_CONTIGUOUS, < 16 MB physical address */
#define B_32_BIT_MEMORY 5 /* B_CONTIGUOUS, < 4 GB physical address */
/* address spec for create_area(), and clone_area() */
#define B_ANY_ADDRESS 0

View File

@ -1101,6 +1101,7 @@ vm_create_anonymous_area(team_id team, const char *name, addr_t size,
wiring = B_CONTIGUOUS;
}
physical_address_restrictions stackPhysicalRestrictions;
bool doReserveMemory = false;
switch (wiring) {
case B_NO_LOCK:
@ -1113,11 +1114,25 @@ vm_create_anonymous_area(team_id team, const char *name, addr_t size,
case B_ALREADY_WIRED:
break;
case B_LOMEM:
//case B_SLOWMEM:
dprintf("B_LOMEM/SLOWMEM is not yet supported!\n");
wiring = B_FULL_LOCK;
{
stackPhysicalRestrictions = *physicalAddressRestrictions;
stackPhysicalRestrictions.high_address = 16 * 1024 * 1024;
physicalAddressRestrictions = &stackPhysicalRestrictions;
wiring = B_CONTIGUOUS;
doReserveMemory = true;
break;
}
case B_32_BIT_MEMORY:
{
#if B_HAIKU_PHYSICAL_BITS > 32
stackPhysicalRestrictions = *physicalAddressRestrictions;
stackPhysicalRestrictions.high_address = 0x100000000LL;
physicalAddressRestrictions = &stackPhysicalRestrictions;
#endif
wiring = B_CONTIGUOUS;
doReserveMemory = true;
break;
}
default:
return B_BAD_VALUE;
}