<div dir="ltr">Sorry to be dense, but given commit c870c7a; the timespec struct will be 16 bytes in size, regardless of the arch? 32/64bit x86 and 32/64bit ARM?<div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Apr 22, 2019 at 2:15 PM Tharre <<a href="mailto:tharre3@gmail.com">tharre3@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 04/18, Matt Layher wrote:<br>
> My C experience is very limited, and I have no experience working on C<br>
> within the kernel, but is exposing a "__kernel*" type to userspace a normal<br>
> procedure? I would have expected to see a regular timespec from<br>
> linux/time.h, or perhaps a timespec64 in its place.<br>
<br>
There is no timespec64 defined anywhere in include/linux, and it can't<br>
be a normal timespec because of the Year 2038 problem. And despite it's<br>
prefix, __kernel_timespec is defined in include/linux/time.h.<br>
<br>
> I can do some slightly more intelligent checking to fix the current issue<br>
> with my library, but I wanted to check in and confirm that this API contract<br>
> is correct.<br>
<br>
The change from struct timespec to struct __kernel_timespec happened in<br>
commit c870c7a[0] so I'm guessing it's intentional.<br>
<br>
Hope that helps.<br>
<br>
[0] <a href="http://git.zx2c4.com/WireGuard/commit/?id=c870c7a" rel="noreferrer" target="_blank">http://git.zx2c4.com/WireGuard/commit/?id=c870c7a</a><br>
<br>
-- <br>
PGP fingerprint: 42CE 7698 D6A0 6129 AA16  EF5C 5431 BDE2 C8F0 B2F4<br>
_______________________________________________<br>
WireGuard mailing list<br>
<a href="mailto:WireGuard@lists.zx2c4.com" target="_blank">WireGuard@lists.zx2c4.com</a><br>
<a href="https://lists.zx2c4.com/mailman/listinfo/wireguard" rel="noreferrer" target="_blank">https://lists.zx2c4.com/mailman/listinfo/wireguard</a><br>
</blockquote></div>