[haiku-commits] r37200 - in haiku/trunk: headers/os/kernel src/system/kernel/vm

  • From: ingo_weinhold@xxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 21 Jun 2010 18:46:19 +0200 (CEST)

Author: bonefish
Date: 2010-06-21 18:46:19 +0200 (Mon, 21 Jun 2010)
New Revision: 37200
Changeset: http://dev.haiku-os.org/changeset/37200/haiku

Modified:
   haiku/trunk/headers/os/kernel/OS.h
   haiku/trunk/src/system/kernel/vm/vm.cpp
Log:
* 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.


Modified: haiku/trunk/headers/os/kernel/OS.h
===================================================================
--- haiku/trunk/headers/os/kernel/OS.h  2010-06-21 16:19:49 UTC (rev 37199)
+++ haiku/trunk/headers/os/kernel/OS.h  2010-06-21 16:46:19 UTC (rev 37200)
@@ -68,7 +68,8 @@
 #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

Modified: haiku/trunk/src/system/kernel/vm/vm.cpp
===================================================================
--- haiku/trunk/src/system/kernel/vm/vm.cpp     2010-06-21 16:19:49 UTC (rev 
37199)
+++ haiku/trunk/src/system/kernel/vm/vm.cpp     2010-06-21 16:46:19 UTC (rev 
37200)
@@ -1101,6 +1101,7 @@
                wiring = B_CONTIGUOUS;
        }
 
+       physical_address_restrictions stackPhysicalRestrictions;
        bool doReserveMemory = false;
        switch (wiring) {
                case B_NO_LOCK:
@@ -1113,11 +1114,25 @@
                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;
        }


Other related posts:

  • » [haiku-commits] r37200 - in haiku/trunk: headers/os/kernel src/system/kernel/vm - ingo_weinhold