On Fri, Nov 21, 2014 at 09:56:33AM -0500, Don Slutz wrote: > On 11/21/14 08:53, Eduardo Habkost wrote: > >On Fri, Nov 21, 2014 at 08:30:58AM -0500, Don Slutz wrote: > >>On 11/20/14 21:01, Eduardo Habkost wrote: > >>>On Thu, Nov 20, 2014 at 05:32:56PM -0500, Don Slutz wrote: > >>>[...] > [...] > >>>>+ pcms->vmport = ON_OFF_AUTO_AUTO; > >>>>+ object_property_add(obj, PC_MACHINE_VMPORT, "str", > >>>I believe "OnOffAuto" is a valid type name, if it is defined in the QAPI > >>>schema. > >>I can only find: > >> > >>qapi-types.h:typedef enum OnOffAuto > >>qapi-types.h:} OnOffAuto; > >I don't understand what you mean, where did you expect to find it? You added > >it > >to the schema, so it is now a valid type name. > > > >>Which I use to define pcms->vmport. The best I can translate this is > >>that "str" is what you are looking to replace. > >> > >>So I plan no change here. > >You are not defining a string property, but an OnOffAuto enum property, > >so why use "str"? > > > >See, for example, the type of an existing enum property: > >ide-hd.bios-chs-trans: > > > > $ qemu-system-x86_64 -device ide-hd,? > > [...] > > ide-hd.bios-chs-trans=BiosAtaTranslation (Logical CHS translation > > algorithm, auto/none/lba/large/rechs) > > [...] > > $ > > > > > Ok, I now understand what you are getting at. From object.h: > > * @type: the type name of the property. This namespace is pretty loosely > * defined. Sub namespaces are constructed by using a prefix and then > * to angle brackets. For instance, the type 'virtio-net-pci' in the > * 'link' namespace would be 'link<virtio-net-pci>'. > > It turns out that BiosAtaTranslation is a .name not a .type: >
"-device ...,?" above is showing the property type. See qdev_device_help(). > hyper-0-21-52:~/qemu>git grep BiosAtaTranslation > hw/core/qdev-properties.c:QEMU_BUILD_BUG_ON(sizeof(BiosAtaTranslation) != > sizeof(int)); > hw/core/qdev-properties.c: .name = "BiosAtaTranslation", > hw/core/qdev-properties.c: .enum_table = BiosAtaTranslation_lookup, > qapi/block.json:# BiosAtaTranslation: > qapi/block.json:{ 'enum': 'BiosAtaTranslation', PropertyInfo.name is what is used as the 'type' parameter to object_property_add() when qdev adds a static property to the object. See qdev_property_add_static(). > > > so to me there are a few options: > > 1) "enum" > 2) "OnOffAuto" > 3) "enum<OnOffAuto>" > 4) "enum OnOffAuto" > 5) "enum-OnOffAuto" > > I think #2 was what you were thinking of, but I am not sure. Please advise. The documentation is unclear about the set of valid type names. But as existing enum properties simply use the enum type name directly, I suggest "OnOffAuto" to follow existing practice. -- Eduardo