aboutsummaryrefslogtreecommitdiff
blob: be635bfc41fbcaca4bde29781140c5a0128d3da2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/**
 * section: Informations
 * synopsis: Extract informations about Xen domain 0
 * purpose: Demonstrate the basic use of the library to connect to the
 *          hypervisor and extract domain informations.
 * usage: info1
 * test: info1
 * author: Daniel Veillard
 * copy: see Copyright for the status of this software.
 */

#include <stdio.h>
#include <libvir.h>

/**
 * getDomainInfo:
 * @id: the id of the domain
 *
 * extract the domain 0 informations
 */
static void
getDomainInfo(int id) {
    virConnectPtr conn = NULL; /* the hypervisor connection */
    virDomainPtr dom = NULL;   /* the domain being checked */
    virDomainInfo info;        /* the informations being fetched */
    int ret;

    /* NULL means connect to local Xen hypervisor */
    conn = virConnectOpenReadOnly(NULL);
    if (conn == NULL) {
        fprintf(stderr, "Failed to connect to hypervisor\n");
	goto error;
    }

    /* Find the domain of the given id */
    dom = virDomainLookupByID(conn, id);
    if (dom == NULL) {
        fprintf(stderr, "Failed to find Domain %d\n", id);
	goto error;
    }

    /* Get the informations */
    ret = virDomainGetInfo(dom, &info);
    if (ret < 0) {
        fprintf(stderr, "Failed to get informations for Domain %d\n", id);
	goto error;
    }

    printf("Domains %d: %d CPUs\n", id, info.nrVirtCpu);

error:
    if (dom != NULL)
        virDomainFree(dom);
    if (conn != NULL)
	virConnectClose(conn);
}

int main(int argc, char **argv) {

    getDomainInfo(0);

    return(0);
}