Exemplo n.º 1
0
/*
 * Look to see if we've already got a module loaded for a CPU just
 * like this one.  If we do, then we'll re-use it.
 */
static cms_t *
cms_search_list(cmi_hdl_t hdl, int match)
{
	cmi_hdl_t dhdl = NULL;
	cms_t *cms = NULL;

	ASSERT(MUTEX_HELD(&cms_load_lock));

	cmi_hdl_walk(cms_search_list_cb, (void *)hdl, (void *)&match, &dhdl);
	if (dhdl) {
		cms = HDL2CMS(dhdl);
		cmi_hdl_rele(dhdl);	/* held in cms_search_list_cb */
	}

	return (cms);
}
static void
gcpu_xpv_mch_poll(void *arg)
{
	cmi_hdl_t hdl = cmi_hdl_any();

	if (hdl != NULL) {
		cmi_mc_logout(hdl, 0, 0);
		cmi_hdl_rele(hdl);
	}

	if (arg == GCPU_XPV_MCH_POLL_REARM &&
	    gcpu_xpv_mch_poll_interval_secs != 0) {
		gcpu_xpv_mch_poll_timeoutid = timeout(gcpu_xpv_mch_poll,
		    GCPU_XPV_MCH_POLL_REARM,
		    drv_usectohz(gcpu_xpv_mch_poll_interval_secs * MICROSEC));
	}
}