diff options
author | Ian Lepore <ian@FreeBSD.org> | 2015-08-07 23:31:31 +0000 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-10-12 07:04:10 +0200 |
commit | 749468112b29b70f4c08ef4de133dfad2194b7a2 (patch) | |
tree | 8bd70dc80311c711df5c3643b52d6429265f9eaf /cpukit/score | |
parent | timecounter: Merge FreeBSD change r286423 (diff) | |
download | rtems-749468112b29b70f4c08ef4de133dfad2194b7a2.tar.bz2 |
timecounter: Merge FreeBSD change r286429
Only process the PPS event types currently enabled in pps_params.mode.
This makes the PPS API behave correctly, but isn't ideal -- we still end
up capturing PPS data for non-enabled edges, we just don't process the
data into an event that becomes visible outside of kern_tc. That's because
the event type isn't passed to pps_capture(), so it can't do the filtering.
Any solution for capture filtering is going to require touching every driver.
Update #3175.
Diffstat (limited to 'cpukit/score')
-rw-r--r-- | cpukit/score/src/kern_tc.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/cpukit/score/src/kern_tc.c b/cpukit/score/src/kern_tc.c index a789107528..bb8a3f110d 100644 --- a/cpukit/score/src/kern_tc.c +++ b/cpukit/score/src/kern_tc.c @@ -1902,6 +1902,9 @@ pps_event(struct pps_state *pps, int event) #endif KASSERT(pps != NULL, ("NULL pps pointer in pps_event")); + /* Nothing to do if not currently set to capture this event type. */ + if ((event & pps->ppsparam.mode) == 0) + return; /* If the timecounter was wound up underneath us, bail out. */ if (pps->capgen == 0 || pps->capgen != atomic_load_acq_int(&pps->capth->th_generation)) |