Exemple #1
0
static void top(void)
{
	xenstat_domain **domains;
	unsigned int i, num_domains = 0;

	/* Now get the node information */
	if (prev_node != NULL)
		xenstat_free_node(prev_node);
	prev_node = cur_node;
	cur_node = xenstat_get_node(xhandle, XENSTAT_ALL);
	if (cur_node == NULL)
		fail("Failed to retrieve statistics from libxenstat\n");

	/* dump summary top information */
	if (!batch)
		do_summary();

	/* Count the number of domains for which to report data */
	num_domains = xenstat_node_num_domains(cur_node);

	domains = calloc(num_domains, sizeof(xenstat_domain *));
	if(domains == NULL)
		fail("Failed to allocate memory\n");

	for (i=0; i < num_domains; i++)
		domains[i] = xenstat_node_domain_by_index(cur_node, i);

	/* Sort */
	qsort(domains, num_domains, sizeof(xenstat_domain *),
	      (int(*)(const void *, const void *))compare_domains);

	if(first_domain_index >= num_domains)
		first_domain_index = num_domains-1;

	for (i = first_domain_index; i < num_domains; i++) {
		if(!batch && current_row() == lines()-1)
			break;
		if (i == first_domain_index || repeat_header)
			do_header();
		do_domain(domains[i]);
		if (show_vcpus)
			do_vcpu(domains[i]);
		if (show_networks)
			do_network(domains[i]);
		if (show_vbds)
			do_vbd(domains[i]);
		if (show_tmem)
			do_tmem(domains[i]);
	}

	if (!batch)
		do_bottom_line();

	free(domains);
}
Exemple #2
0
int main(void) {
	xenstat_handle *handle = xenstat_init();
	if(!handle) {
		fputs("Internal error in xenstats, failed to initialize handle\n", stderr);
		exit(1);
	}

	xenstat_node *node = xenstat_get_node(handle, XENSTAT_ALL); 
	if(!node) {
		fputs("Failed to get statistics from libxenlight\n", stderr);
		exit(2);
	}

	printf("<<<xen_info>>>\n"); 
	printf("version\t%s\n", xenstat_node_xen_version(node));
	printf("total_memory\t%llu\n", xenstat_node_tot_mem(node));
	printf("free_memory\t%llu\n", xenstat_node_free_mem(node));
//	printf("freeable_memory\t%li\n", xenstat_node_freeable_mb(node));
	printf("cpu_amount\t%i\n", xenstat_node_num_cpus(node));
	printf("cpu_speed\t%llu\n", xenstat_node_cpu_hz(node));

	int domains_amount = xenstat_node_num_domains(node);
	if(!domains_amount) exit(0);
	printf("domains\t%i\n", domains_amount);

	xenstat_domain** domains = malloc(sizeof(xenstat_domain*) * domains_amount);
	

	for(int i=0; i<domains_amount; i++) {
		xenstat_domain* domain = xenstat_node_domain_by_index(node, i);
		if(xenstat_domain_id(domain)) {
			printf("<<<<%s>>>>\n", xenstat_domain_name(domain));
		} else{ printf("<<<<>>>>\n"); }
		printf("<<<xen_domain>>>\n");
		printf("id\t%u\n", xenstat_domain_id(domain));
	}

	return 0;
}