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/include/kernel/pagemgr.H | |
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/include/kernel/pagemgr.H')
-rw-r--r-- | src/include/kernel/pagemgr.H | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/include/kernel/pagemgr.H b/src/include/kernel/pagemgr.H index eeed535e0..6cb6fefc4 100644 --- a/src/include/kernel/pagemgr.H +++ b/src/include/kernel/pagemgr.H @@ -27,6 +27,8 @@ #include <limits.h> #include <util/lockfree/stack.H> #include <kernel/vmmmgr.H> +#include <builtins.h> +#include <kernel/console.H> /** @class PageManager * @brief Manages the allocation of memory pages. @@ -40,6 +42,12 @@ class PageManager static void* allocatePage(size_t n = 1); static void freePage(void*, size_t n = 1); + /** + * Query state for available memory + * @returns percent of pages available + */ + static uint64_t queryAvail(); + enum { MEMLEN = VmmManager::HTABORG, @@ -55,8 +63,17 @@ class PageManager void* _allocatePage(size_t); void _freePage(void*, size_t); + /** see queryAvail() */ + ALWAYS_INLINE + uint64_t _queryAvail() const + { + return (100*iv_pagesAvail)/iv_pagesTotal; + } + /** Statistics on number of free pages (for debug) */ uint64_t iv_pagesAvail; + /** Total number of pages */ + uint64_t iv_pagesTotal; struct page_t { |