MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / _anon_page_read

Function _anon_page_read

components/mm/mm_anon.c:374–401  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

372}
373
374static void _anon_page_read(struct rt_varea *varea, struct rt_aspace_io_msg *iomsg)
375{
376 rt_aspace_t curr_aspace = varea->aspace;
377 rt_aspace_t backup = _anon_obj_get_backup(varea->mem_obj);
378
379 if (rt_hw_mmu_v2p(curr_aspace, iomsg->fault_vaddr) == ARCH_MAP_FAILED)
380 {
381 struct rt_aspace_fault_msg msg;
382 msg.fault_op = MM_FAULT_OP_READ;
383 msg.fault_type = MM_FAULT_TYPE_PAGE_FAULT;
384 msg.fault_vaddr = iomsg->fault_vaddr;
385 msg.off = iomsg->off;
386 rt_mm_fault_res_init(&msg.response);
387
388 _fetch_page_for_varea(varea, &msg, RT_FALSE);
389 if (msg.response.status != MM_FAULT_STATUS_UNRECOVERABLE)
390 {
391 void *saved_fault_va = iomsg->fault_vaddr;
392 iomsg->fault_vaddr = (void *)(iomsg->off << MM_PAGE_SHIFT);
393 read_by_mte(backup, iomsg);
394 iomsg->fault_vaddr = saved_fault_va;
395 }
396 }
397 else
398 {
399 read_by_mte(curr_aspace, iomsg);
400 }
401}
402
403static void write_by_mte(rt_aspace_t aspace, struct rt_aspace_io_msg *iomsg)
404{

Callers

nothing calls this directly

Calls 5

_anon_obj_get_backupFunction · 0.85
rt_mm_fault_res_initFunction · 0.85
_fetch_page_for_vareaFunction · 0.85
read_by_mteFunction · 0.85
rt_hw_mmu_v2pFunction · 0.50

Tested by

no test coverage detected