On 08/22/13 05:16, Wanlong Gao wrote: > On 08/22/2013 10:29 AM, Eric Blake wrote: >> On 08/21/2013 07:12 PM, Wanlong Gao wrote: >> >>>>> + '*mem': 'str' }} >>>> >>>> Why is size passed as a 'str' instead of an integral type? If anything, >>>> at the QMP layer, it should be an integer representing size in bytes >>>> (the command line and HMP are already capable of converting shorthand >>>> like 1G into proper byte counts for use in QAPI). >>> >>> Since the original "mem" options is MB default, but "size" type is byte >>> default, >>> so we should pass a "str" first to be consistent with original option. >> >> No. HMP is human-friendly - it can default to M. QMP is >> machine-friendly - it should default to bytes and take an 'int' rather >> than a 'str'. Part of the glue between HMP and QMP is converting from >> human-friendly to machine-friendly, so that QMP doesn't have to carry cruft. > > This "mem" options is only for command line options, I can't understand you > are saying QMP command here. Because the original "mem" option treat "1024" > as "1024MB", but if I set this to "size" type, this "mem" options will > treat "1024" as "124B". So I should pass a str first and make it to "MB" > default in the options parse function to be consistent with original one.
Yes. This part of the schema is not for exposure over QMP, it just generates stuff for OptsVisitor, and it must remain compatible with the original, manual parsing of the option. This came up for V6: http://thread.gmane.org/gmane.comp.emulators.qemu/225678/focus=225714 Laszlo