/*===========================================================================* * do_get_phys * *===========================================================================*/ int do_get_phys(message *m) { int r, n; struct vmproc *vmp; endpoint_t target; phys_bytes ret; vir_bytes addr; target = m->VMPHYS_ENDPT; addr = m->VMPHYS_ADDR; if ((r = vm_isokendpt(target, &n)) != OK) return EINVAL; vmp = &vmproc[n]; r = map_get_phys(vmp, addr, &ret); m->VMPHYS_RETA = ret; return r; }
/*===========================================================================* * do_get_phys * *===========================================================================*/ int do_get_phys(message *m) { int r, n; struct vmproc *vmp; endpoint_t target; phys_bytes ret; vir_bytes addr; target = m->m_lc_vm_getphys.endpt; addr = (vir_bytes) m->m_lc_vm_getphys.addr; if ((r = vm_isokendpt(target, &n)) != OK) return EINVAL; vmp = &vmproc[n]; r = map_get_phys(vmp, addr, &ret); m->m_lc_vm_getphys.ret_addr = (void *) ret; return r; }
/*===========================================================================* * do_get_phys * *===========================================================================*/ int do_get_phys(kipc_msg_t *m) { int r, n; struct vmproc *vmp; endpoint_t target; phys_bytes ret; vir_bytes addr; target = m->VMPHYS_ENDPT; addr = m->VMPHYS_ADDR; if ((r = vm_isokendpt(target, &n)) != 0) return -EINVAL; vmp = &vmproc[n]; addr = arch_vir2map(vmp, addr); r = map_get_phys(vmp, addr, &ret); m->VMPHYS_RETA = ret; return r; }