int do_mem_event_op(int op, uint32_t domain, void *arg) { int ret; struct domain *d; ret = rcu_lock_live_remote_domain_by_id(domain, &d); if ( ret ) return ret; ret = xsm_mem_event_op(XSM_DM_PRIV, d, op); if ( ret ) goto out; switch (op) { #ifdef HAS_MEM_PAGING case XENMEM_paging_op: ret = mem_paging_memop(d, (xen_mem_event_op_t *) arg); break; #endif #ifdef HAS_MEM_SHARING case XENMEM_sharing_op: ret = mem_sharing_memop(d, (xen_mem_sharing_op_t *) arg); break; #endif default: ret = -ENOSYS; } out: rcu_unlock_domain(d); return ret; }
int do_mem_event_op(int op, uint32_t domain, void *arg) { int ret; struct domain *d; ret = rcu_lock_live_remote_domain_by_id(domain, &d); if ( ret ) return ret; ret = xsm_mem_event_op(XSM_TARGET, d, op); if ( ret ) goto out; switch (op) { case XENMEM_paging_op: ret = mem_paging_memop(d, (xen_mem_event_op_t *) arg); break; case XENMEM_access_op: ret = mem_access_memop(d, (xen_mem_event_op_t *) arg); break; case XENMEM_sharing_op: ret = mem_sharing_memop(d, (xen_mem_sharing_op_t *) arg); break; default: ret = -ENOSYS; } out: rcu_unlock_domain(d); return ret; }