score: Add WATCHDOG_INITIALIZER()

This commit is contained in:
Sebastian Huber
2013-07-22 11:10:43 +02:00
parent 4b48ece07d
commit 0eae7ba9ba
2 changed files with 37 additions and 0 deletions

View File

@@ -39,6 +39,19 @@ extern "C" {
*/ */
#define WATCHDOG_MAXIMUM_INTERVAL ((Watchdog_Interval) 0xffffffff) #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 * @brief the manner in which a watchdog chain may
* be adjusted by the @ref _Watchdog_Adjust routine. * be adjusted by the @ref _Watchdog_Adjust routine.

View File

@@ -24,6 +24,27 @@
#include <rtems/score/watchdogimpl.h> #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 Init(
rtems_task_argument argument rtems_task_argument argument
) )
@@ -35,6 +56,9 @@ rtems_task Init(
puts( "\n*** RTEMS WATCHDOG ***" ); puts( "\n*** RTEMS WATCHDOG ***" );
puts( "INIT - report on empty watchdog chain" ); puts( "INIT - report on empty watchdog chain" );
test_watchdog_static_init();
_Chain_Initialize_empty( &empty ); _Chain_Initialize_empty( &empty );
_Watchdog_Report_chain( "Empty Chain", &empty ); _Watchdog_Report_chain( "Empty Chain", &empty );