* [Qemu-devel] [RFC PATCH 0/2] qemu-help: improve -device command line help @ 2013-07-18 9:06 Marcel Apfelbaum 2013-07-18 9:06 ` [Qemu-devel] [RFC PATCH 1/2] qemu-help: Sort devices by logical functionality Marcel Apfelbaum ` (2 more replies) 0 siblings, 3 replies; 6+ messages in thread From: Marcel Apfelbaum @ 2013-07-18 9:06 UTC (permalink / raw) To: qemu-devel; +Cc: pbonzini, aliguori, afaerber, Marcel Apfelbaum Running qemu with "-device ?" option returns ~145 lines. It is hard to manage understanding the output. Theses patches aim to partially solve the problem by dividing the devices into logical categories like "Network/Display/..." and sorting them by it. Marcel Apfelbaum (2): qemu-help: Sort devices by logical functionality devices: Associate devices to their logical category hw/audio/ac97.c | 1 + hw/display/cirrus_vga.c | 1 + hw/net/eepro100.c | 1 + hw/scsi/scsi-disk.c | 4 ++++ hw/usb/dev-hid.c | 1 + include/hw/qdev-core.h | 7 +++++++ qdev-monitor.c | 23 ++++++++++++++++++++++- 7 files changed, 37 insertions(+), 1 deletion(-) -- 1.8.3.1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] [RFC PATCH 1/2] qemu-help: Sort devices by logical functionality 2013-07-18 9:06 [Qemu-devel] [RFC PATCH 0/2] qemu-help: improve -device command line help Marcel Apfelbaum @ 2013-07-18 9:06 ` Marcel Apfelbaum 2013-07-18 9:06 ` [Qemu-devel] [RFC PATCH 2/2] devices: Associate devices to their logical category Marcel Apfelbaum 2013-07-29 20:24 ` [Qemu-devel] [RFC PATCH 0/2] qemu-help: improve -device command line help Anthony Liguori 2 siblings, 0 replies; 6+ messages in thread From: Marcel Apfelbaum @ 2013-07-18 9:06 UTC (permalink / raw) To: qemu-devel; +Cc: pbonzini, aliguori, afaerber, Marcel Apfelbaum Categorize devices that appear as output to "-device ?" command by logical functionality. Sort the devices by logical categories before showing them to user. Signed-off-by: Marcel Apfelbaum <marcel.a@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> --- include/hw/qdev-core.h | 7 +++++++ qdev-monitor.c | 23 ++++++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h index 7fbffcb..4f7a9b8 100644 --- a/include/hw/qdev-core.h +++ b/include/hw/qdev-core.h @@ -17,6 +17,12 @@ enum { #define DEVICE_CLASS(klass) OBJECT_CLASS_CHECK(DeviceClass, (klass), TYPE_DEVICE) #define DEVICE_GET_CLASS(obj) OBJECT_GET_CLASS(DeviceClass, (obj), TYPE_DEVICE) +#define DEVICE_CATEGORY_STORAGE "storage" +#define DEVICE_CATEGORY_NETWORK "network" +#define DEVICE_CATEGORY_INPUT "input" +#define DEVICE_CATEGORY_DISPLAY "display" +#define DEVICE_CATEGORY_SOUND "sound" + typedef int (*qdev_initfn)(DeviceState *dev); typedef int (*qdev_event)(DeviceState *dev); typedef void (*qdev_resetfn)(DeviceState *dev); @@ -81,6 +87,7 @@ typedef struct DeviceClass { /*< public >*/ const char *fw_name; + const char *category; const char *desc; Property *props; int no_user; diff --git a/qdev-monitor.c b/qdev-monitor.c index e54dbc2..1446b6e 100644 --- a/qdev-monitor.c +++ b/qdev-monitor.c @@ -93,6 +93,9 @@ static void qdev_print_devinfo(ObjectClass *klass, void *opaque) if (qdev_class_has_alias(dc)) { error_printf(", alias \"%s\"", qdev_class_get_alias(dc)); } + if (dc->category) { + error_printf(", category \"%s\"", dc->category); + } if (dc->desc) { error_printf(", desc \"%s\"", dc->desc); } @@ -139,16 +142,34 @@ static const char *find_typename_by_alias(const char *alias) return NULL; } +static gint qdev_device_compare(gconstpointer item1, gconstpointer item2) +{ + DeviceClass *dc1, *dc2; + + dc1 = (DeviceClass *)object_class_dynamic_cast((ObjectClass *)item1, + TYPE_DEVICE); + dc2 = (DeviceClass *)object_class_dynamic_cast((ObjectClass *)item2, + TYPE_DEVICE); + + return g_strcmp0(dc1->category, dc2->category); +} + int qdev_device_help(QemuOpts *opts) { const char *driver; Property *prop; ObjectClass *klass; + GSList *list; driver = qemu_opt_get(opts, "driver"); if (driver && is_help_option(driver)) { bool show_no_user = false; - object_class_foreach(qdev_print_devinfo, TYPE_DEVICE, false, &show_no_user); + + list = object_class_get_list(TYPE_DEVICE, false); + list = g_slist_sort(list, qdev_device_compare); + g_slist_foreach(list, (GFunc)qdev_print_devinfo, &show_no_user); + g_slist_free(list); + return 1; } -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [RFC PATCH 2/2] devices: Associate devices to their logical category 2013-07-18 9:06 [Qemu-devel] [RFC PATCH 0/2] qemu-help: improve -device command line help Marcel Apfelbaum 2013-07-18 9:06 ` [Qemu-devel] [RFC PATCH 1/2] qemu-help: Sort devices by logical functionality Marcel Apfelbaum @ 2013-07-18 9:06 ` Marcel Apfelbaum 2013-07-29 20:24 ` [Qemu-devel] [RFC PATCH 0/2] qemu-help: improve -device command line help Anthony Liguori 2 siblings, 0 replies; 6+ messages in thread From: Marcel Apfelbaum @ 2013-07-18 9:06 UTC (permalink / raw) To: qemu-devel; +Cc: pbonzini, aliguori, afaerber, Marcel Apfelbaum The category will be used to sort the devices displayed in the command line help. Signed-off-by: Marcel Apfelbaum <marcel.a@redhat.com> --- Note that these are not all the needed changes, the only purpose of this patch is to be a proof of concept. hw/audio/ac97.c | 1 + hw/display/cirrus_vga.c | 1 + hw/net/eepro100.c | 1 + hw/scsi/scsi-disk.c | 4 ++++ hw/usb/dev-hid.c | 1 + 5 files changed, 8 insertions(+) diff --git a/hw/audio/ac97.c b/hw/audio/ac97.c index 365b2f1..cbedf11 100644 --- a/hw/audio/ac97.c +++ b/hw/audio/ac97.c @@ -1420,6 +1420,7 @@ static void ac97_class_init (ObjectClass *klass, void *data) k->device_id = PCI_DEVICE_ID_INTEL_82801AA_5; k->revision = 0x01; k->class_id = PCI_CLASS_MULTIMEDIA_AUDIO; + dc->category = DEVICE_CATEGORY_SOUND; dc->desc = "Intel 82801AA AC97 Audio"; dc->vmsd = &vmstate_ac97; dc->props = ac97_properties; diff --git a/hw/display/cirrus_vga.c b/hw/display/cirrus_vga.c index a440575..0f4be70 100644 --- a/hw/display/cirrus_vga.c +++ b/hw/display/cirrus_vga.c @@ -3002,6 +3002,7 @@ static void cirrus_vga_class_init(ObjectClass *klass, void *data) k->vendor_id = PCI_VENDOR_ID_CIRRUS; k->device_id = CIRRUS_ID_CLGD5446; k->class_id = PCI_CLASS_DISPLAY_VGA; + dc->category = DEVICE_CATEGORY_DISPLAY; dc->desc = "Cirrus CLGD 54xx VGA"; dc->vmsd = &vmstate_pci_cirrus_vga; dc->props = pci_vga_cirrus_properties; diff --git a/hw/net/eepro100.c b/hw/net/eepro100.c index e0befb2..944a7ac 100644 --- a/hw/net/eepro100.c +++ b/hw/net/eepro100.c @@ -2084,6 +2084,7 @@ static void eepro100_class_init(ObjectClass *klass, void *data) info = eepro100_get_class_by_name(object_class_get_name(klass)); dc->props = e100_properties; + dc->category = DEVICE_CATEGORY_NETWORK; dc->desc = info->desc; k->vendor_id = PCI_VENDOR_ID_INTEL; k->class_id = PCI_CLASS_NETWORK_ETHERNET; diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c index 74e6a14..3b2cd99 100644 --- a/hw/scsi/scsi-disk.c +++ b/hw/scsi/scsi-disk.c @@ -2428,6 +2428,7 @@ static void scsi_hd_class_initfn(ObjectClass *klass, void *data) sc->alloc_req = scsi_new_request; sc->unit_attention_reported = scsi_disk_unit_attention_reported; dc->fw_name = "disk"; + dc->category = DEVICE_CATEGORY_STORAGE; dc->desc = "virtual SCSI disk"; dc->reset = scsi_disk_reset; dc->props = scsi_hd_properties; @@ -2457,6 +2458,7 @@ static void scsi_cd_class_initfn(ObjectClass *klass, void *data) sc->alloc_req = scsi_new_request; sc->unit_attention_reported = scsi_disk_unit_attention_reported; dc->fw_name = "disk"; + dc->category = DEVICE_CATEGORY_STORAGE; dc->desc = "virtual SCSI CD-ROM"; dc->reset = scsi_disk_reset; dc->props = scsi_cd_properties; @@ -2486,6 +2488,7 @@ static void scsi_block_class_initfn(ObjectClass *klass, void *data) sc->destroy = scsi_destroy; sc->alloc_req = scsi_block_new_request; dc->fw_name = "disk"; + dc->category = DEVICE_CATEGORY_STORAGE; dc->desc = "SCSI block device passthrough"; dc->reset = scsi_disk_reset; dc->props = scsi_block_properties; @@ -2520,6 +2523,7 @@ static void scsi_disk_class_initfn(ObjectClass *klass, void *data) sc->alloc_req = scsi_new_request; sc->unit_attention_reported = scsi_disk_unit_attention_reported; dc->fw_name = "disk"; + dc->category = DEVICE_CATEGORY_STORAGE; dc->desc = "virtual SCSI disk or CD-ROM (legacy)"; dc->reset = scsi_disk_reset; dc->props = scsi_disk_properties; diff --git a/hw/usb/dev-hid.c b/hw/usb/dev-hid.c index 31f3cde..9d006ba 100644 --- a/hw/usb/dev-hid.c +++ b/hw/usb/dev-hid.c @@ -677,6 +677,7 @@ static void usb_mouse_class_initfn(ObjectClass *klass, void *data) uc->product_desc = "QEMU USB Mouse"; uc->usb_desc = &desc_mouse; dc->vmsd = &vmstate_usb_ptr; + dc->category = DEVICE_CATEGORY_INPUT; } static const TypeInfo usb_mouse_info = { -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [RFC PATCH 0/2] qemu-help: improve -device command line help 2013-07-18 9:06 [Qemu-devel] [RFC PATCH 0/2] qemu-help: improve -device command line help Marcel Apfelbaum 2013-07-18 9:06 ` [Qemu-devel] [RFC PATCH 1/2] qemu-help: Sort devices by logical functionality Marcel Apfelbaum 2013-07-18 9:06 ` [Qemu-devel] [RFC PATCH 2/2] devices: Associate devices to their logical category Marcel Apfelbaum @ 2013-07-29 20:24 ` Anthony Liguori 2013-07-29 20:42 ` Eric Blake 2 siblings, 1 reply; 6+ messages in thread From: Anthony Liguori @ 2013-07-29 20:24 UTC (permalink / raw) To: Marcel Apfelbaum, qemu-devel; +Cc: pbonzini, aliguori, afaerber Applied. Thanks. Regards, Anthony Liguori ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [RFC PATCH 0/2] qemu-help: improve -device command line help 2013-07-29 20:24 ` [Qemu-devel] [RFC PATCH 0/2] qemu-help: improve -device command line help Anthony Liguori @ 2013-07-29 20:42 ` Eric Blake 0 siblings, 0 replies; 6+ messages in thread From: Eric Blake @ 2013-07-29 20:42 UTC (permalink / raw) To: Anthony Liguori; +Cc: pbonzini, qemu-devel, afaerber, Marcel Apfelbaum [-- Attachment #1: Type: text/plain, Size: 399 bytes --] On 07/29/2013 02:24 PM, Anthony Liguori wrote: > Applied. Thanks. Script botch-up? This series has a title of RFC (which means it should not be applied as-is), and there have been later revisions that dropped the RFC in response to comments; did the correct version get applied? -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 621 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] [RFC PATCH 0/2] qemu-help: improve -device command line help @ 2013-07-18 8:27 Marcel Apfelbaum 2013-07-18 8:27 ` [Qemu-devel] [RFC PATCH 2/2] devices: Associate devices to their logical category Marcel Apfelbaum 0 siblings, 1 reply; 6+ messages in thread From: Marcel Apfelbaum @ 2013-07-18 8:27 UTC (permalink / raw) To: qemu-devel; +Cc: pbonzini, aliguori, afaerber, Marcel Apfelbaum Running qemu with "-device ?" option returns ~145 lines. It is hard to manage understanding the output. Theses patches aim to partially solve the problem by dividing the devices into logical categories like "Network/Display/..." and sorting them by it. Marcel Apfelbaum (2): qemu-help: Sort devices by logical functionality devices: Associate devices to their logical category hw/audio/ac97.c | 1 + hw/display/cirrus_vga.c | 1 + hw/net/eepro100.c | 1 + hw/scsi/scsi-disk.c | 4 ++++ hw/usb/dev-hid.c | 1 + include/hw/qdev-core.h | 7 +++++++ qdev-monitor.c | 23 ++++++++++++++++++++++- 7 files changed, 37 insertions(+), 1 deletion(-) -- 1.8.3.1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] [RFC PATCH 2/2] devices: Associate devices to their logical category 2013-07-18 8:27 Marcel Apfelbaum @ 2013-07-18 8:27 ` Marcel Apfelbaum 0 siblings, 0 replies; 6+ messages in thread From: Marcel Apfelbaum @ 2013-07-18 8:27 UTC (permalink / raw) To: qemu-devel; +Cc: pbonzini, aliguori, afaerber, Marcel Apfelbaum The category will be used to sort the devices displayed in the command line help. Signed-off-by: Marcel Apfelbaum <marcel.a@redhat.com> --- Note that these are not all the needed changes, the only purpose of this patch is to be a proof of concept. hw/audio/ac97.c | 1 + hw/display/cirrus_vga.c | 1 + hw/net/eepro100.c | 1 + hw/scsi/scsi-disk.c | 4 ++++ hw/usb/dev-hid.c | 1 + 5 files changed, 8 insertions(+) diff --git a/hw/audio/ac97.c b/hw/audio/ac97.c index 365b2f1..cbedf11 100644 --- a/hw/audio/ac97.c +++ b/hw/audio/ac97.c @@ -1420,6 +1420,7 @@ static void ac97_class_init (ObjectClass *klass, void *data) k->device_id = PCI_DEVICE_ID_INTEL_82801AA_5; k->revision = 0x01; k->class_id = PCI_CLASS_MULTIMEDIA_AUDIO; + dc->category = DEVICE_CATEGORY_SOUND; dc->desc = "Intel 82801AA AC97 Audio"; dc->vmsd = &vmstate_ac97; dc->props = ac97_properties; diff --git a/hw/display/cirrus_vga.c b/hw/display/cirrus_vga.c index a440575..0f4be70 100644 --- a/hw/display/cirrus_vga.c +++ b/hw/display/cirrus_vga.c @@ -3002,6 +3002,7 @@ static void cirrus_vga_class_init(ObjectClass *klass, void *data) k->vendor_id = PCI_VENDOR_ID_CIRRUS; k->device_id = CIRRUS_ID_CLGD5446; k->class_id = PCI_CLASS_DISPLAY_VGA; + dc->category = DEVICE_CATEGORY_DISPLAY; dc->desc = "Cirrus CLGD 54xx VGA"; dc->vmsd = &vmstate_pci_cirrus_vga; dc->props = pci_vga_cirrus_properties; diff --git a/hw/net/eepro100.c b/hw/net/eepro100.c index e0befb2..944a7ac 100644 --- a/hw/net/eepro100.c +++ b/hw/net/eepro100.c @@ -2084,6 +2084,7 @@ static void eepro100_class_init(ObjectClass *klass, void *data) info = eepro100_get_class_by_name(object_class_get_name(klass)); dc->props = e100_properties; + dc->category = DEVICE_CATEGORY_NETWORK; dc->desc = info->desc; k->vendor_id = PCI_VENDOR_ID_INTEL; k->class_id = PCI_CLASS_NETWORK_ETHERNET; diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c index 74e6a14..3b2cd99 100644 --- a/hw/scsi/scsi-disk.c +++ b/hw/scsi/scsi-disk.c @@ -2428,6 +2428,7 @@ static void scsi_hd_class_initfn(ObjectClass *klass, void *data) sc->alloc_req = scsi_new_request; sc->unit_attention_reported = scsi_disk_unit_attention_reported; dc->fw_name = "disk"; + dc->category = DEVICE_CATEGORY_STORAGE; dc->desc = "virtual SCSI disk"; dc->reset = scsi_disk_reset; dc->props = scsi_hd_properties; @@ -2457,6 +2458,7 @@ static void scsi_cd_class_initfn(ObjectClass *klass, void *data) sc->alloc_req = scsi_new_request; sc->unit_attention_reported = scsi_disk_unit_attention_reported; dc->fw_name = "disk"; + dc->category = DEVICE_CATEGORY_STORAGE; dc->desc = "virtual SCSI CD-ROM"; dc->reset = scsi_disk_reset; dc->props = scsi_cd_properties; @@ -2486,6 +2488,7 @@ static void scsi_block_class_initfn(ObjectClass *klass, void *data) sc->destroy = scsi_destroy; sc->alloc_req = scsi_block_new_request; dc->fw_name = "disk"; + dc->category = DEVICE_CATEGORY_STORAGE; dc->desc = "SCSI block device passthrough"; dc->reset = scsi_disk_reset; dc->props = scsi_block_properties; @@ -2520,6 +2523,7 @@ static void scsi_disk_class_initfn(ObjectClass *klass, void *data) sc->alloc_req = scsi_new_request; sc->unit_attention_reported = scsi_disk_unit_attention_reported; dc->fw_name = "disk"; + dc->category = DEVICE_CATEGORY_STORAGE; dc->desc = "virtual SCSI disk or CD-ROM (legacy)"; dc->reset = scsi_disk_reset; dc->props = scsi_disk_properties; diff --git a/hw/usb/dev-hid.c b/hw/usb/dev-hid.c index 31f3cde..9d006ba 100644 --- a/hw/usb/dev-hid.c +++ b/hw/usb/dev-hid.c @@ -677,6 +677,7 @@ static void usb_mouse_class_initfn(ObjectClass *klass, void *data) uc->product_desc = "QEMU USB Mouse"; uc->usb_desc = &desc_mouse; dc->vmsd = &vmstate_usb_ptr; + dc->category = DEVICE_CATEGORY_INPUT; } static const TypeInfo usb_mouse_info = { -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2013-07-29 20:42 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-07-18 9:06 [Qemu-devel] [RFC PATCH 0/2] qemu-help: improve -device command line help Marcel Apfelbaum 2013-07-18 9:06 ` [Qemu-devel] [RFC PATCH 1/2] qemu-help: Sort devices by logical functionality Marcel Apfelbaum 2013-07-18 9:06 ` [Qemu-devel] [RFC PATCH 2/2] devices: Associate devices to their logical category Marcel Apfelbaum 2013-07-29 20:24 ` [Qemu-devel] [RFC PATCH 0/2] qemu-help: improve -device command line help Anthony Liguori 2013-07-29 20:42 ` Eric Blake -- strict thread matches above, loose matches on Subject: below -- 2013-07-18 8:27 Marcel Apfelbaum 2013-07-18 8:27 ` [Qemu-devel] [RFC PATCH 2/2] devices: Associate devices to their logical category Marcel Apfelbaum
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).