Thanks, I noticed a few errors due to your post. The first one was that the call to read(2) expects an 8 byte buffer. The second is that I think BaseUnix declares types improperly for x86_64 system libraries. I had to make more types 64 bit (csize and cssize). The third is, after quite a bit of testing, the swapping of it_value and it_interval in the TIntervalTimerSpecification structure. How do I fix that?
It seems they appear in the reverse order they are specified. I can just switch them, but I would like something more explanatory in the code. The packrecords directive doesn't solve the problem.