Convert CCID Device to realize and rename the ccid_card_init()
to ccid_card_realize().
Cc: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Mao Zhongyi <maozy.fnst@cn.fujitsu.com>
---
hw/usb/dev-smartcard-reader.c | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/hw/usb/dev-smartcard-reader.c b/hw/usb/dev-smartcard-reader.c
index bef1f03..27cd48d 100644
--- a/hw/usb/dev-smartcard-reader.c
+++ b/hw/usb/dev-smartcard-reader.c
@@ -1306,27 +1306,25 @@ static int ccid_card_exit(DeviceState *qdev)
return 0;
}
-static int ccid_card_init(DeviceState *qdev)
+static void ccid_card_realize(DeviceState *qdev, Error **errp)
{
CCIDCardState *card = CCID_CARD(qdev);
USBDevice *dev = USB_DEVICE(qdev->parent_bus->parent);
USBCCIDState *s = USB_CCID_DEV(dev);
- int ret = 0;
if (card->slot != 0) {
- warn_report("usb-ccid supports one slot, can't add %d",
+ error_setg(errp, "usb-ccid supports one slot, can't add %d",
card->slot);
- return -1;
+ return;
}
if (s->card != NULL) {
- warn_report("usb-ccid card already full, not adding");
- return -1;
+ error_setg(errp, "usb-ccid card already full, not adding");
+ return;
}
- ret = ccid_card_initfn(card);
- if (ret == 0) {
+
+ if (!ccid_card_initfn(card)) {
s->card = card;
}
- return ret;
}
static void ccid_realize(USBDevice *dev, Error **errp)
@@ -1496,7 +1494,7 @@ static void ccid_card_class_init(ObjectClass *klass, void *data)
{
DeviceClass *k = DEVICE_CLASS(klass);
k->bus_type = TYPE_CCID_BUS;
- k->init = ccid_card_init;
+ k->realize = ccid_card_realize;
k->exit = ccid_card_exit;
k->props = ccid_props;
}
--
2.9.4
Hi
On Sat, Sep 9, 2017 at 10:33 AM Mao Zhongyi <maozy.fnst@cn.fujitsu.com>
wrote:
> Convert CCID Device to realize and rename the ccid_card_init()
> to ccid_card_realize().
>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Signed-off-by: Mao Zhongyi <maozy.fnst@cn.fujitsu.com>
> ---
> hw/usb/dev-smartcard-reader.c | 18 ++++++++----------
> 1 file changed, 8 insertions(+), 10 deletions(-)
>
> diff --git a/hw/usb/dev-smartcard-reader.c b/hw/usb/dev-smartcard-reader.c
> index bef1f03..27cd48d 100644
> --- a/hw/usb/dev-smartcard-reader.c
> +++ b/hw/usb/dev-smartcard-reader.c
> @@ -1306,27 +1306,25 @@ static int ccid_card_exit(DeviceState *qdev)
> return 0;
> }
>
> -static int ccid_card_init(DeviceState *qdev)
> +static void ccid_card_realize(DeviceState *qdev, Error **errp)
> {
> CCIDCardState *card = CCID_CARD(qdev);
> USBDevice *dev = USB_DEVICE(qdev->parent_bus->parent);
> USBCCIDState *s = USB_CCID_DEV(dev);
> - int ret = 0;
>
> if (card->slot != 0) {
> - warn_report("usb-ccid supports one slot, can't add %d",
> + error_setg(errp, "usb-ccid supports one slot, can't add %d",
> card->slot);
> - return -1;
> + return;
> }
> if (s->card != NULL) {
> - warn_report("usb-ccid card already full, not adding");
> - return -1;
> + error_setg(errp, "usb-ccid card already full, not adding");
> + return;
> }
> - ret = ccid_card_initfn(card);
> - if (ret == 0) {
> +
> + if (!ccid_card_initfn(card)) {
> s->card = card;
> }
>
You should set an error here, or the caller won't be aware of card init
error anymore. Best would be to convert ccid_card_initfn() and callbacks to
take an Error **.
- return ret;
> }
>
> static void ccid_realize(USBDevice *dev, Error **errp)
> @@ -1496,7 +1494,7 @@ static void ccid_card_class_init(ObjectClass *klass,
> void *data)
> {
> DeviceClass *k = DEVICE_CLASS(klass);
> k->bus_type = TYPE_CCID_BUS;
> - k->init = ccid_card_init;
> + k->realize = ccid_card_realize;
> k->exit = ccid_card_exit;
> k->props = ccid_props;
> }
> --
> 2.9.4
>
>
>
>
> --
Marc-André Lureau
On 09/09/2017 05:20 PM, Marc-André Lureau wrote:
> Hi
>
> On Sat, Sep 9, 2017 at 10:33 AM Mao Zhongyi <maozy.fnst@cn.fujitsu.com <mailto:maozy.fnst@cn.fujitsu.com>> wrote:
>
> Convert CCID Device to realize and rename the ccid_card_init()
> to ccid_card_realize().
>
> Cc: Gerd Hoffmann <kraxel@redhat.com <mailto:kraxel@redhat.com>>
> Signed-off-by: Mao Zhongyi <maozy.fnst@cn.fujitsu.com <mailto:maozy.fnst@cn.fujitsu.com>>
> ---
> hw/usb/dev-smartcard-reader.c | 18 ++++++++----------
> 1 file changed, 8 insertions(+), 10 deletions(-)
>
> diff --git a/hw/usb/dev-smartcard-reader.c b/hw/usb/dev-smartcard-reader.c
> index bef1f03..27cd48d 100644
> --- a/hw/usb/dev-smartcard-reader.c
> +++ b/hw/usb/dev-smartcard-reader.c
> @@ -1306,27 +1306,25 @@ static int ccid_card_exit(DeviceState *qdev)
> return 0;
> }
>
> -static int ccid_card_init(DeviceState *qdev)
> +static void ccid_card_realize(DeviceState *qdev, Error **errp)
> {
> CCIDCardState *card = CCID_CARD(qdev);
> USBDevice *dev = USB_DEVICE(qdev->parent_bus->parent);
> USBCCIDState *s = USB_CCID_DEV(dev);
> - int ret = 0;
>
> if (card->slot != 0) {
> - warn_report("usb-ccid supports one slot, can't add %d",
> + error_setg(errp, "usb-ccid supports one slot, can't add %d",
> card->slot);
> - return -1;
> + return;
> }
> if (s->card != NULL) {
> - warn_report("usb-ccid card already full, not adding");
> - return -1;
> + error_setg(errp, "usb-ccid card already full, not adding");
> + return;
> }
> - ret = ccid_card_initfn(card);
> - if (ret == 0) {
> +
> + if (!ccid_card_initfn(card)) {
> s->card = card;
> }
>
>
> You should set an error here, or the caller won't be aware of card init error anymore. Best would be to convert ccid_card_initfn() and callbacks to take an Error **.
Thanks for the info, I will.
--
Mao
>
> - return ret;
> }
>
> static void ccid_realize(USBDevice *dev, Error **errp)
> @@ -1496,7 +1494,7 @@ static void ccid_card_class_init(ObjectClass *klass, void *data)
> {
> DeviceClass *k = DEVICE_CLASS(klass);
> k->bus_type = TYPE_CCID_BUS;
> - k->init = ccid_card_init;
> + k->realize = ccid_card_realize;
> k->exit = ccid_card_exit;
> k->props = ccid_props;
> }
> --
> 2.9.4
>
>
>
>
> --
> Marc-André Lureau
© 2016 - 2025 Red Hat, Inc.