Add function to track free bytes in the coremap.
This commit is contained in:
parent
a7526befe4
commit
a367007689
@ -126,6 +126,15 @@ free_kpages(vaddr_t addr)
|
|||||||
(void)addr;
|
(void)addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned
|
||||||
|
int
|
||||||
|
coremap_free_bytes() {
|
||||||
|
|
||||||
|
/* dumbvm doesn't track page allocations. Return 0 so that khu works. */
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
vm_tlbshootdown_all(void)
|
vm_tlbshootdown_all(void)
|
||||||
{
|
{
|
||||||
|
@ -55,6 +55,14 @@ int vm_fault(int faulttype, vaddr_t faultaddress);
|
|||||||
vaddr_t alloc_kpages(unsigned npages);
|
vaddr_t alloc_kpages(unsigned npages);
|
||||||
void free_kpages(vaddr_t addr);
|
void free_kpages(vaddr_t addr);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return amount of free memory (in bytes) available in unallocated coremap pages.
|
||||||
|
* If there are ongoing allocations, this value could change after it is
|
||||||
|
* returned to the caller. But it should have been correct at some point in
|
||||||
|
* time.
|
||||||
|
*/
|
||||||
|
unsigned int coremap_free_bytes(void);
|
||||||
|
|
||||||
/* TLB shootdown handling called from interprocessor_interrupt */
|
/* TLB shootdown handling called from interprocessor_interrupt */
|
||||||
void vm_tlbshootdown_all(void);
|
void vm_tlbshootdown_all(void);
|
||||||
void vm_tlbshootdown(const struct tlbshootdown *);
|
void vm_tlbshootdown(const struct tlbshootdown *);
|
||||||
|
@ -827,16 +827,16 @@ kheap_printused(void)
|
|||||||
{
|
{
|
||||||
struct pageref *pr;
|
struct pageref *pr;
|
||||||
unsigned long total = 0;
|
unsigned long total = 0;
|
||||||
|
char total_string[32];
|
||||||
|
|
||||||
/* print the whole thing with interrupts off */
|
/* print the whole thing with interrupts off */
|
||||||
spinlock_acquire(&kmalloc_spinlock);
|
spinlock_acquire(&kmalloc_spinlock);
|
||||||
|
|
||||||
for (pr = allbase; pr != NULL; pr = pr->next_all) {
|
for (pr = allbase; pr != NULL; pr = pr->next_all) {
|
||||||
total += subpage_stats(pr, true);
|
total += subpage_stats(pr, true);
|
||||||
}
|
}
|
||||||
|
total += coremap_free_bytes();
|
||||||
spinlock_release(&kmalloc_spinlock);
|
spinlock_release(&kmalloc_spinlock);
|
||||||
|
|
||||||
char total_string[32];
|
|
||||||
snprintf(total_string, sizeof(total_string), "%lu", total);
|
snprintf(total_string, sizeof(total_string), "%lu", total);
|
||||||
secprintf(SECRET, total_string, "khu");
|
secprintf(SECRET, total_string, "khu");
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user