Message ID | AANLkTimVWX+4CYiqrpOQOMwH+SnUHPgbXHDGgQByg6r9@mail.gmail.com |
---|---|
State | New |
Headers | show |
On 02/12/11 15:40, Blue Swirl wrote: > Ignore failure with parallel device creation. > > Signed-off-by: Blue Swirl <blauwirbel@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? 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. David
On Sun, Feb 13, 2011 at 7:30 PM, David Ahern <dsahern@gmail.com> wrote: > > > On 02/12/11 15:40, Blue Swirl wrote: >> Ignore failure with parallel device creation. >> >> Signed-off-by: Blue Swirl <blauwirbel@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.
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);
Ignore failure with parallel device creation. Signed-off-by: Blue Swirl <blauwirbel@gmail.com> --- hw/pc.h | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) if (qdev_init(&dev->qdev) < 0) {