X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=src%2Fguestfs.c;h=f4b79e76cace0a01ad88d5af9aa93629bd7c13b9;hb=edd502543adbdc2fa5dda0c015ea7c390bb39f64;hp=002418a446def731761205c423053fdf98ba2474;hpb=60d5a50f4d3d9e2c2f5a7d42a6859de709bda3f6;p=libguestfs.git diff --git a/src/guestfs.c b/src/guestfs.c index 002418a..f4b79e7 100644 --- a/src/guestfs.c +++ b/src/guestfs.c @@ -144,6 +144,9 @@ guestfs_create (void) */ g->msg_next_serial = 0x00123400; + /* Default is uniprocessor appliance. */ + g->smp = 1; + /* Link the handles onto a global list. */ gl_lock_lock (handles_lock); g->next = handles; @@ -203,6 +206,7 @@ guestfs_close (guestfs_h *g) g->events = NULL; guestfs___free_inspect_info (g); + guestfs___free_drives (&g->drives); /* Close sockets. */ if (g->fd[0] >= 0) @@ -814,6 +818,24 @@ guestfs__get_pgroup (guestfs_h *g) return g->pgroup; } +int +guestfs__set_smp (guestfs_h *g, int v) +{ + if (v >= 1) { + g->smp = v; + return 0; + } else { + error (g, "invalid smp parameter: %d", v); + return -1; + } +} + +int +guestfs__get_smp (guestfs_h *g) +{ + return g->smp; +} + /* Note the private data area is allocated lazily, since the vast * majority of callers will never use it. This means g->pda is * likely to be NULL. @@ -973,3 +995,22 @@ guestfs___free_string_list (char **argv) free (argv[i]); free (argv); } + +void +guestfs___free_drives (struct drive **drives) +{ + struct drive *i = *drives; + *drives = NULL; + + while (i != NULL) { + struct drive *next = i->next; + + free (i->path); + free (i->format); + free (i->iface); + free (i->name); + free (i); + + i = next; + } +}