On Sun, Feb 13, 2011 at 7:30 PM, David Ahern <dsah...@gmail.com> wrote: > > > On 02/12/11 15:40, Blue Swirl wrote: >> Ignore failure with parallel device creation. >> >> Signed-off-by: Blue Swirl <blauwir...@gmail.com> >> --- >> hw/pc.h | 5 ++++- >> 1 files changed, 4 insertions(+), 1 deletions(-) >> >> diff --git a/hw/pc.h b/hw/pc.h >> index 443ba34..f823b7d 100644 >> --- a/hw/pc.h >> +++ b/hw/pc.h >> @@ -24,7 +24,10 @@ static inline bool parallel_init(int index, >> CharDriverState *chr) >> { >> ISADevice *dev; >> >> - dev = isa_create("isa-parallel"); >> + dev = isa_try_create("isa-parallel"); >> + if (!dev) { >> + return false; >> + } >> qdev_prop_set_uint32(&dev->qdev, "index", index); >> qdev_prop_set_chr(&dev->qdev, "chardev", chr); >> if (qdev_init(&dev->qdev) < 0) { > > > How is this design supposed to be better than wrapping init functions in > #ifdef CONFIG_XXXX ... #endif?
We avoid the #ifdeffery and the device model is not violated. Most of the code is not affected in any way by leaving the device out. > If a hardware model is compiled out via the CONFIG options qemu should > fail to accept the command line parameters and not try to create the > device. Instead with this design it tries and fails to create the device > and yet continues on. Maybe command line parameter handling should be pushed to the devices. The devices should pull their parameters, removing them thus from a parameter pool. After the machine init finishes, errors could be reported for unhandled parameters.