/*===========================================================================* * do_get_refcount * *===========================================================================*/ int do_get_refcount(message *m) { int r, n; struct vmproc *vmp; endpoint_t target; u8_t cnt; vir_bytes addr; target = m->VMREFCNT_ENDPT; addr = m->VMREFCNT_ADDR; if ((r = vm_isokendpt(target, &n)) != OK) return EINVAL; vmp = &vmproc[n]; r = map_get_ref(vmp, addr, &cnt); m->VMREFCNT_RETC = cnt; return r; }
/*===========================================================================* * do_get_refcount * *===========================================================================*/ int do_get_refcount(message *m) { int r, n; struct vmproc *vmp; endpoint_t target; u8_t cnt; vir_bytes addr; target = m->m_lsys_vm_getref.endpt; addr = (vir_bytes) m->m_lsys_vm_getref.addr; if ((r = vm_isokendpt(target, &n)) != OK) return EINVAL; vmp = &vmproc[n]; r = map_get_ref(vmp, addr, &cnt); m->m_lsys_vm_getref.retc = cnt; return r; }
/*===========================================================================* * do_get_refcount * *===========================================================================*/ int do_get_refcount(kipc_msg_t *m) { int r, n; struct vmproc *vmp; endpoint_t target; u8_t cnt; vir_bytes addr; target = m->VMREFCNT_ENDPT; addr = m->VMREFCNT_ADDR; if ((r = vm_isokendpt(target, &n)) != 0) return -EINVAL; vmp = &vmproc[n]; addr = arch_vir2map(vmp, addr); r = map_get_ref(vmp, addr, &cnt); m->VMREFCNT_RETC = cnt; return r; }