Re: pps_capture() and pps_fetch()

From: Sebastian Huber <sebastian.huber_at_embedded-brains.de>
Date: Wed, 01 Jun 2022 11:03:19 UTC
Hello Poul-Henning,

On 01/06/2022 09:25, Poul-Henning Kamp wrote:
> Sebastian Huber writes:
> 
>> I try to understand how the PPS synchronization works in FreeBSD. It
>> seems that pps_capture() starts a transaction and pps_event() completes
>> the transaction if nothing interfered in the meantime.
> The answer to most of your questions are in ./i386/i386/elan-mmcr.c
> 
> The PPS capture in the Soekris 4501 used two hardware counters, counting at the same rate.
> 
> The first of the two were the timecounter, the other was started by the hardware signal.
> 
> Sometime later the hardware signals interrupt processing would happen.
> 
> By reading read both counters as close to instantaneously as possible, and compensated for the interrupt latency by subtracting the event-started counter from the timecounter.
> 
> (See also:http://phk.freebsd.dk/soekris/pps/)

thanks for the background information.

What I don't understand is why the th_generation is checked three times 
(pps_capture(): 1, pps_event(): 2) and not only once in pps_event() 
right before we use the captured time.

-- 
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.huber@embedded-brains.de
phone: +49-89-18 94 741 - 16
fax:   +49-89-18 94 741 - 08

Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/