Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 91004426 authored by Sherry Yang's avatar Sherry Yang Committed by Mengjiao Yang
Browse files

FROMLIST: android: binder: Add page usage in binder stats

(from https://patchwork.kernel.org/patch/9928611/

)

Add the number of active, lru, and free pages for
each binder process in binder stats

Bug: 63926541
Change-Id: I12618e4eb8ecc08f4f05fe4cba454a88830897f9
Signed-off-by: default avatarSherry Yang <sherryy@android.com>
parent 4a61ba65
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -5426,6 +5426,8 @@ static void print_binder_proc_stats(struct seq_file *m,
	count = binder_alloc_get_allocated_count(&proc->alloc);
	seq_printf(m, "  buffers: %d\n", count);

	binder_alloc_print_pages(m, &proc->alloc);

	count = 0;
	binder_inner_proc_lock(proc);
	list_for_each_entry(w, &proc->todo, entry) {
+28 −0
Original line number Diff line number Diff line
@@ -831,6 +831,34 @@ void binder_alloc_print_allocated(struct seq_file *m,
	mutex_unlock(&alloc->mutex);
}

/**
 * binder_alloc_print_pages() - print page usage
 * @m:     seq_file for output via seq_printf()
 * @alloc: binder_alloc for this proc
 */
void binder_alloc_print_pages(struct seq_file *m,
			      struct binder_alloc *alloc)
{
	struct binder_lru_page *page;
	int i;
	int active = 0;
	int lru = 0;
	int free = 0;

	mutex_lock(&alloc->mutex);
	for (i = 0; i < alloc->buffer_size / PAGE_SIZE; i++) {
		page = &alloc->pages[i];
		if (!page->page_ptr)
			free++;
		else if (list_empty(&page->lru))
			active++;
		else
			lru++;
	}
	mutex_unlock(&alloc->mutex);
	seq_printf(m, "  pages: %d:%d:%d\n", active, lru, free);
}

/**
 * binder_alloc_get_allocated_count() - return count of buffers
 * @alloc: binder_alloc for this proc
+2 −0
Original line number Diff line number Diff line
@@ -142,6 +142,8 @@ extern void binder_alloc_deferred_release(struct binder_alloc *alloc);
extern int binder_alloc_get_allocated_count(struct binder_alloc *alloc);
extern void binder_alloc_print_allocated(struct seq_file *m,
					 struct binder_alloc *alloc);
void binder_alloc_print_pages(struct seq_file *m,
			      struct binder_alloc *alloc);

/**
 * binder_alloc_get_free_async_space() - get free space available for async