static void xen_extend_mmu_update(const struct mmu_update *update) { struct multicall_space mcs; struct mmu_update *u; mcs = xen_mc_extend_args(__HYPERVISOR_mmu_update, sizeof(*u)); if (mcs.mc != NULL) { ADD_STATS(mmu_update_extended, 1); ADD_STATS(mmu_update_histo[mcs.mc->args[1]], -1); mcs.mc->args[1]++; if (mcs.mc->args[1] < MMU_UPDATE_HISTO) ADD_STATS(mmu_update_histo[mcs.mc->args[1]], 1); else ADD_STATS(mmu_update_histo[0], 1); } else { ADD_STATS(mmu_update, 1); mcs = __xen_mc_entry(sizeof(*u)); MULTI_mmu_update(mcs.mc, mcs.args, 1, NULL, DOMID_SELF); ADD_STATS(mmu_update_histo[1], 1); } u = mcs.args; *u = *update; }
static void xen_extend_mmuext_op(const struct mmuext_op *op) { struct multicall_space mcs; struct mmuext_op *u; mcs = xen_mc_extend_args(__HYPERVISOR_mmuext_op, sizeof(*u)); if (mcs.mc != NULL) { mcs.mc->args[1]++; } else { mcs = __xen_mc_entry(sizeof(*u)); MULTI_mmuext_op(mcs.mc, mcs.args, 1, NULL, DOMID_SELF); } u = mcs.args; *u = *op; }