diff --git a/include/nuttx/sched.h b/include/nuttx/sched.h index 00aafcb655..936845d633 100644 --- a/include/nuttx/sched.h +++ b/include/nuttx/sched.h @@ -700,7 +700,6 @@ struct tcb_s /* Pre-emption monitor support ************************************************/ #ifdef CONFIG_SCHED_CRITMONITOR - uint32_t crit_flags; /* Flag values used by the monitor */ uint32_t premp_start; /* Time when preemption disabled */ uint32_t premp_max; /* Max time preemption disabled */ uint32_t crit_start; /* Time critical section entered */ diff --git a/sched/sched/sched_critmonitor.c b/sched/sched/sched_critmonitor.c index 1193427681..284689d3d1 100644 --- a/sched/sched/sched_critmonitor.c +++ b/sched/sched/sched_critmonitor.c @@ -43,24 +43,6 @@ #ifdef CONFIG_SCHED_CRITMONITOR -/**************************************************************************** - * Pre-processor Definitions - ****************************************************************************/ - -/* Flags used by the critical section monitor */ - -#define CRITMON_PREEMPT (1 << 0) /* Bit 0: Pre-emption is disabled */ -#define CRITMON_CSECTION (1 << 1) /* Bit 1: In a critical section */ - -#define DISABLE_PREEMPT(t) do { (t)->crit_flags |= CRITMON_PREEMPT; } while (0) -#define ENTER_CSECTION(t) do { (t)->crit_flags |= CRITMON_CSECTION; } while (0) - -#define ENABLE_PREEMPT(t) do { (t)->crit_flags &= ~CRITMON_PREEMPT; } while (0) -#define LEAVE_CSECTION(t) do { (t)->crit_flags &= ~CRITMON_CSECTION; } while (0) - -#define PREEMPT_ISDISABLED(t) (((t)->crit_flags & CRITMON_PREEMPT) != 0) -#define IN_CSECTION(t) (((t)->crit_flags & CRITMON_CSECTION) != 0) - /**************************************************************************** * External Function Prototypes ****************************************************************************/ @@ -131,7 +113,7 @@ void sched_critmon_preemption(FAR struct tcb_s *tcb, bool state) if (state) { - DEBUGASSERT(tcb->premp_start == 0 && !PREEMPT_ISDISABLED(tcb)); + DEBUGASSERT(tcb->premp_start == 0); /* Disabling.. Save the thread start time */ @@ -141,8 +123,6 @@ void sched_critmon_preemption(FAR struct tcb_s *tcb, bool state) if (tcb->premp_start != 0) { - DISABLE_PREEMPT(tcb); - /* Save the global start time */ g_premp_start[cpu] = tcb->premp_start; @@ -155,7 +135,7 @@ void sched_critmon_preemption(FAR struct tcb_s *tcb, bool state) uint32_t now = up_critmon_gettime(); uint32_t elapsed = now - tcb->premp_start; - DEBUGASSERT(now != 0 && PREEMPT_ISDISABLED(tcb)); + DEBUGASSERT(now != 0); tcb->premp_start = 0; if (elapsed > tcb->premp_max) @@ -163,8 +143,6 @@ void sched_critmon_preemption(FAR struct tcb_s *tcb, bool state) tcb->premp_max = elapsed; } - ENABLE_PREEMPT(tcb); - /* Check for the global max elapsed time */ elapsed = now - g_premp_start[cpu]; @@ -205,8 +183,6 @@ void sched_critmon_csection(FAR struct tcb_s *tcb, bool state) if (tcb->crit_start != 0) { - ENTER_CSECTION(tcb); - /* Set the global start time */ g_crit_start[cpu] = tcb->crit_start; @@ -219,7 +195,7 @@ void sched_critmon_csection(FAR struct tcb_s *tcb, bool state) uint32_t now = up_critmon_gettime(); uint32_t elapsed = now - tcb->crit_start; - DEBUGASSERT(now != 0 && IN_CSECTION(tcb)); + DEBUGASSERT(now != 0); tcb->crit_start = 0; if (elapsed > tcb->crit_max) @@ -227,8 +203,6 @@ void sched_critmon_csection(FAR struct tcb_s *tcb, bool state) tcb->crit_max = elapsed; } - LEAVE_CSECTION(tcb); - /* Check for the global max elapsed time */ elapsed = now - g_crit_start[cpu]; @@ -262,7 +236,7 @@ void sched_critmon_resume(FAR struct tcb_s *tcb) /* Did this task disable pre-emption? */ - if (PREEMPT_ISDISABLED(tcb)) + if (tcb->lockcount > 0) { /* Yes.. Save the start time */ @@ -289,7 +263,7 @@ void sched_critmon_resume(FAR struct tcb_s *tcb) /* Was this task in a critical section? */ - if (IN_CSECTION(tcb)) + if (tcb->irqcount > 0) { /* Yes.. Save the start time */ @@ -333,7 +307,7 @@ void sched_critmon_suspend(FAR struct tcb_s *tcb) /* Did this task disable pre-emption? */ - if (PREEMPT_ISDISABLED(tcb)) + if (tcb->lockcount > 0) { /* Possibly re-enabling.. Check for the max elapsed time */ @@ -348,7 +322,7 @@ void sched_critmon_suspend(FAR struct tcb_s *tcb) /* Is this task in a critical section? */ - if (IN_CSECTION(tcb)) + if (tcb->irqcount > 0) { /* Possibly leaving .. Check for the max elapsed time */