qemu-e2k/include
Markus Armbruster e3fe3988d7 error: Document Error API usage rules
This merely codifies existing practice, with one exception: the rule
advising against returning void, where existing practice is mixed.

When the Error API was created, we adopted the (unwritten) rule to
return void when the function returns no useful value on success,
unlike GError, which recommends to return true on success and false on
error then.

When a function returns a distinct error value, say false, a checked
call that passes the error up looks like

    if (!frobnicate(..., errp)) {
        handle the error...
    }

When it returns void, we need

    Error *err = NULL;

    frobnicate(..., &err);
    if (err) {
        handle the error...
        error_propagate(errp, err);
    }

Not only is this more verbose, it also creates an Error object even
when @errp is null, &error_abort or &error_fatal.

People got tired of the additional boilerplate, and started to ignore
the unwritten rule.  The result is confusion among developers about
the preferred usage.

Make the rule advising against returning void official by putting it
in writing.  This will hopefully reduce confusion.

Update the examples accordingly.

The remainder of this series will update a substantial amount of code
to honor the rule.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Greg Kurz <groug@kaod.org>
Message-Id: <20200707160613.848843-4-armbru@redhat.com>
[Tweak prose as per advice from Eric]
2020-07-10 15:01:06 +02:00
..
authz Include generated QAPI headers less 2019-08-16 13:31:51 +02:00
block block: drop unallocated_blocks_are_zero 2020-07-06 10:34:14 +02:00
chardev chardev: Use QEMUChrEvent enum in IOEventHandler typedef 2020-01-08 11:15:35 +01:00
crypto firmware (and crypto) patches 2020-07-09 20:01:43 +01:00
disas disas: include an optional note for the start of disassembly 2020-05-15 15:25:16 +01:00
exec virtio,acpi: features, fixes, cleanups. 2020-07-07 17:37:44 +01:00
fpu softfloat,m68k: disable floatx80_invalid_encoding() for m68k 2020-07-06 21:41:52 +02:00
hw firmware (and crypto) patches 2020-07-09 20:01:43 +01:00
io io/task: Move 'qom/object.h' header to source 2020-06-10 12:09:37 -04:00
libdecnumber include: Make headers more self-contained 2019-08-16 13:31:51 +02:00
migration migration/colo: Use ram_block_discard_disable() 2020-07-02 05:54:59 -04:00
monitor hmp: Implement qom-get HMP command 2020-06-01 18:44:27 +01:00
net vhost-vdpa: introduce vhost-vdpa net client 2020-07-07 07:59:51 -04:00
qapi error: Document Error API usage rules 2020-07-10 15:01:06 +02:00
qemu qom: add support for qom objects in modules. 2020-07-09 17:02:29 +01:00
qom object: qom module support 2020-07-07 14:54:29 +02:00
scsi scsi: explicitly list guest-recoverable sense codes 2019-07-15 11:20:42 +02:00
standard-headers Linux headers: update 2020-06-18 12:13:36 +02:00
sysemu virtio-balloon: Rip out qemu_balloon_inhibit() 2020-07-02 05:54:59 -04:00
tcg tcg: call qemu_spin_destroy for tb->jmp_lock 2020-06-16 14:49:05 +01:00
ui ui/win32-kbd-hook: handle AltGr in a hook procedure 2020-05-19 09:06:44 +02:00
user linux-user: Include trace-root.h in syscall-trace.h 2020-01-15 15:13:09 -10:00
elf.h target/arm/arch_dump: Add SVE notes 2020-01-23 15:34:04 +00:00
glib-compat.h glib: bump min required glib library version to 2.48 2019-08-22 10:46:34 +01:00
qemu-common.h Update copyright date for user-facing copyright strings 2020-03-22 11:16:21 +00:00
qemu-io.h Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
trace-tcg.h trace: get rid of generated-events.h/generated-events.c 2016-10-12 09:54:52 +02:00