[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH 2/3] block-backend: Remember if attached device
From: |
Eric Blake |
Subject: |
Re: [Qemu-block] [PATCH 2/3] block-backend: Remember if attached device is non-qdev |
Date: |
Wed, 5 Oct 2016 14:11:36 -0500 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0 |
On 10/05/2016 01:01 PM, Max Reitz wrote:
>> +static int blk_do_attach_dev(BlockBackend *blk, void *dev)
>> + */
>> +int blk_attach_dev(BlockBackend *blk, DeviceState *dev)
>> +{
>> + return blk_do_attach_dev(blk, dev);
>> +void blk_attach_dev_legacy(BlockBackend *blk, void *dev)
>> {
>> if (blk_attach_dev(blk, dev) < 0) {
>
> I'd make this a blk_do_attach_dev(), but it's not syntactically wrong,
> so the choice is up to you.
It's technically undefined C behavior to cast from void* to an unrelated
pointer and back to void* (you are only guaranteed a round trip from
type to void* and back to original type, not with unrelated types). So
syntactically valid but semantically undefined.
On the other hand, ABI-wise, I'd be shocked if our compilers are able to
exploit our use of undefined behavior.
At any rate, using blk_do_attach_dev() would avoid the definedness
problem, so I'd go ahead and make the change.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature