Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Aug 2019 08:32:15 -0600
From:      Warner Losh <imp@bsdimp.com>
To:        Ian Lepore <ian@freebsd.org>
Cc:        "O'Connor, Daniel" <darius@dons.net.au>, "usb@freebsd.org" <usb@freebsd.org>,  "freebsd-arm@FreeBSD.org" <freebsd-arm@freebsd.org>
Subject:   Re: Is it a good idea to use a usb-serial adapter for PPS input? Yes,  it is.
Message-ID:  <CANCZdfoVJ2ryUr%2B1uh9iCHKLWZO3MONAB9xv3MpWpzYqhycEyw@mail.gmail.com>
In-Reply-To: <fc1ef92211cfc9aeff3b4bd4335d69ceda5e5223.camel@freebsd.org>
References:  <f1d765814f722fb2c99c9870b3cc2607b4eca2d7.camel@freebsd.org> <B9EFA4D4-C1AD-4181-B421-F6BD53434FA5@dons.net.au> <bfd784f6ac9c939dbe6a243336bc3b6eab02d4f5.camel@freebsd.org> <61B1AAF3-40F6-47BC-8F05-7491C13BF288@dons.net.au> <9E142F1A-5E8C-4410-91F5-7C80B3D0A15B@dons.net.au> <fc1ef92211cfc9aeff3b4bd4335d69ceda5e5223.camel@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Aug 19, 2019 at 8:26 AM Ian Lepore <ian@freebsd.org> wrote:

> On Mon, 2019-08-19 at 17:09 +0930, O'Connor, Daniel wrote:
> > > On 12 Aug 2019, at 09:09, O'Connor, Daniel <darius@dons.net.au>
> > > wrote:
> > > > always get lost on single-core processors which are in cpu_idle()
> > > > at
> > > > the time the hardclock interrupt happens.  (But that's fixable by
> > > > just
> > > > increasing the number of timehands, I think at least 4 are
> > > > required.)
> > >
> > > OK, how do I increase the number of clock hands?
> >
> > I am going to try this diff but buildkernel is going to take a
> > while...
> >
> > diff --git a/sys/kern/kern_tc.c b/sys/kern/kern_tc.c
> > index 2656fb4d2..00440b6a2 100644
> > --- a/sys/kern/kern_tc.c
> > +++ b/sys/kern/kern_tc.c
> > @@ -83,8 +83,48 @@ struct timehands {
> >       struct timehands        *th_next;
> >  };
> >
> > -static struct timehands th0;
> > +static struct timehands th2;
> >  static struct timehands th1 = {
> > +     .th_next = &th2
> > +};
> > +
> > +static struct timehands th3;
> > +static struct timehands th2 = {
> > +     .th_next = &th3
> > +};
> > +
> > +static struct timehands th4;
> > +static struct timehands th3 = {
> > +     .th_next = &th4
> > +};
> > +
> > +static struct timehands th5;
> > +static struct timehands th4 = {
> > +     .th_next = &th5
> > +};
> > +
> > +static struct timehands th6;
> > +static struct timehands th5 = {
> > +     .th_next = &th6
> > +};
> > +
> > +static struct timehands th7;
> > +static struct timehands th6 = {
> > +     .th_next = &th7
> > +};
> > +
> > +static struct timehands th8;
> > +static struct timehands th7 = {
> > +     .th_next = &th8
> > +};
> > +
> > +static struct timehands th9;
> > +static struct timehands th8 = {
> > +     .th_next = &th9
> > +};
> > +
> > +static struct timehands th0;
> > +static struct timehands th9 = {
> >       .th_next = &th0
> >  };
> >  static struct timehands th0 = {
> >
>
> Oh, I'm sorry, I forgot to respond about this.  Yeah, that patch would
> do it.  I think a minimum of 4 sets of timehands are needed for pps
> capture on a single-core system with a latching timecounter like
> dmtpps.
>

Do we have a good (or even a bad) writeup of how to know that 4 is good, or
when 5 or 6 might be needed?

Warner



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANCZdfoVJ2ryUr%2B1uh9iCHKLWZO3MONAB9xv3MpWpzYqhycEyw>