mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-11-05 20:35:44 +00:00
Add -uuid command line option (Gleb Natapov)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5257 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
3cce62435c
commit
8fcb1b90cd
2 changed files with 31 additions and 0 deletions
2
sysemu.h
2
sysemu.h
|
@ -8,6 +8,8 @@ extern const char *bios_dir;
|
|||
|
||||
extern int vm_running;
|
||||
extern const char *qemu_name;
|
||||
extern uint8_t qemu_uuid[];
|
||||
#define UUID_FMT "%02hhx%02hhx%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx"
|
||||
|
||||
typedef struct vm_change_state_entry VMChangeStateEntry;
|
||||
typedef void VMChangeStateHandler(void *opaque, int running);
|
||||
|
|
29
vl.c
29
vl.c
|
@ -254,6 +254,8 @@ static int64_t qemu_icount_bias;
|
|||
QEMUTimer *icount_rt_timer;
|
||||
QEMUTimer *icount_vm_timer;
|
||||
|
||||
uint8_t qemu_uuid[16];
|
||||
|
||||
#define TFR(expr) do { if ((expr) != -1) break; } while (errno == EINTR)
|
||||
|
||||
/***********************************************************/
|
||||
|
@ -7700,6 +7702,7 @@ static void help(int exitcode)
|
|||
"-g WxH[xDEPTH] Set the initial graphical resolution and depth\n"
|
||||
#endif
|
||||
"-name string set the name of the guest\n"
|
||||
"-uuid %%08x-%%04x-%%04x-%%04x-%%012x specify machine UUID\n"
|
||||
"\n"
|
||||
"Network options:\n"
|
||||
"-net nic[,vlan=n][,macaddr=addr][,model=type]\n"
|
||||
|
@ -7894,6 +7897,7 @@ enum {
|
|||
QEMU_OPTION_startdate,
|
||||
QEMU_OPTION_tb_size,
|
||||
QEMU_OPTION_icount,
|
||||
QEMU_OPTION_uuid,
|
||||
};
|
||||
|
||||
typedef struct QEMUOption {
|
||||
|
@ -7982,6 +7986,7 @@ const QEMUOption qemu_options[] = {
|
|||
#ifdef CONFIG_CURSES
|
||||
{ "curses", 0, QEMU_OPTION_curses },
|
||||
#endif
|
||||
{ "uuid", HAS_ARG, QEMU_OPTION_uuid },
|
||||
|
||||
/* temporary options */
|
||||
{ "usb", 0, QEMU_OPTION_usb },
|
||||
|
@ -8192,6 +8197,23 @@ static BOOL WINAPI qemu_ctrl_handler(DWORD type)
|
|||
}
|
||||
#endif
|
||||
|
||||
static int qemu_uuid_parse(const char *str, uint8_t *uuid)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if(strlen(str) != 36)
|
||||
return -1;
|
||||
|
||||
ret = sscanf(str, UUID_FMT, &uuid[0], &uuid[1], &uuid[2], &uuid[3],
|
||||
&uuid[4], &uuid[5], &uuid[6], &uuid[7], &uuid[8], &uuid[9],
|
||||
&uuid[10], &uuid[11], &uuid[12], &uuid[13], &uuid[14], &uuid[15]);
|
||||
|
||||
if(ret != 16)
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define MAX_NET_CLIENTS 32
|
||||
|
||||
#ifndef _WIN32
|
||||
|
@ -8770,6 +8792,13 @@ int main(int argc, char **argv)
|
|||
case QEMU_OPTION_show_cursor:
|
||||
cursor_hide = 0;
|
||||
break;
|
||||
case QEMU_OPTION_uuid:
|
||||
if(qemu_uuid_parse(optarg, qemu_uuid) < 0) {
|
||||
fprintf(stderr, "Fail to parse UUID string."
|
||||
" Wrong format.\n");
|
||||
exit(1);
|
||||
}
|
||||
break;
|
||||
case QEMU_OPTION_daemonize:
|
||||
daemonize = 1;
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue