Skip to content

Commit 4d45457

Browse files
committed
qemu-option: move standard option definitions out of qemu-config.c
Signed-off-by: Paolo Bonzini <[email protected]>
1 parent 63fb259 commit 4d45457

File tree

15 files changed

+700
-700
lines changed

15 files changed

+700
-700
lines changed

block/iscsi.c

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -980,9 +980,36 @@ static BlockDriver bdrv_iscsi = {
980980
#endif
981981
};
982982

983+
static QemuOptsList qemu_iscsi_opts = {
984+
.name = "iscsi",
985+
.head = QTAILQ_HEAD_INITIALIZER(qemu_iscsi_opts.head),
986+
.desc = {
987+
{
988+
.name = "user",
989+
.type = QEMU_OPT_STRING,
990+
.help = "username for CHAP authentication to target",
991+
},{
992+
.name = "password",
993+
.type = QEMU_OPT_STRING,
994+
.help = "password for CHAP authentication to target",
995+
},{
996+
.name = "header-digest",
997+
.type = QEMU_OPT_STRING,
998+
.help = "HeaderDigest setting. "
999+
"{CRC32C|CRC32C-NONE|NONE-CRC32C|NONE}",
1000+
},{
1001+
.name = "initiator-name",
1002+
.type = QEMU_OPT_STRING,
1003+
.help = "Initiator iqn name to use when connecting",
1004+
},
1005+
{ /* end of list */ }
1006+
},
1007+
};
1008+
9831009
static void iscsi_block_init(void)
9841010
{
9851011
bdrv_register(&bdrv_iscsi);
1012+
qemu_add_opts(&qemu_iscsi_opts);
9861013
}
9871014

9881015
block_init(iscsi_block_init);

blockdev.c

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1427,3 +1427,121 @@ BlockJobInfoList *qmp_query_block_jobs(Error **errp)
14271427
bdrv_iterate(do_qmp_query_block_jobs_one, &prev);
14281428
return dummy.next;
14291429
}
1430+
1431+
QemuOptsList qemu_drive_opts = {
1432+
.name = "drive",
1433+
.head = QTAILQ_HEAD_INITIALIZER(qemu_drive_opts.head),
1434+
.desc = {
1435+
{
1436+
.name = "bus",
1437+
.type = QEMU_OPT_NUMBER,
1438+
.help = "bus number",
1439+
},{
1440+
.name = "unit",
1441+
.type = QEMU_OPT_NUMBER,
1442+
.help = "unit number (i.e. lun for scsi)",
1443+
},{
1444+
.name = "if",
1445+
.type = QEMU_OPT_STRING,
1446+
.help = "interface (ide, scsi, sd, mtd, floppy, pflash, virtio)",
1447+
},{
1448+
.name = "index",
1449+
.type = QEMU_OPT_NUMBER,
1450+
.help = "index number",
1451+
},{
1452+
.name = "cyls",
1453+
.type = QEMU_OPT_NUMBER,
1454+
.help = "number of cylinders (ide disk geometry)",
1455+
},{
1456+
.name = "heads",
1457+
.type = QEMU_OPT_NUMBER,
1458+
.help = "number of heads (ide disk geometry)",
1459+
},{
1460+
.name = "secs",
1461+
.type = QEMU_OPT_NUMBER,
1462+
.help = "number of sectors (ide disk geometry)",
1463+
},{
1464+
.name = "trans",
1465+
.type = QEMU_OPT_STRING,
1466+
.help = "chs translation (auto, lba. none)",
1467+
},{
1468+
.name = "media",
1469+
.type = QEMU_OPT_STRING,
1470+
.help = "media type (disk, cdrom)",
1471+
},{
1472+
.name = "snapshot",
1473+
.type = QEMU_OPT_BOOL,
1474+
.help = "enable/disable snapshot mode",
1475+
},{
1476+
.name = "file",
1477+
.type = QEMU_OPT_STRING,
1478+
.help = "disk image",
1479+
},{
1480+
.name = "cache",
1481+
.type = QEMU_OPT_STRING,
1482+
.help = "host cache usage (none, writeback, writethrough, "
1483+
"directsync, unsafe)",
1484+
},{
1485+
.name = "aio",
1486+
.type = QEMU_OPT_STRING,
1487+
.help = "host AIO implementation (threads, native)",
1488+
},{
1489+
.name = "format",
1490+
.type = QEMU_OPT_STRING,
1491+
.help = "disk format (raw, qcow2, ...)",
1492+
},{
1493+
.name = "serial",
1494+
.type = QEMU_OPT_STRING,
1495+
.help = "disk serial number",
1496+
},{
1497+
.name = "rerror",
1498+
.type = QEMU_OPT_STRING,
1499+
.help = "read error action",
1500+
},{
1501+
.name = "werror",
1502+
.type = QEMU_OPT_STRING,
1503+
.help = "write error action",
1504+
},{
1505+
.name = "addr",
1506+
.type = QEMU_OPT_STRING,
1507+
.help = "pci address (virtio only)",
1508+
},{
1509+
.name = "readonly",
1510+
.type = QEMU_OPT_BOOL,
1511+
.help = "open drive file as read-only",
1512+
},{
1513+
.name = "iops",
1514+
.type = QEMU_OPT_NUMBER,
1515+
.help = "limit total I/O operations per second",
1516+
},{
1517+
.name = "iops_rd",
1518+
.type = QEMU_OPT_NUMBER,
1519+
.help = "limit read operations per second",
1520+
},{
1521+
.name = "iops_wr",
1522+
.type = QEMU_OPT_NUMBER,
1523+
.help = "limit write operations per second",
1524+
},{
1525+
.name = "bps",
1526+
.type = QEMU_OPT_NUMBER,
1527+
.help = "limit total bytes per second",
1528+
},{
1529+
.name = "bps_rd",
1530+
.type = QEMU_OPT_NUMBER,
1531+
.help = "limit read bytes per second",
1532+
},{
1533+
.name = "bps_wr",
1534+
.type = QEMU_OPT_NUMBER,
1535+
.help = "limit write bytes per second",
1536+
},{
1537+
.name = "copy-on-read",
1538+
.type = QEMU_OPT_BOOL,
1539+
.help = "copy read data from backing file into image file",
1540+
},{
1541+
.name = "boot",
1542+
.type = QEMU_OPT_BOOL,
1543+
.help = "(deprecated, ignored)",
1544+
},
1545+
{ /* end of list */ }
1546+
},
1547+
};

fsdev/Makefile.objs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ extra-obj-y = qemu-fsdev-dummy.o
77
else
88
common-obj-y = qemu-fsdev-dummy.o
99
endif
10+
common-obj-y += qemu-fsdev-opts.o

fsdev/qemu-fsdev-dummy.c

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,3 @@ int qemu_fsdev_add(QemuOpts *opts)
2020
{
2121
return 0;
2222
}
23-
24-
static void fsdev_register_config(void)
25-
{
26-
qemu_add_opts(&qemu_fsdev_opts);
27-
qemu_add_opts(&qemu_virtfs_opts);
28-
}
29-
machine_init(fsdev_register_config);

fsdev/qemu-fsdev-opts.c

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
/*
2+
* Virtio 9p
3+
*
4+
* This work is licensed under the terms of the GNU GPL, version 2 or
5+
* later. See the COPYING file in the top-level directory.
6+
*/
7+
8+
#include "qemu/config-file.h"
9+
#include "qemu/option.h"
10+
#include "qemu/module.h"
11+
12+
static QemuOptsList qemu_fsdev_opts = {
13+
.name = "fsdev",
14+
.implied_opt_name = "fsdriver",
15+
.head = QTAILQ_HEAD_INITIALIZER(qemu_fsdev_opts.head),
16+
.desc = {
17+
{
18+
.name = "fsdriver",
19+
.type = QEMU_OPT_STRING,
20+
}, {
21+
.name = "path",
22+
.type = QEMU_OPT_STRING,
23+
}, {
24+
.name = "security_model",
25+
.type = QEMU_OPT_STRING,
26+
}, {
27+
.name = "writeout",
28+
.type = QEMU_OPT_STRING,
29+
}, {
30+
.name = "readonly",
31+
.type = QEMU_OPT_BOOL,
32+
33+
}, {
34+
.name = "socket",
35+
.type = QEMU_OPT_STRING,
36+
}, {
37+
.name = "sock_fd",
38+
.type = QEMU_OPT_NUMBER,
39+
},
40+
41+
{ /*End of list */ }
42+
},
43+
};
44+
45+
static QemuOptsList qemu_virtfs_opts = {
46+
.name = "virtfs",
47+
.implied_opt_name = "fsdriver",
48+
.head = QTAILQ_HEAD_INITIALIZER(qemu_virtfs_opts.head),
49+
.desc = {
50+
{
51+
.name = "fsdriver",
52+
.type = QEMU_OPT_STRING,
53+
}, {
54+
.name = "path",
55+
.type = QEMU_OPT_STRING,
56+
}, {
57+
.name = "mount_tag",
58+
.type = QEMU_OPT_STRING,
59+
}, {
60+
.name = "security_model",
61+
.type = QEMU_OPT_STRING,
62+
}, {
63+
.name = "writeout",
64+
.type = QEMU_OPT_STRING,
65+
}, {
66+
.name = "readonly",
67+
.type = QEMU_OPT_BOOL,
68+
}, {
69+
.name = "socket",
70+
.type = QEMU_OPT_STRING,
71+
}, {
72+
.name = "sock_fd",
73+
.type = QEMU_OPT_NUMBER,
74+
},
75+
76+
{ /*End of list */ }
77+
},
78+
};
79+
80+
static void fsdev_register_config(void)
81+
{
82+
qemu_add_opts(&qemu_fsdev_opts);
83+
qemu_add_opts(&qemu_virtfs_opts);
84+
}
85+
machine_init(fsdev_register_config);

fsdev/qemu-fsdev.c

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -97,11 +97,3 @@ FsDriverEntry *get_fsdev_fsentry(char *id)
9797
}
9898
return NULL;
9999
}
100-
101-
static void fsdev_register_config(void)
102-
{
103-
qemu_add_opts(&qemu_fsdev_opts);
104-
qemu_add_opts(&qemu_virtfs_opts);
105-
}
106-
machine_init(fsdev_register_config);
107-

hw/qdev-monitor.c

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -615,3 +615,54 @@ void qdev_machine_init(void)
615615
qdev_get_peripheral_anon();
616616
qdev_get_peripheral();
617617
}
618+
619+
QemuOptsList qemu_device_opts = {
620+
.name = "device",
621+
.implied_opt_name = "driver",
622+
.head = QTAILQ_HEAD_INITIALIZER(qemu_device_opts.head),
623+
.desc = {
624+
/*
625+
* no elements => accept any
626+
* sanity checking will happen later
627+
* when setting device properties
628+
*/
629+
{ /* end of list */ }
630+
},
631+
};
632+
633+
QemuOptsList qemu_global_opts = {
634+
.name = "global",
635+
.head = QTAILQ_HEAD_INITIALIZER(qemu_global_opts.head),
636+
.desc = {
637+
{
638+
.name = "driver",
639+
.type = QEMU_OPT_STRING,
640+
},{
641+
.name = "property",
642+
.type = QEMU_OPT_STRING,
643+
},{
644+
.name = "value",
645+
.type = QEMU_OPT_STRING,
646+
},
647+
{ /* end of list */ }
648+
},
649+
};
650+
651+
int qemu_global_option(const char *str)
652+
{
653+
char driver[64], property[64];
654+
QemuOpts *opts;
655+
int rc, offset;
656+
657+
rc = sscanf(str, "%63[^.].%63[^=]%n", driver, property, &offset);
658+
if (rc < 2 || str[offset] != '=') {
659+
error_report("can't parse: \"%s\"", str);
660+
return -1;
661+
}
662+
663+
opts = qemu_opts_create_nofail(&qemu_global_opts);
664+
qemu_opt_set(opts, "driver", driver);
665+
qemu_opt_set(opts, "property", property);
666+
qemu_opt_set(opts, "value", str+offset+1);
667+
return 0;
668+
}

include/qemu/config-file.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,6 @@
66
#include "qapi/error.h"
77
#include "qemu/option.h"
88

9-
extern QemuOptsList qemu_fsdev_opts;
10-
extern QemuOptsList qemu_virtfs_opts;
11-
extern QemuOptsList qemu_spice_opts;
12-
extern QemuOptsList qemu_sandbox_opts;
13-
149
QemuOptsList *qemu_find_opts(const char *group);
1510
QemuOptsList *qemu_find_opts_err(const char *group, Error **errp);
1611
void qemu_add_opts(QemuOptsList *list);

include/sysemu/sysemu.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,4 +183,12 @@ char *get_boot_devices_list(uint32_t *size);
183183

184184
bool usb_enabled(bool default_usb);
185185

186+
extern QemuOptsList qemu_drive_opts;
187+
extern QemuOptsList qemu_chardev_opts;
188+
extern QemuOptsList qemu_device_opts;
189+
extern QemuOptsList qemu_netdev_opts;
190+
extern QemuOptsList qemu_net_opts;
191+
extern QemuOptsList qemu_global_opts;
192+
extern QemuOptsList qemu_mon_opts;
193+
186194
#endif

monitor.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4790,3 +4790,25 @@ int monitor_read_block_device_key(Monitor *mon, const char *device,
47904790

47914791
return monitor_read_bdrv_key_start(mon, bs, completion_cb, opaque);
47924792
}
4793+
4794+
QemuOptsList qemu_mon_opts = {
4795+
.name = "mon",
4796+
.implied_opt_name = "chardev",
4797+
.head = QTAILQ_HEAD_INITIALIZER(qemu_mon_opts.head),
4798+
.desc = {
4799+
{
4800+
.name = "mode",
4801+
.type = QEMU_OPT_STRING,
4802+
},{
4803+
.name = "chardev",
4804+
.type = QEMU_OPT_STRING,
4805+
},{
4806+
.name = "default",
4807+
.type = QEMU_OPT_BOOL,
4808+
},{
4809+
.name = "pretty",
4810+
.type = QEMU_OPT_BOOL,
4811+
},
4812+
{ /* end of list */ }
4813+
},
4814+
};

0 commit comments

Comments
 (0)