You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
qemu/audio
Claudio Fontana c551fb0b53 module: add Error arguments to module_load and module_load_qom
improve error handling during module load, by changing:

bool module_load(const char *prefix, const char *lib_name);
void module_load_qom(const char *type);

to:

int module_load(const char *prefix, const char *name, Error **errp);
int module_load_qom(const char *type, Error **errp);

where the return value is:

 -1 on module load error, and errp is set with the error
  0 on module or one of its dependencies are not installed
  1 on module load success
  2 on module load success (module already loaded or built-in)

module_load_qom_one has been introduced in:

commit 28457744c3 ("module: qom module support"), which built on top of
module_load_one, but discarded the bool return value. Restore it.

Adapt all callers to emit errors, or ignore them, or fail hard,
as appropriate in each context.

Replace the previous emission of errors via fprintf in _some_ error
conditions with Error and error_report, so as to emit to the appropriate
target.

A memory leak is also fixed as part of the module_load changes.

audio: when attempting to load an audio module, report module load errors.
Note that still for some callers, a single issue may generate multiple
error reports, and this could be improved further.
Regarding the audio code itself, audio_add() seems to ignore errors,
and this should probably be improved.

block: when attempting to load a block module, report module load errors.
For the code paths that already use the Error API, take advantage of those
to report module load errors into the Error parameter.
For the other code paths, we currently emit the error, but this could be
improved further by adding Error parameters to all possible code paths.

console: when attempting to load a display module, report module load errors.

qdev: when creating a new qdev Device object (DeviceState), report load errors.
      If a module cannot be loaded to create that device, now abort execution
      (if no CONFIG_MODULE) or exit (if CONFIG_MODULE).

qom/object.c: when initializing a QOM object, or looking up class_by_name,
              report module load errors.

qtest: when processing the "module_load" qtest command, report errors
       in the load of the module.

Signed-off-by: Claudio Fontana <cfontana@suse.de>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20220929093035.4231-4-cfontana@suse.de>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2 years ago
..
alsaaudio.c alsaaudio: reduce playback latency 2 years ago
audio.c module: add Error arguments to module_load and module_load_qom 2 years ago
audio.h audio: add help option for -audio and -audiodev 2 years ago
audio_int.h audio: swap audio_rate_get_bytes() function parameters 2 years ago
audio_legacy.c Use g_new() & friends where that makes obvious sense 3 years ago
audio_template.h audio: fix sw->buf size for audio recording 2 years ago
audio_win_int.c Remove qemu-common.h include from most units 3 years ago
audio_win_int.h Windows Waveform Audio driver (no ADC support yet) 15 years ago
coreaudio.m Replace GCC_FMT_ATTR with G_GNUC_PRINTF 3 years ago
dbusaudio.c audio: swap audio_rate_get_bytes() function parameters 2 years ago
dsound_template.h dsoundaudio: replace GetForegroundWindow() 4 years ago
dsoundaudio.c Replace GCC_FMT_ATTR with G_GNUC_PRINTF 3 years ago
jackaudio.c Use g_new() & friends where that makes obvious sense 3 years ago
meson.build audio: Add sndio backend 2 years ago
mixeng.c audio/mixeng: Do not declare unused variables 3 years ago
mixeng.h audio: proper support for float samples in mixeng 5 years ago
mixeng_template.h audio: fix saturation nonlinearity in clip_* functions 5 years ago
noaudio.c audio: swap audio_rate_get_bytes() function parameters 2 years ago
ossaudio.c Replace GCC_FMT_ATTR with G_GNUC_PRINTF 3 years ago
paaudio.c Replace GCC_FMT_ATTR with G_GNUC_PRINTF 3 years ago
rate_template.h audio: prevent an integer overflow in resampling code 2 years ago
sdlaudio.c Replace GCC_FMT_ATTR with G_GNUC_PRINTF 3 years ago
sndioaudio.c audio: Add sndio backend 2 years ago
spiceaudio.c audio: swap audio_rate_get_bytes() function parameters 2 years ago
trace-events audio: add "dbus" audio backend 3 years ago
trace.h trace: switch position of headers to what Meson requires 4 years ago
wavaudio.c audio: swap audio_rate_get_bytes() function parameters 2 years ago
wavcapture.c monitor: Use getter/setter functions for cur_mon 4 years ago