I'm undecided if it's better to use our own timespec struct. It's (at least in theory) possible for compiler flags to change `sizeof(struct timespec)`.