On Tue, 12 Nov 2019 21:04:10 +0100,
Arnd Bergmann wrote:
> 
> On Tue, Nov 12, 2019 at 5:38 PM Takashi Iwai <ti...@suse.de> wrote:
> > On Tue, 12 Nov 2019 16:16:39 +0100, Arnd Bergmann wrote:
> > > +#ifndef __KERNEL__
> > >  struct snd_rawmidi_status {
> > >       int stream;
> > > +     unsigned char pad1[sizeof(time_t) - sizeof(int)];
> > >       struct timespec tstamp;         /* Timestamp */
> > >       size_t avail;                   /* available bytes */
> > >       size_t xruns;                   /* count of overruns since last 
> > > status (in bytes) */
> > >       unsigned char reserved[16];     /* reserved for future use */
> > >  };
> >
> > Can we use union instead of padding?  Something like:
> >
> > struct snd_rawmidi_status {
> >         union {
> >                 int stream;
> >                 time_t stream_alignment;
> >         };
> >         struct timespec tstamp;         /* Timestamp */
> >         ....
> 
> I think this would work most of the time, though I don't feel this is more
> readable than the other version.
> 
> More importantly, it requires compiling user applications with GNU extensions
> (--std=gnu89 or higher) or C11, but not C99, so this could be a problem
> for some applications.

OK, fair enough.

> If you feel there is a problem with the padding syntax, how about enclosing
> it in a typedef like:
> 
> typedef struct { char pad[sizeof(time_t) - sizeof(int)]; } __time_pad;
> 
> This typedef could be used in several structures from the other patches
> as well.

Yes, that improves the readability.


thanks,

Takashi
_______________________________________________
Y2038 mailing list
Y2038@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/y2038

Reply via email to