[rtems commit] score: Check thread resource count in timer server
Sebastian Huber
sebh at rtems.org
Thu Nov 16 06:45:43 UTC 2017
Module: rtems
Branch: master
Commit: 888da71502d43b562829d2387b2a5dfce7bb35e4
Changeset: http://git.rtems.org/rtems/commit/?id=888da71502d43b562829d2387b2a5dfce7bb35e4
Author: Sebastian Huber <sebastian.huber at embedded-brains.de>
Date: Thu Nov 16 07:17:05 2017 +0100
score: Check thread resource count in timer server
The watchdog routines invoked by the timer server may use mutexes for
synchronization. Ensure that the resource count of the timer server is
zero after each watchdog routine invocation. This helps to detect
broken watchdog routines.
---
cpukit/rtems/src/timerserver.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/cpukit/rtems/src/timerserver.c b/cpukit/rtems/src/timerserver.c
index dfdba8c..894d50e 100644
--- a/cpukit/rtems/src/timerserver.c
+++ b/cpukit/rtems/src/timerserver.c
@@ -15,7 +15,7 @@
/* COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
- * Copyright (c) 2009, 2016 embedded brains GmbH.
+ * Copyright (c) 2009, 2017 embedded brains GmbH.
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
@@ -92,6 +92,9 @@ static rtems_task _Timer_server_Body(
)
{
Timer_server_Control *ts = (Timer_server_Control *) arg;
+#if defined(RTEMS_SCORE_THREAD_ENABLE_RESOURCE_COUNT)
+ Thread_Control *executing = _Thread_Get_executing();
+#endif
while ( true ) {
ISR_lock_Context lock_context;
@@ -121,6 +124,9 @@ static rtems_task _Timer_server_Body(
_Timer_server_Release( ts, &lock_context );
( *routine )( id, user_data );
+#if defined(RTEMS_SCORE_THREAD_ENABLE_RESOURCE_COUNT)
+ _Assert( !_Thread_Owns_resources( executing ) );
+#endif
_Timer_server_Acquire( ts, &lock_context );
}
More information about the vc
mailing list