• M
    qdev: Convert uses of qdev_create() with Coccinelle · 3e80f690
    Markus Armbruster 提交于
    This is the transformation explained in the commit before previous.
    Takes care of just one pattern that needs conversion.  More to come in
    this series.
    
    Coccinelle script:
    
        @ depends on !(file in "hw/arm/highbank.c")@
        expression bus, type_name, dev, expr;
        @@
        -    dev = qdev_create(bus, type_name);
        +    dev = qdev_new(type_name);
             ... when != dev = expr
        -    qdev_init_nofail(dev);
        +    qdev_realize_and_unref(dev, bus, &error_fatal);
    
        @@
        expression bus, type_name, dev, expr;
        identifier DOWN;
        @@
        -    dev = DOWN(qdev_create(bus, type_name));
        +    dev = DOWN(qdev_new(type_name));
             ... when != dev = expr
        -    qdev_init_nofail(DEVICE(dev));
        +    qdev_realize_and_unref(DEVICE(dev), bus, &error_fatal);
    
        @@
        expression bus, type_name, expr;
        identifier dev;
        @@
        -    DeviceState *dev = qdev_create(bus, type_name);
        +    DeviceState *dev = qdev_new(type_name);
             ... when != dev = expr
        -    qdev_init_nofail(dev);
        +    qdev_realize_and_unref(dev, bus, &error_fatal);
    
        @@
        expression bus, type_name, dev, expr, errp;
        symbol true;
        @@
        -    dev = qdev_create(bus, type_name);
        +    dev = qdev_new(type_name);
             ... when != dev = expr
        -    object_property_set_bool(OBJECT(dev), true, "realized", errp);
        +    qdev_realize_and_unref(dev, bus, errp);
    
        @@
        expression bus, type_name, expr, errp;
        identifier dev;
        symbol true;
        @@
        -    DeviceState *dev = qdev_create(bus, type_name);
        +    DeviceState *dev = qdev_new(type_name);
             ... when != dev = expr
        -    object_property_set_bool(OBJECT(dev), true, "realized", errp);
        +    qdev_realize_and_unref(dev, bus, errp);
    
    The first rule exempts hw/arm/highbank.c, because it matches along two
    control flow paths there, with different @type_name.  Covered by the
    next commit's manual conversions.
    
    Missing #include "qapi/error.h" added manually.
    Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
    Reviewed-by: NPaolo Bonzini <pbonzini@redhat.com>
    Message-Id: <20200610053247.1583243-10-armbru@redhat.com>
    [Conflicts in hw/misc/empty_slot.c and hw/sparc/leon3.c resolved]
    3e80f690
pc_q35.c 19.1 KB