/* * This routine is called after all the "normal" MP startup has * been done; a good place to start watching xen store for virtual * cpu hot plug events. */ void mach_cpucontext_fini(void) { cpu_config_tq = taskq_create("vcpu config taskq", 1, maxclsyspri - 1, 1, 1, TASKQ_PREPOPULATE); (void) xs_register_xenbus_callback(do_cpu_config_watch); }
/* * Basic initialization of the balloon thread. Set all of our variables, * and register a callback for later when we can register a xenbus watch. */ void balloon_init(pgcnt_t nr_pages) { domid_t domid = DOMID_SELF; bln_stats.bln_current_pages = bln_stats.bln_low = nr_pages; bln_stats.bln_new_target = bln_stats.bln_high = nr_pages; bln_stats.bln_max_pages = nr_pages; cv_init(&bln_cv, NULL, CV_DEFAULT, NULL); bln_stats.bln_hard_limit = (spgcnt_t)HYPERVISOR_memory_op( XENMEM_maximum_reservation, &domid); (void) xs_register_xenbus_callback(balloon_config_watch); }