From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Mxkgp-00041P-7D for qemu-devel@nongnu.org; Tue, 13 Oct 2009 12:57:35 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Mxkgi-0003qC-O1 for qemu-devel@nongnu.org; Tue, 13 Oct 2009 12:57:32 -0400 Received: from [199.232.76.173] (port=51958 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Mxkgi-0003pz-DV for qemu-devel@nongnu.org; Tue, 13 Oct 2009 12:57:28 -0400 Received: from mx1.redhat.com ([209.132.183.28]:23666) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Mxkgh-00022M-L6 for qemu-devel@nongnu.org; Tue, 13 Oct 2009 12:57:28 -0400 From: Luiz Capitulino Date: Tue, 13 Oct 2009 13:56:57 -0300 Message-Id: <1255453026-18637-1-git-send-email-lcapitulino@redhat.com> Subject: [Qemu-devel] [PATCH v0 0/9] QError List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: aliguori@us.ibm.com, kraxel@redhat.com This series adds infrastructure which will be needed by the future monitor protocol to handle and emit error information correctly. QError is a QObject designed to stored error information in way that it can be emitted by the protocol code or printed in an user friendly way. To use it in the Monitor and its handlers, I've added a function called qemu_error_structed(), which builds on top of Gerd's QemuErrorSink API, this means that it is also capable of printing error information to stderr. Basically, we have a QError member in the Monitor struct, which will be set if an error has occurred. The Monitor's top level code will check it at handler exit time and handle the error properly. QError represents an error, and it has the following properties: - Error code - Error general description - Error specific data Code and description are stored in a static table in the QError module itself, the error specific data is generated at error time by the function calling qemu_error_structed(). This design is based on the way I plan to emit error information in the protocol, which is: { "error": { "code": json-number, "desc": json-string, "data": json-value } "id": json-value, "timestamp": json-string } Besides introducing QError, this series also has simple usage examples for qdev_device_add() and do_info_balloon(). Hopefully this is the last big piece of infrastructure before having the protocol parser itself. Please, review carefully. Thanks. PS: Applies on top of my last series.