page_hash_count_pages(): report page hash size in memory stat
This commit is contained in:
24
kernel/mem.c
24
kernel/mem.c
@ -195,6 +195,7 @@ static struct ihk_mc_pa_ops allocator = {
|
|||||||
|
|
||||||
void sbox_write(int offset, unsigned int value);
|
void sbox_write(int offset, unsigned int value);
|
||||||
|
|
||||||
|
static int page_hash_count_pages(void);
|
||||||
static void query_free_mem_interrupt_handler(void *priv)
|
static void query_free_mem_interrupt_handler(void *priv)
|
||||||
{
|
{
|
||||||
int i, pages = 0;
|
int i, pages = 0;
|
||||||
@ -220,6 +221,8 @@ static void query_free_mem_interrupt_handler(void *priv)
|
|||||||
kmalloc_memcheck();
|
kmalloc_memcheck();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
kprintf("Page hash: %d pages active\n", page_hash_count_pages());
|
||||||
|
|
||||||
#ifdef ATTACHED_MIC
|
#ifdef ATTACHED_MIC
|
||||||
sbox_write(SBOX_SCRATCH0, pages);
|
sbox_write(SBOX_SCRATCH0, pages);
|
||||||
sbox_write(SBOX_SCRATCH1, 1);
|
sbox_write(SBOX_SCRATCH1, 1);
|
||||||
@ -562,6 +565,27 @@ static void page_init(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int page_hash_count_pages(void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
int cnt = 0;
|
||||||
|
|
||||||
|
for (i = 0; i < PHYS_PAGE_HASH_SIZE; ++i) {
|
||||||
|
unsigned long irqflags;
|
||||||
|
struct page *page_iter;
|
||||||
|
|
||||||
|
irqflags = ihk_mc_spinlock_lock(&page_hash_locks[i]);
|
||||||
|
|
||||||
|
list_for_each_entry(page_iter, &page_hash[i], hash) {
|
||||||
|
++cnt;
|
||||||
|
}
|
||||||
|
|
||||||
|
ihk_mc_spinlock_unlock(&page_hash_locks[i], irqflags);
|
||||||
|
}
|
||||||
|
|
||||||
|
return cnt;
|
||||||
|
}
|
||||||
|
|
||||||
/* XXX: page_hash_lock must be held */
|
/* XXX: page_hash_lock must be held */
|
||||||
static struct page *__phys_to_page(uintptr_t phys)
|
static struct page *__phys_to_page(uintptr_t phys)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user