mirror of
https://git.proxmox.com/git/qemu
synced 2025-08-15 21:13:50 +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
sysemu.h
2
sysemu.h
@ -8,6 +8,8 @@ extern const char *bios_dir;
|
|||||||
|
|
||||||
extern int vm_running;
|
extern int vm_running;
|
||||||
extern const char *qemu_name;
|
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 struct vm_change_state_entry VMChangeStateEntry;
|
||||||
typedef void VMChangeStateHandler(void *opaque, int running);
|
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_rt_timer;
|
||||||
QEMUTimer *icount_vm_timer;
|
QEMUTimer *icount_vm_timer;
|
||||||
|
|
||||||
|
uint8_t qemu_uuid[16];
|
||||||
|
|
||||||
#define TFR(expr) do { if ((expr) != -1) break; } while (errno == EINTR)
|
#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"
|
"-g WxH[xDEPTH] Set the initial graphical resolution and depth\n"
|
||||||
#endif
|
#endif
|
||||||
"-name string set the name of the guest\n"
|
"-name string set the name of the guest\n"
|
||||||
|
"-uuid %%08x-%%04x-%%04x-%%04x-%%012x specify machine UUID\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Network options:\n"
|
"Network options:\n"
|
||||||
"-net nic[,vlan=n][,macaddr=addr][,model=type]\n"
|
"-net nic[,vlan=n][,macaddr=addr][,model=type]\n"
|
||||||
@ -7894,6 +7897,7 @@ enum {
|
|||||||
QEMU_OPTION_startdate,
|
QEMU_OPTION_startdate,
|
||||||
QEMU_OPTION_tb_size,
|
QEMU_OPTION_tb_size,
|
||||||
QEMU_OPTION_icount,
|
QEMU_OPTION_icount,
|
||||||
|
QEMU_OPTION_uuid,
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct QEMUOption {
|
typedef struct QEMUOption {
|
||||||
@ -7982,6 +7986,7 @@ const QEMUOption qemu_options[] = {
|
|||||||
#ifdef CONFIG_CURSES
|
#ifdef CONFIG_CURSES
|
||||||
{ "curses", 0, QEMU_OPTION_curses },
|
{ "curses", 0, QEMU_OPTION_curses },
|
||||||
#endif
|
#endif
|
||||||
|
{ "uuid", HAS_ARG, QEMU_OPTION_uuid },
|
||||||
|
|
||||||
/* temporary options */
|
/* temporary options */
|
||||||
{ "usb", 0, QEMU_OPTION_usb },
|
{ "usb", 0, QEMU_OPTION_usb },
|
||||||
@ -8192,6 +8197,23 @@ static BOOL WINAPI qemu_ctrl_handler(DWORD type)
|
|||||||
}
|
}
|
||||||
#endif
|
#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
|
#define MAX_NET_CLIENTS 32
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
@ -8770,6 +8792,13 @@ int main(int argc, char **argv)
|
|||||||
case QEMU_OPTION_show_cursor:
|
case QEMU_OPTION_show_cursor:
|
||||||
cursor_hide = 0;
|
cursor_hide = 0;
|
||||||
break;
|
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:
|
case QEMU_OPTION_daemonize:
|
||||||
daemonize = 1;
|
daemonize = 1;
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user