summaryrefslogtreecommitdiffstats
path: root/src/kernel/segmentmgr.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/segmentmgr.C')
-rw-r--r--src/kernel/segmentmgr.C18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/kernel/segmentmgr.C b/src/kernel/segmentmgr.C
index 890bd1812..0b4370cfa 100644
--- a/src/kernel/segmentmgr.C
+++ b/src/kernel/segmentmgr.C
@@ -55,6 +55,11 @@ void SegmentManager::updateRefCount( uint64_t i_vaddr,
Singleton<SegmentManager>::instance()._updateRefCount(i_vaddr,i_stats);
}
+void SegmentManager::castOutPages(uint64_t i_type)
+{
+ Singleton<SegmentManager>::instance()._castOutPages(i_type);
+}
+
bool SegmentManager::_handlePageFault(task_t* i_task, uint64_t i_addr)
{
size_t segId = getSegmentIdFromAddress(i_addr);
@@ -122,7 +127,7 @@ void SegmentManager::_updateRefCount( uint64_t i_vaddr,
PageTableManager::UsageStats_t i_stats )
{
// Get segment ID from effective address.
- size_t segId = i_vaddr >> SLBE_s;
+ size_t segId = getSegmentIdFromAddress(i_vaddr);
// Call contained segment object to update the reference count
if ((segId < MAX_SEGMENTS) && (NULL != iv_segments[segId]))
@@ -130,3 +135,14 @@ void SegmentManager::_updateRefCount( uint64_t i_vaddr,
iv_segments[segId]->updateRefCount( i_vaddr, i_stats );
}
}
+
+void SegmentManager::_castOutPages(uint64_t i_type)
+{
+ for (size_t i = 0; i < MAX_SEGMENTS; i++)
+ {
+ if (NULL != iv_segments[i])
+ {
+ iv_segments[i]->castOutPages(i_type);
+ }
+ }
+}
OpenPOWER on IntegriCloud