On Thu, 2013-07-18 at 09:58 -0500, Anthony Liguori wrote: > Paolo Bonzini <pbonz...@redhat.com> writes: > > > Il 18/07/2013 16:42, Marcel Apfelbaum ha scritto: > >> On Thu, 2013-07-18 at 09:28 -0500, Anthony Liguori wrote: > >>> Marcel Apfelbaum <marce...@redhat.com> writes: > >>> > >>>> 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 <marce...@redhat.com> > >>>> Reviewed-by: Kevin Wolf <kw...@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" > >>>> + > >>> > >>> Looks reasonable, but please make this a bitmap. There are cases, > >>> particularly if we start modeling multifunction PCI cards as a single > >>> device, where a single device can support multiple types of > >>> functionality. > >> > >> Antony, thanks for your review! > >> The whole point was to find a way to differentiate them by > >> functionality so they can be sorted... > >> Is it possible that a multifunction pci card will be used > >> for more then one category mentioned above? > > > > Yes, for example your laptop's GPU probably has an audio function too. > > Another example is a converged network adapter. It's a single device > with an ethernet port but it exposes two physical functions--one NIC and > one fibre channel device via FCoE. I agree that these are different device types, but they have the same category: "Network" > > The PIIX chipset and ICH9 are multifunction devices but we model them as > separate devices today. It's quite likely that in the very near future > we'll fix that. Interesting, thanks, in one hand I can call them both "Controller", on the other hand the bitmap can be used for creating subcategories: For example: "Storage, Controller" and "I/O, Controller"
> > >> I agree the list may not be exhaustive, but I really hope > >> I'll find a way to sort them in such a way that a > >> device will not fall under more than one category > > > > If you sort the bit definitions in alphabetic order (audio=bit 30, > > display=bit 29, etc. for example), the resulting integer sort should > > also yield alphabetic order. But perhaps it's not a smart idea if we > > take into account future localization of the help text. > > I was thinking the same thing. Could also just cheat and make the sort > function a bit more complicated. The suggested solution works fair enough, thanks! Marcel > > Regards, > > Anthony Liguori > > > > > Paolo >