summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2013-07-22 11:10:43 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-07-22 16:57:26 +0200
commit0eae7ba9ba8c6c60e0718e364a37081b290cc457 (patch)
treec5e6b40eaaeb4bb3a358c36ce2be6845b1528cd9
parentscore: Create watchdog implementation header (diff)
downloadrtems-0eae7ba9ba8c6c60e0718e364a37081b290cc457.tar.bz2
score: Add WATCHDOG_INITIALIZER()
-rw-r--r--cpukit/score/include/rtems/score/watchdogimpl.h13
-rw-r--r--testsuites/sptests/spwatchdog/init.c24
2 files changed, 37 insertions, 0 deletions
diff --git a/cpukit/score/include/rtems/score/watchdogimpl.h b/cpukit/score/include/rtems/score/watchdogimpl.h
index e0324ff257..3085a440f6 100644
--- a/cpukit/score/include/rtems/score/watchdogimpl.h
+++ b/cpukit/score/include/rtems/score/watchdogimpl.h
@@ -40,6 +40,19 @@ extern "C" {
#define WATCHDOG_MAXIMUM_INTERVAL ((Watchdog_Interval) 0xffffffff)
/**
+ * @brief Watchdog initializer for static initialization.
+ *
+ * @see _Watchdog_Initialize().
+ */
+#define WATCHDOG_INITIALIZER( routine, id, user_data ) \
+ { \
+ { NULL, NULL }, \
+ WATCHDOG_INACTIVE, \
+ 0, 0, 0, 0, \
+ ( routine ), ( id ), ( user_data ) \
+ }
+
+/**
* @brief the manner in which a watchdog chain may
* be adjusted by the @ref _Watchdog_Adjust routine.
*
diff --git a/testsuites/sptests/spwatchdog/init.c b/testsuites/sptests/spwatchdog/init.c
index a7a332a26c..6dae9e411a 100644
--- a/testsuites/sptests/spwatchdog/init.c
+++ b/testsuites/sptests/spwatchdog/init.c
@@ -24,6 +24,27 @@
#include <rtems/score/watchdogimpl.h>
+static void test_watchdog_routine( Objects_Id id, void *arg )
+{
+ (void) id;
+ (void) arg;
+
+ rtems_test_assert( 0 );
+}
+
+static void test_watchdog_static_init( void )
+{
+ Objects_Id id = 0x12345678;
+ void *arg = (void *) 0xdeadbeef;
+ Watchdog_Control a = WATCHDOG_INITIALIZER( test_watchdog_routine, id, arg );
+ Watchdog_Control b;
+
+ memset( &b, 0, sizeof( b ) );
+ _Watchdog_Initialize( &b, test_watchdog_routine, id, arg );
+
+ rtems_test_assert( memcmp( &a, &b, sizeof( a ) ) == 0 );
+}
+
rtems_task Init(
rtems_task_argument argument
)
@@ -35,6 +56,9 @@ rtems_task Init(
puts( "\n*** RTEMS WATCHDOG ***" );
puts( "INIT - report on empty watchdog chain" );
+
+ test_watchdog_static_init();
+
_Chain_Initialize_empty( &empty );
_Watchdog_Report_chain( "Empty Chain", &empty );