/* lc_dump - Dump a complete LRU cache to seq in textual form. @lc: the lru cache to operate on @seq: the &struct seq_file pointer to seq_printf into @utext: user supplied "heading" or other info @detail: function pointer the user may provide to dump further details of the object the lc_element is embedded in.  */
void lc_seq_dump_details(struct seq_file *seq, struct lru_cache *lc, char *utext, void(*detail)(struct seq_file *, struct lc_element *))
/* lc_dump - Dump a complete LRU cache to seq in textual form. @lc: the lru cache to operate on @seq: the &struct seq_file pointer to seq_printf into @utext: user supplied "heading" or other info @detail: function pointer the user may provide to dump further details of the object the lc_element is embedded in.  */
void lc_seq_dump_details(struct seq_file *seq, struct lru_cache *lc, char *utext, void(*detail)(struct seq_file *, struct lc_element *))
{
	unsigned int nr_elements = lc->nr_elements;
	struct lc_element *e;
	int i;
	seq_printf(seq, "\tnn: lc_number refcnt %s\n ", utext);
	for (i = 0; i < nr_elements; i++) {
		e = lc_element_by_index(lc, i);
		if (e->lc_number == LC_FREE) {
			seq_printf(seq, "\t%2d: FREE\n", i);
		} else {
			seq_printf(seq, "\t%2d: %4u %4u    ", i,
				   e->lc_number, e->refcnt);
			detail(seq, e);
		}
	}
}