<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p><br>
    </p>
    <p>Gentlemen,</p>
    <p><br>
    </p>
    <p>    A thought from out of left field here -</p>
    <p>    Would it be possible to simplify the code by using a tool to
      partially pre-process the code (e.g. CPPP
      (<a class="moz-txt-link-freetext" href="http://www.muppetlabs.com/~breadbox/software/cppp.html">http://www.muppetlabs.com/~breadbox/software/cppp.html</a>)),
      defining in turn HAVE_KERNEL_PPS and HAVE_PPSAPI, and then
      comparing the resultant "versions"?</p>
    <p>    This _might_ give you the ability to see the 'shape' of the
      code under the various assumptions about supported kernel
      features, etc.</p>
    <p><br>
    </p>
    <p><br>
    </p>
    <p>  - <font color="#000099"><b><font face="Brush Script MT"
            size="+3">John D. Bell</font></b></font></p>
    <br>
    <div class="moz-cite-prefix">On 12/03/2017 05:17 PM, Eric S. Raymond
      via devel wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:20171203221740.GA15123@thyrsus.com">
      <pre wrap="">Hal Murray <a class="moz-txt-link-rfc2396E" href="mailto:hmurray@megapathdsl.net"><hmurray@megapathdsl.net></a>:
</pre>
      <blockquote type="cite">
        <pre wrap="">
<a class="moz-txt-link-abbreviated" href="mailto:esr@thyrsus.com">esr@thyrsus.com</a> said:
</pre>
        <blockquote type="cite">
          <pre wrap="">I'm aware.  There's a separate HAVE_KERNEL_PPS that conditionalizes the code
for the second case. 
</pre>
        </blockquote>
        <pre wrap="">
I can't find any references to HAVE_KERNEL_PPS
I assume you mean HAVE_PPSAPI which is only referenced by refclocks
</pre>
      </blockquote>
      <pre wrap="">
You're right.

</pre>
      <blockquote type="cite">
        <pre wrap="">I screwed up.  There are actually 3 things tangled up here.

First: capture pulse timing info.
Second: adjust "drift" on system clock
Third: in kernel PLL to adjust drift from PPS pulses

You can't implement the PLL unless you have a drift to adjust and a way to 
capture timing info from PPS pulses.

A lot of what HAVE_KERNEL_PLL was doing was related to the second rather than 
the third.
</pre>
      </blockquote>
      <pre wrap="">
Yes, I got that.

One of the things that makes this whole area hard to understand is
that the separation (if any) among these three functions you've
described is pretty much entirely undocumented.  Nor are they clearly
distinguished from a fourth predicate, which is whether ntp_adjtime()
is present.  I have trouble keeping track of all the balls in the air.

It *is* clear enough that ntp_adjtime() is a prerequisite for any of the
above three things to go on.
</pre>
    </blockquote>
    <br>
  </body>
</html>