|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 03/11] public: xen.h: add definitions for UUID handling
>>> On 30.08.17 at 18:20, <volodymyr_babchuk@xxxxxxxx> wrote:
> My first intention was to declare union with all possible
> representations, so it would be possible to access the same UUID as an
> array of bytes or, for example, as Microsoft GUID. Like this:
>
> typedef union {
> /* UUID represented as a 128-bit object */
> uint8_t obj[16];
>
> /* Representation according to RFC 4122 */
> struct {
> __be32 time_low;
> __be16 time_mid;
> __be16 time_hi_and_version;
> __u8 clock_seq_hi_and_reserved;
> __u8 clock_seq_low;
> __u8 node[6];
> } rfc4122;
>
> /* Microsoft/Intel style GUID representation */
> struct {
> __le32 Data1;
> __le16 Data2;
> __le16 Data3;
> __u8 Data4[8];
> } guid;
>
> /* SMCCC compatible format */
> struct {
> __le32 r0;
> __le32 r1;
> __le32 r2;
> __le32 r3;
> } smccc;
> } xen_uuid_t;
>
>
> But looks like we can't use something like __packed or
> __attribute__((__packed__)) in the public header. This means that we
> can't rely on right overlapping and users of this union should take care
> to read and write only to one chosen substructure.
I don't see any use of that attribute in the structure definition
above, nor any need to add one - all fields are suitably aligned
anyway. You can't use __be* and __le* types in the public
headers, though - these will need to be uint*_t.
> BTW, I'm very interested how it can be guaranteed that structures
> defined in xen.h will have the same size and alignment on both sides of
> communication channel, taking into account, then we rely only on C89
> standard.
I don't understand this comment.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |