summaryrefslogtreecommitdiffstats
path: root/src/include/kernel/pagemgr.H
diff options
context:
space:
mode:
authorDoug Gilbert <dgilbert@us.ibm.com>2011-09-12 12:47:53 -0500
committerDouglas R. Gilbert <dgilbert@us.ibm.com>2011-09-19 16:05:34 -0500
commitde8a529d349aebb344979609055f123c196ccfe3 (patch)
treeb91665407f69730aaba8da794afc47240997dd47 /src/include/kernel/pagemgr.H
parentb754f8b47e343f449e5f05f67b948513363abd12 (diff)
downloadtalos-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.H17
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
{
OpenPOWER on IntegriCloud