From ea0b339bbcfee1636918375e55c67e9bc0916021 Mon Sep 17 00:00:00 2001 From: Hans Petter Selasky Date: Sat, 7 Mar 2015 18:23:32 +0000 Subject: timecounter: Merge FreeBSD change r279728 Add mutex support to the pps_ioctl() API in the kernel. Bump kernel version to reflect structure change. PR: 196897 MFC after: 1 week Update #3175. --- cpukit/score/include/sys/timepps.h | 5 +++++ cpukit/score/src/kern_tc.c | 14 +++----------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/cpukit/score/include/sys/timepps.h b/cpukit/score/include/sys/timepps.h index 71d74f54ee..85bb6813cf 100644 --- a/cpukit/score/include/sys/timepps.h +++ b/cpukit/score/include/sys/timepps.h @@ -133,6 +133,8 @@ struct pps_kcbind_args { #ifdef _KERNEL +struct mtx; + struct pps_state { /* Capture information. */ struct timehands *capth; @@ -140,6 +142,9 @@ struct pps_state { unsigned capgen; unsigned capcount; + /* pointer to mutex protecting this state, if any */ + struct mtx *mtx; + /* State information. */ pps_params_t ppsparam; pps_info_t ppsinfo; diff --git a/cpukit/score/src/kern_tc.c b/cpukit/score/src/kern_tc.c index 242983b464..5cdcafb717 100644 --- a/cpukit/score/src/kern_tc.c +++ b/cpukit/score/src/kern_tc.c @@ -51,7 +51,6 @@ __FBSDID("$FreeBSD r284178 2015-06-09T11:49:56Z$"); #include #include #include -#include #include #include #include @@ -1713,17 +1712,10 @@ pps_fetch(struct pps_fetch_args *fapi, struct pps_state *pps) cseq = pps->ppsinfo.clear_sequence; while (aseq == pps->ppsinfo.assert_sequence && cseq == pps->ppsinfo.clear_sequence) { - if (abi_aware(pps, 1) && pps->driver_mtx != NULL) { - if (pps->flags & PPSFLAG_MTX_SPIN) { - err = msleep_spin(pps, pps->driver_mtx, - "ppsfch", timo); - } else { - err = msleep(pps, pps->driver_mtx, PCATCH, - "ppsfch", timo); - } - } else { + if (pps->mtx != NULL) + err = msleep(pps, pps->mtx, PCATCH, "ppsfch", timo); + else err = tsleep(pps, PCATCH, "ppsfch", timo); - } if (err == EWOULDBLOCK && fapi->timeout.tv_sec == -1) { continue; } else if (err != 0) { -- cgit v1.2.3