Lines Matching refs:page

58 #define PAGE_TO_AFFID(page) (RT_PAGE_PICK_AFFID(page_to_paddr(page)))  argument
137 MSH_CMD_EXPORT(rt_page_leak_trace_start, start page leak tracer);
141 rt_page_t page = _trace_head; in _collect() local
142 if (!page) in _collect()
148 while (page) in _collect()
150 rt_page_t next = page->tl_next; in _collect()
151 void *pg_va = rt_page_page2addr(page); in _collect()
152 LOG_W("LEAK: %p, allocator: %p, size bits: %lx", pg_va, page->caller, page->trace_size); in _collect()
153 rt_pages_free(pg_va, page->trace_size); in _collect()
154 page = next; in _collect()
165 MSH_CMD_EXPORT(rt_page_leak_trace_stop, stop page leak tracer);
167 static void _trace_alloc(rt_page_t page, void *caller, size_t size_bits) in _trace_alloc() argument
171 page->caller = caller; in _trace_alloc()
172 page->trace_size = size_bits; in _trace_alloc()
173 page->tl_prev = NULL; in _trace_alloc()
174 page->tl_next = NULL; in _trace_alloc()
179 _trace_head = page; in _trace_alloc()
183 _trace_head->tl_prev = page; in _trace_alloc()
184 page->tl_next = _trace_head; in _trace_alloc()
185 _trace_head = page; in _trace_alloc()
190 void _report(rt_page_t page, size_t size_bits, char *msg) in _report() argument
192 void *pg_va = rt_page_page2addr(page); in _report()
193 LOG_W("%s: %p, allocator: %p, size bits: %lx", msg, pg_va, page->caller, page->trace_size); in _report()
198 static void _trace_free(rt_page_t page, void *caller, size_t size_bits) in _trace_free() argument
203 if (page->trace_size == 0xabadcafe) in _trace_free()
205 _report(page, size_bits, "free after free"); in _trace_free()
208 else if (page->trace_size != size_bits) in _trace_free()
211 _report(page, size_bits, "incompatible size bits parameter"); in _trace_free()
215 if (page->ref_cnt == 0) in _trace_free()
218 if (page->tl_prev) in _trace_free()
219 page->tl_prev->tl_next = page->tl_next; in _trace_free()
220 if (page->tl_next) in _trace_free()
221 page->tl_next->tl_prev = page->tl_prev; in _trace_free()
223 if (page == _trace_head) in _trace_free()
224 _trace_head = page->tl_next; in _trace_free()
226 page->tl_prev = NULL; in _trace_free()
227 page->tl_next = NULL; in _trace_free()
228 page->trace_size = 0xabadcafe; in _trace_free()
395 static inline void *page_to_addr(rt_page_t page) in page_to_addr() argument
397 return (void *)(((page - page_start) << ARCH_PAGE_SHIFT) - PV_OFFSET); in page_to_addr()
400 static inline rt_ubase_t page_to_paddr(rt_page_t page) in page_to_paddr() argument
402 return (rt_ubase_t)((page - page_start) << ARCH_PAGE_SHIFT); in page_to_paddr()
474 static rt_page_t *_get_pgls_head_by_page(pgls_agr_t *agr_pgls, rt_page_t page, in _get_pgls_head_by_page() argument
482 index = PAGE_TO_AFFID(page) >> size_bits; in _get_pgls_head_by_page()
639 void (*page_alloc)(rt_page_t page)) in __pages_alloc() argument
707 static void _early_page_remove(rt_page_t *pgls_head, rt_page_t page, in _early_page_remove() argument
710 rt_page_t page_cont = (rt_page_t)((char *)page + early_offset); in _early_page_remove()
732 static void _early_page_alloc(rt_page_t page) in _early_page_alloc() argument
734 rt_page_t page_cont = (rt_page_t)((char *)page + early_offset); in _early_page_alloc()
739 static void _early_page_insert(rt_page_t *pgls_head, rt_page_t page, in _early_page_insert() argument
742 RT_ASSERT((void *)page >= rt_mpr_start && in _early_page_insert()
743 ((char *)page - (char *)rt_mpr_start) < rt_mpr_size); in _early_page_insert()
744 rt_page_t page_cont = (rt_page_t)((char *)page + early_offset); in _early_page_insert()
750 next_cont->pre = page; in _early_page_insert()
753 *pgls_head = page; in _early_page_insert()
1033 MSH_CMD_EXPORT(list_page, show page info);
1062 void (*insert)(rt_page_t *ppg, rt_page_t page, rt_uint32_t size_bits)) in _install_page() argument