Re: Missing include file in include/uapi/linux/errqueue.h?

From: Brooks Moses
Date: Sun Jul 10 2016 - 01:44:13 EST


On Sat, Jul 9, 2016 at 10:36 AM, Brooks Moses <bmoses@xxxxxxxxxx> wrote:
> I've been attempting to qualify the Linux 4.5.2 user-space headers for
> a toolchain release, and ran into what looks like a missing include
> file in include/uapi/linux/errqueue.h. In particular,
> https://github.com/torvalds/linux/commit/f24b9be5957b38bb420b838115040dc2031b7d0c
> adds the following to this file:
>
> +struct scm_timestamping {
> + struct timespec ts[3];
> +};
>
> However, struct timespec is defined in time.h, which isn't included
> either in 4.5.2 or in current head. Is this simply a missing #include
> line, or am I misunderstanding something?

As a followup: Unfortunately the obvious fix -- adding "#include
<linux/time.h>" -- causes other problems, since linux/time.h is
incompatible with the glibc time.h such that including both of them
into the same compilation unit causes errors about redefined types.
And we, at least, have some programs that want to include
linux/errqueue.h and (glibc's) time.h. The fix of adding "#include
<time.h>" to linux/errqueue.h seems to work for us, but I'm not sure
that won't cause problems in the other direction for other people.

- Brooks