summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPatrick Williams <iawillia@us.ibm.com>2011-07-18 14:28:10 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2011-07-29 14:18:24 -0500
commit786c6a4a3aa85bb9f240a86735eb8f6ac277c109 (patch)
tree70c4da8209f8f0288cbdc25e41de8d2af5b8a600 /src
parentf5b3b1b3de680ef354419b74b50afe8b93012a4e (diff)
downloadtalos-hostboot-786c6a4a3aa85bb9f240a86735eb8f6ac277c109.tar.gz
talos-hostboot-786c6a4a3aa85bb9f240a86735eb8f6ac277c109.zip
Add usage statistics to PageManager.
Change-Id: Ic7f158b07b5b37465af5b129153d63645ced1bad Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/205 Tested-by: Jenkins Server Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: Andrew J. Geissler <andrewg@us.ibm.com> Reviewed-by: MATTHEW S. BARTH <msbarth@us.ibm.com>
Diffstat (limited to 'src')
-rw-r--r--src/include/kernel/pagemgr.H5
-rw-r--r--src/kernel/pagemgr.C12
2 files changed, 15 insertions, 2 deletions
diff --git a/src/include/kernel/pagemgr.H b/src/include/kernel/pagemgr.H
index 5c22d6864..52d924b79 100644
--- a/src/include/kernel/pagemgr.H
+++ b/src/include/kernel/pagemgr.H
@@ -32,7 +32,10 @@ class PageManager
private:
void* _allocatePage(size_t);
void _freePage(void*, size_t);
-
+
+ /** Statistics on number of free pages (for debug) */
+ uint64_t iv_pagesAvail;
+
struct page_t
{
page_t* next;
diff --git a/src/kernel/pagemgr.C b/src/kernel/pagemgr.C
index 1570a97d3..9ca2821d6 100644
--- a/src/kernel/pagemgr.C
+++ b/src/kernel/pagemgr.C
@@ -22,7 +22,7 @@ void PageManager::freePage(void* p, size_t n)
return pmgr._freePage(p, n);
}
-PageManager::PageManager()
+PageManager::PageManager() : iv_pagesAvail(0)
{
// Determine first page of un-allocated memory.
uint64_t addr = (uint64_t) VFS_LAST_ADDRESS;
@@ -32,6 +32,9 @@ PageManager::PageManager()
// Determine number of pages available.
page_t* page = (page_t*)((void*) addr);
size_t length = (MEMLEN - addr) / PAGESIZE;
+
+ // Update statistics.
+ __sync_add_and_fetch(&iv_pagesAvail, length);
// Display.
printk("Initializing PageManager with %zd pages starting at %lx...",
@@ -82,6 +85,9 @@ void* PageManager::_allocatePage(size_t n)
while(1);
}
+ // Update statistics.
+ __sync_sub_and_fetch(&iv_pagesAvail, n);
+
return page;
}
@@ -93,6 +99,10 @@ void PageManager::_freePage(void* p, size_t n)
while (n > (size_t)(1 << which_bucket)) which_bucket++;
push_bucket((page_t*)p, which_bucket);
+
+ // Update statistics.
+ __sync_add_and_fetch(&iv_pagesAvail, n);
+
return;
}
OpenPOWER on IntegriCloud