diff options
author | Doug Gilbert <dgilbert@us.ibm.com> | 2011-09-12 12:47:53 -0500 |
---|---|---|
committer | Douglas R. Gilbert <dgilbert@us.ibm.com> | 2011-09-19 16:05:34 -0500 |
commit | de8a529d349aebb344979609055f123c196ccfe3 (patch) | |
tree | b91665407f69730aaba8da794afc47240997dd47 /src/kernel/pagemgr.C | |
parent | b754f8b47e343f449e5f05f67b948513363abd12 (diff) | |
download | talos-hostboot-de8a529d349aebb344979609055f123c196ccfe3.tar.gz talos-hostboot-de8a529d349aebb344979609055f123c196ccfe3.zip |
Mechanism to detect low memory and cast out older page
Change-Id: Icce8e01f3d1cd2942f2b9ff802993da0441535ee
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/344
Tested-by: Jenkins Server
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com>
Diffstat (limited to 'src/kernel/pagemgr.C')
-rw-r--r-- | src/kernel/pagemgr.C | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/kernel/pagemgr.C b/src/kernel/pagemgr.C index f74ee89c1..826e1bc4d 100644 --- a/src/kernel/pagemgr.C +++ b/src/kernel/pagemgr.C @@ -44,7 +44,12 @@ void PageManager::freePage(void* p, size_t n) return pmgr._freePage(p, n); } -PageManager::PageManager() : iv_pagesAvail(0) +uint64_t PageManager::queryAvail() +{ + return Singleton<PageManager>::instance()._queryAvail(); +} + +PageManager::PageManager() : iv_pagesAvail(0), iv_pagesTotal(0) { // Determine first page of un-allocated memory. uint64_t addr = (uint64_t) VFS_LAST_ADDRESS; @@ -55,6 +60,7 @@ PageManager::PageManager() : iv_pagesAvail(0) page_t* page = (page_t*)((void*) addr); size_t length = (MEMLEN - addr) / PAGESIZE; + iv_pagesTotal = length; // Update statistics. __sync_add_and_fetch(&iv_pagesAvail, length); @@ -156,3 +162,4 @@ void PageManager::push_bucket(page_t* p, size_t n) if (n >= BUCKETS) return; first_page[n].push(p); } + |