Hi there,

 This is a new version of the QError framework.

 I've been through the last QError thread and tried to collect the best
suggestions. The important changes are:

- Dropped the .user_print function
- Added Paolo's suggestion on having a printf-like format for 'desc'
- Line number and filename are also stored in the QError object
- Uses QJSon

 Now, a call like:

monitor_printf(mon, "husb: host usb device %d.%d is already open\n",
                      bus_num, addr);

 Would become:

qemu_error_structed("{ 'bus_num': %d, 'addr': %d }", bus_num, addr);

 Its error table entry should be:

{
    .code = QERR_USB_EOPEN,
    .desc = "husb: host usb device %(bus_num)d.%(addr)d is already open",
}

 Finally, on the wire we'd have:

{ "error": { "code": 45,
             "data": { "bus_num": 1, "addr": 0xff } } }

 As the previous version, qemu_error_structed() builds on top of Gerd's
QemuErrorSink API.

 Besides introducing QError, this series also has simple usage examples for
qdev_device_add() and do_info_balloon().

 A last note: this series is on top of the (to be merged) QJSon module,
that's why it's a RFC and.. I didn't test it too much. :)

 Thanks.


Reply via email to