Thanks for the succinct explanation :)
For anyone who needs to debug PPS issues later, we were combining the two concepts (kernel- vs user-space) and (unprivileged/user vs privileged/root permissions) because:
1. Running gpsd with privileged permissions will access the kernel-space PPS mechanism
2. Running gpsd with only normal (unprivileged) permissions may only access the user-space PPS mechanism (i.e. ioctl)
I don't understand all the ins and outs of the two PPS methods, but that's why it can be easier to just combine the parallel concepts.
That first article talks about implementing RFC 2783, but only for GPIO lines, not serial ports. Apparently Kernel-space PPS _also_ applies to the usual serial port situation, but I couldn't find any documentation / discussion of that.
The ioctl mechanism is just a callback handler from a system call when a specific hardware line changes state? So how is that different from the KPPS version?
p.s. All my experience with the above are on Ubuntu / Linux systems. YMMV.
p.p.s. I've figured out my gpsd-chrony deployment -- this discussion is purely for curiosity / understanding at this point.
Daniel Williams | Software Engineer