diff options
Diffstat (limited to 'src/usr/testcore/kernel/segmenttest.H')
| -rw-r--r-- | src/usr/testcore/kernel/segmenttest.H | 29 |
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 |

