summaryrefslogtreecommitdiffstats
path: root/src/usr/testcore/kernel/segmenttest.H
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/testcore/kernel/segmenttest.H')
-rw-r--r--src/usr/testcore/kernel/segmenttest.H29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/usr/testcore/kernel/segmenttest.H b/src/usr/testcore/kernel/segmenttest.H
index effa34e2e..e5b9ff64a 100644
--- a/src/usr/testcore/kernel/segmenttest.H
+++ b/src/usr/testcore/kernel/segmenttest.H
@@ -34,6 +34,8 @@
#include <sys/mmio.h>
#include <usr/vmmconst.h>
+#include <list>
+
class segmenttest: public CxxTest::TestSuite
{
public:
@@ -82,6 +84,33 @@ class segmenttest: public CxxTest::TestSuite
}
}
+ // Verify we can allocate a block from the second device segment.
+ void testManyDeviceBlocks()
+ {
+ std::list<void*> blocks;
+
+ void* block = NULL;
+ while (reinterpret_cast<uint64_t>(block)
+ < (VMM_VADDR_DEVICE_SEGMENT_FIRST + TERABYTE))
+ {
+ block = mmio_dev_map(reinterpret_cast<void*>(10 * TERABYTE),
+ THIRTYTWO_GB);
+
+ if (block == NULL)
+ {
+ TS_FAIL("Unable to allocate device block.");
+ break;
+ }
+ blocks.push_back(block);
+ }
+
+ while(!blocks.empty())
+ {
+ mmio_dev_unmap(blocks.front());
+ blocks.pop_front();
+ }
+ }
+
};
#endif
OpenPOWER on IntegriCloud