[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 2/3] qobject: assume base of a qobject is at off
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH 2/3] qobject: assume base of a qobject is at offset 0 |
Date: |
Wed, 21 Mar 2018 15:01:39 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 |
On 21/03/2018 14:40, Marc-André Lureau wrote:
> +/* A typecast, checking for the type of arguments */
> +/* QObject is at offset 0, for all QObject-derived types */
> +#define QOBJECT(x) QEMU_GENERIC(x, \
> + (QNull *, (QObject *) x), \
> + (const QNull *, (const QObject *) x), \
> + (QNum *, (QObject *) x), \
> + (const QNum *, (const QObject *) x), \
> + (QString *, (QObject *) x), \
> + (const QString *, (const QObject *) x), \
> + (QDict *, (QObject *) x), \
> + (const QDict *, (const QObject *) x), \
> + (QList *, (QObject *) x), \
> + (const QList *, (const QObject *) x), \
> + (QBool *, (QObject *) x), \
> + (const QBool *, (const QObject *) x), \
> + (QObject *, x), \
> + (const QObject *, x), \
> + qobject_unknown_type(x))
Why not just
QEMU_GENERIC(x,
(QObject *, x),
(const QObject *, x),
({ \
QEMU_BUILD_BUG_ON(offsetof(typeof(*x), base));
&(x)->base;
}))
That is just an extension of what was being done before, and it is
resilient against people putting a random "QObject base" in the middle
of a struct.
Paolo
- [Qemu-devel] [PATCH 0/3] RFC: simplify qobject refcount, Marc-André Lureau, 2018/03/21
- [Qemu-devel] [PATCH 1/3] compiler: extend QEMU_GENERIC to handle more arguments, Marc-André Lureau, 2018/03/21
- [Qemu-devel] [PATCH 2/3] qobject: assume base of a qobject is at offset 0, Marc-André Lureau, 2018/03/21
- Re: [Qemu-devel] [PATCH 2/3] qobject: assume base of a qobject is at offset 0, Eric Blake, 2018/03/21
- Re: [Qemu-devel] [PATCH 2/3] qobject: assume base of a qobject is at offset 0,
Paolo Bonzini <=
- Re: [Qemu-devel] [PATCH 2/3] qobject: assume base of a qobject is at offset 0, Marc-André Lureau, 2018/03/21
- Re: [Qemu-devel] [PATCH 2/3] qobject: assume base of a qobject is at offset 0, Eric Blake, 2018/03/21
- Re: [Qemu-devel] [PATCH 2/3] qobject: assume base of a qobject is at offset 0, Marc-André Lureau, 2018/03/21
- Re: [Qemu-devel] [PATCH 2/3] qobject: assume base of a qobject is at offset 0, Paolo Bonzini, 2018/03/21
- Re: [Qemu-devel] [PATCH 2/3] qobject: assume base of a qobject is at offset 0, Eric Blake, 2018/03/21
- Re: [Qemu-devel] [PATCH 2/3] qobject: assume base of a qobject is at offset 0, Paolo Bonzini, 2018/03/21
- Re: [Qemu-devel] [PATCH 2/3] qobject: assume base of a qobject is at offset 0, Marc-André Lureau, 2018/03/21
- Re: [Qemu-devel] [PATCH 2/3] qobject: assume base of a qobject is at offset 0, Paolo Bonzini, 2018/03/21
- Re: [Qemu-devel] [PATCH 2/3] qobject: assume base of a qobject is at offset 0, Marc-André Lureau, 2018/03/21
- Re: [Qemu-devel] [PATCH 2/3] qobject: assume base of a qobject is at offset 0, Paolo Bonzini, 2018/03/21