Index: cpukit/rtems/include/rtems/rtems/timerimpl.h
===================================================================
--- cpukit/rtems/include/rtems/rtems/timerimpl.h	(revision bcf536a50a0563b854773cb45bc0fd7b19cd5c51)
+++ cpukit/rtems/include/rtems/rtems/timerimpl.h	(revision 54cf0e34c5d6b8be0ce136eac7c4e11c1d487d7f)
@@ -22,4 +22,5 @@
 #include <rtems/score/objectimpl.h>
 #include <rtems/score/thread.h>
+#include <rtems/score/watchdogimpl.h>
 
 #ifdef __cplusplus
@@ -65,7 +66,7 @@
 
   /**
-   * @brief Chain for watchdogs which will be triggered by the timer server.
-   */
-  Chain_Control Chain;
+   * @brief Watchdog header managed by the timer server.
+   */
+  Watchdog_Header Header;
 
   /**
Index: cpukit/rtems/src/timerreset.c
===================================================================
--- cpukit/rtems/src/timerreset.c	(revision bcf536a50a0563b854773cb45bc0fd7b19cd5c51)
+++ cpukit/rtems/src/timerreset.c	(revision 54cf0e34c5d6b8be0ce136eac7c4e11c1d487d7f)
@@ -53,5 +53,5 @@
       if ( the_timer->the_class == TIMER_INTERVAL ) {
         _Watchdog_Remove( &the_timer->Ticker );
-        _Watchdog_Insert( &_Watchdog_Ticks_chain, &the_timer->Ticker );
+        _Watchdog_Insert( &_Watchdog_Ticks_header, &the_timer->Ticker );
       } else if ( the_timer->the_class == TIMER_INTERVAL_ON_TASK ) {
         Timer_server_Control *timer_server = _Timer_server;
Index: cpukit/rtems/src/timerserver.c
===================================================================
--- cpukit/rtems/src/timerserver.c	(revision bcf536a50a0563b854773cb45bc0fd7b19cd5c51)
+++ cpukit/rtems/src/timerserver.c	(revision 54cf0e34c5d6b8be0ce136eac7c4e11c1d487d7f)
@@ -32,5 +32,4 @@
 #include <rtems/score/threadimpl.h>
 #include <rtems/score/todimpl.h>
-#include <rtems/score/watchdogimpl.h>
 
 static Timer_server_Control _Timer_server_Default;
@@ -52,7 +51,7 @@
 
   _ISR_Disable( level );
-  if ( !_Chain_Is_empty( &ts->Interval_watchdogs.Chain ) ) {
+  if ( !_Watchdog_Is_empty( &ts->Interval_watchdogs.Header ) ) {
     Watchdog_Interval delta_interval =
-      _Watchdog_First( &ts->Interval_watchdogs.Chain )->delta_interval;
+      _Watchdog_First( &ts->Interval_watchdogs.Header )->delta_interval;
     _ISR_Enable( level );
 
@@ -85,7 +84,7 @@
 
   _ISR_Disable( level );
-  if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) {
+  if ( !_Watchdog_Is_empty( &ts->TOD_watchdogs.Header ) ) {
     Watchdog_Interval delta_interval =
-      _Watchdog_First( &ts->TOD_watchdogs.Chain )->delta_interval;
+      _Watchdog_First( &ts->TOD_watchdogs.Header )->delta_interval;
     _ISR_Enable( level );
 
@@ -108,7 +107,7 @@
 {
   if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {
-    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
+    _Watchdog_Insert( &ts->Interval_watchdogs.Header, &timer->Ticker );
   } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {
-    _Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );
+    _Watchdog_Insert( &ts->TOD_watchdogs.Header, &timer->Ticker );
   }
 }
@@ -145,6 +144,6 @@
     snapshot = _Watchdog_Ticks_since_boot;
     last_snapshot = ts->Interval_watchdogs.last_snapshot;
-    if ( !_Chain_Is_empty( &ts->Interval_watchdogs.Chain ) ) {
-      first_watchdog = _Watchdog_First( &ts->Interval_watchdogs.Chain );
+    if ( !_Watchdog_Is_empty( &ts->Interval_watchdogs.Header ) ) {
+      first_watchdog = _Watchdog_First( &ts->Interval_watchdogs.Header );
 
       /*
@@ -164,5 +163,5 @@
     _ISR_Enable( level );
 
-    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
+    _Watchdog_Insert( &ts->Interval_watchdogs.Header, &timer->Ticker );
 
     if ( !ts->active ) {
@@ -177,6 +176,6 @@
     snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
     last_snapshot = ts->TOD_watchdogs.last_snapshot;
-    if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) {
-      first_watchdog = _Watchdog_First( &ts->TOD_watchdogs.Chain );
+    if ( !_Watchdog_Is_empty( &ts->TOD_watchdogs.Header ) ) {
+      first_watchdog = _Watchdog_First( &ts->TOD_watchdogs.Header );
       delta_interval = first_watchdog->delta_interval;
       if ( snapshot > last_snapshot ) {
@@ -202,5 +201,5 @@
     _ISR_Enable( level );
 
-    _Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );
+    _Watchdog_Insert( &ts->TOD_watchdogs.Header, &timer->Ticker );
 
     if ( !ts->active ) {
@@ -245,5 +244,5 @@
   watchdogs->last_snapshot = snapshot;
 
-  _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );
+  _Watchdog_Adjust_to_chain( &watchdogs->Header, delta, fire_chain );
 }
 
@@ -260,5 +259,5 @@
    *  Process the seconds chain.  Start by checking that the Time
    *  of Day (TOD) has not been set backwards.  If it has then
-   *  we want to adjust the watchdogs->Chain to indicate this.
+   *  we want to adjust the watchdogs->Header to indicate this.
    */
   if ( snapshot > last_snapshot ) {
@@ -268,5 +267,5 @@
      */
     delta = snapshot - last_snapshot;
-    _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );
+    _Watchdog_Adjust_to_chain( &watchdogs->Header, delta, fire_chain );
 
   } else if ( snapshot < last_snapshot ) {
@@ -276,5 +275,5 @@
       */
      delta = last_snapshot - snapshot;
-     _Watchdog_Adjust_backward( &watchdogs->Chain, delta );
+     _Watchdog_Adjust_backward( &watchdogs->Header, delta );
   }
 
@@ -544,6 +543,6 @@
    *  Initialize the timer lists that the server will manage.
    */
-  _Chain_Initialize_empty( &ts->Interval_watchdogs.Chain );
-  _Chain_Initialize_empty( &ts->TOD_watchdogs.Chain );
+  _Watchdog_Header_initialize( &ts->Interval_watchdogs.Header );
+  _Watchdog_Header_initialize( &ts->TOD_watchdogs.Header );
 
   /*
Index: cpukit/score/include/rtems/score/watchdogimpl.h
===================================================================
--- cpukit/score/include/rtems/score/watchdogimpl.h	(revision bcf536a50a0563b854773cb45bc0fd7b19cd5c51)
+++ cpukit/score/include/rtems/score/watchdogimpl.h	(revision 54cf0e34c5d6b8be0ce136eac7c4e11c1d487d7f)
@@ -54,4 +54,14 @@
 
 /**
+ * @brief Watchdog header.
+ */
+typedef struct {
+  /**
+   * @brief The chain of active or transient watchdogs.
+   */
+  Chain_Control Watchdogs;
+} Watchdog_Header;
+
+/**
  *  @brief Watchdog synchronization level.
  *
@@ -74,5 +84,5 @@
  *  This is the watchdog chain which is managed at ticks.
  */
-SCORE_EXTERN Chain_Control _Watchdog_Ticks_chain;
+SCORE_EXTERN Watchdog_Header _Watchdog_Ticks_header;
 
 /**
@@ -81,5 +91,5 @@
  *  This is the watchdog chain which is managed at second boundaries.
  */
-SCORE_EXTERN Chain_Control _Watchdog_Seconds_chain;
+SCORE_EXTERN Watchdog_Header _Watchdog_Seconds_header;
 
 /**
@@ -113,5 +123,5 @@
  */
 void _Watchdog_Adjust_backward(
-  Chain_Control     *header,
+  Watchdog_Header   *header,
   Watchdog_Interval  units
 );
@@ -127,5 +137,5 @@
  */
 void _Watchdog_Adjust_forward(
-  Chain_Control     *header,
+  Watchdog_Header   *header,
   Watchdog_Interval  units
 );
@@ -146,7 +156,7 @@
  */
 void _Watchdog_Adjust_to_chain(
-  Chain_Control               *header,
-  Watchdog_Interval            units_arg,
-  Chain_Control               *to_fire
+  Watchdog_Header   *header,
+  Watchdog_Interval  units_arg,
+  Chain_Control     *to_fire
 
 );
@@ -164,6 +174,6 @@
  */
 void _Watchdog_Insert (
-  Chain_Control         *header,
-  Watchdog_Control      *the_watchdog
+  Watchdog_Header  *header,
+  Watchdog_Control *the_watchdog
 );
 
@@ -179,5 +189,5 @@
  */
 void _Watchdog_Tickle (
-  Chain_Control *header
+  Watchdog_Header *header
 );
 
@@ -251,5 +261,5 @@
 {
 
-  _Watchdog_Tickle( &_Watchdog_Ticks_chain );
+  _Watchdog_Tickle( &_Watchdog_Ticks_header );
 
 }
@@ -263,5 +273,5 @@
 {
 
-  _Watchdog_Tickle( &_Watchdog_Seconds_chain );
+  _Watchdog_Tickle( &_Watchdog_Seconds_header );
 
 }
@@ -282,5 +292,5 @@
   the_watchdog->initial = units;
 
-  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
+  _Watchdog_Insert( &_Watchdog_Ticks_header, the_watchdog );
 
 }
@@ -301,5 +311,5 @@
   the_watchdog->initial = units;
 
-  _Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
+  _Watchdog_Insert( &_Watchdog_Seconds_header, the_watchdog );
 
 }
@@ -319,5 +329,5 @@
   (void) _Watchdog_Remove( the_watchdog );
 
-  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
+  _Watchdog_Insert( &_Watchdog_Ticks_header, the_watchdog );
 
 }
@@ -357,9 +367,9 @@
 
 RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(
-  Chain_Control *header
-)
-{
-
-  return ( (Watchdog_Control *) _Chain_First( header ) );
+  Watchdog_Header *header
+)
+{
+
+  return ( (Watchdog_Control *) _Chain_First( &header->Watchdogs ) );
 
 }
@@ -371,10 +381,24 @@
 
 RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_Last(
-  Chain_Control *header
-)
-{
-
-  return ( (Watchdog_Control *) _Chain_Last( header ) );
-
+  Watchdog_Header *header
+)
+{
+
+  return ( (Watchdog_Control *) _Chain_Last( &header->Watchdogs ) );
+
+}
+
+RTEMS_INLINE_ROUTINE bool _Watchdog_Is_empty(
+  const Watchdog_Header *header
+)
+{
+  return _Chain_Is_empty( &header->Watchdogs );
+}
+
+RTEMS_INLINE_ROUTINE void _Watchdog_Header_initialize(
+  Watchdog_Header *header
+)
+{
+  _Chain_Initialize_empty( &header->Watchdogs );
 }
 
Index: cpukit/score/src/coretodset.c
===================================================================
--- cpukit/score/src/coretodset.c	(revision bcf536a50a0563b854773cb45bc0fd7b19cd5c51)
+++ cpukit/score/src/coretodset.c	(revision 54cf0e34c5d6b8be0ce136eac7c4e11c1d487d7f)
@@ -32,10 +32,10 @@
   Watchdog_Interval seconds_now;
   ISR_lock_Context lock_context;
-  Chain_Control *header;
+  Watchdog_Header *header;
 
   _Thread_Disable_dispatch();
 
   seconds_now = _TOD_Seconds_since_epoch();
-  header = &_Watchdog_Seconds_chain;
+  header = &_Watchdog_Seconds_header;
 
   if ( seconds_next < seconds_now )
Index: cpukit/score/src/watchdog.c
===================================================================
--- cpukit/score/src/watchdog.c	(revision bcf536a50a0563b854773cb45bc0fd7b19cd5c51)
+++ cpukit/score/src/watchdog.c	(revision 54cf0e34c5d6b8be0ce136eac7c4e11c1d487d7f)
@@ -22,6 +22,4 @@
 #endif
 
-#include <rtems/system.h>
-#include <rtems/score/isr.h>
 #include <rtems/score/watchdogimpl.h>
 
@@ -32,5 +30,5 @@
   _Watchdog_Ticks_since_boot = 0;
 
-  _Chain_Initialize_empty( &_Watchdog_Ticks_chain );
-  _Chain_Initialize_empty( &_Watchdog_Seconds_chain );
+  _Watchdog_Header_initialize( &_Watchdog_Ticks_header );
+  _Watchdog_Header_initialize( &_Watchdog_Seconds_header );
 }
Index: cpukit/score/src/watchdogadjust.c
===================================================================
--- cpukit/score/src/watchdogadjust.c	(revision bcf536a50a0563b854773cb45bc0fd7b19cd5c51)
+++ cpukit/score/src/watchdogadjust.c	(revision 54cf0e34c5d6b8be0ce136eac7c4e11c1d487d7f)
@@ -24,5 +24,5 @@
 
 void _Watchdog_Adjust_backward(
-  Chain_Control     *header,
+  Watchdog_Header   *header,
   Watchdog_Interval  units
 )
@@ -32,5 +32,5 @@
   _ISR_Disable( level );
 
-  if ( !_Chain_Is_empty( header ) ) {
+  if ( !_Watchdog_Is_empty( header ) ) {
      _Watchdog_First( header )->delta_interval += units;
   }
@@ -40,5 +40,5 @@
 
 void _Watchdog_Adjust_forward(
-  Chain_Control     *header,
+  Watchdog_Header   *header,
   Watchdog_Interval  units
 )
@@ -48,5 +48,5 @@
   _ISR_Disable( level );
 
-  while ( !_Chain_Is_empty( header ) && units > 0 ) {
+  while ( !_Watchdog_Is_empty( header ) && units > 0 ) {
     Watchdog_Control *first = _Watchdog_First( header );
 
Index: cpukit/score/src/watchdogadjusttochain.c
===================================================================
--- cpukit/score/src/watchdogadjusttochain.c	(revision bcf536a50a0563b854773cb45bc0fd7b19cd5c51)
+++ cpukit/score/src/watchdogadjusttochain.c	(revision 54cf0e34c5d6b8be0ce136eac7c4e11c1d487d7f)
@@ -19,12 +19,11 @@
 #endif
 
-#include <rtems/system.h>
-#include <rtems/score/isr.h>
 #include <rtems/score/watchdogimpl.h>
+#include <rtems/score/isrlevel.h>
 
 void _Watchdog_Adjust_to_chain(
-  Chain_Control               *header,
-  Watchdog_Interval            units_arg,
-  Chain_Control               *to_fire
+  Watchdog_Header   *header,
+  Watchdog_Interval  units_arg,
+  Chain_Control     *to_fire
 
 )
@@ -37,5 +36,5 @@
 
   while ( 1 ) {
-    if ( _Chain_Is_empty( header ) ) {
+    if ( _Watchdog_Is_empty( header ) ) {
       break;
     }
@@ -64,5 +63,5 @@
       _ISR_Flash( level );
 
-      if ( _Chain_Is_empty( header ) )
+      if ( _Watchdog_Is_empty( header ) )
         break;
       first = _Watchdog_First( header );
Index: cpukit/score/src/watchdoginsert.c
===================================================================
--- cpukit/score/src/watchdoginsert.c	(revision bcf536a50a0563b854773cb45bc0fd7b19cd5c51)
+++ cpukit/score/src/watchdoginsert.c	(revision 54cf0e34c5d6b8be0ce136eac7c4e11c1d487d7f)
@@ -19,10 +19,10 @@
 #endif
 
-#include <rtems/system.h>
-#include <rtems/score/isr.h>
 #include <rtems/score/watchdogimpl.h>
+#include <rtems/score/isrlevel.h>
+#include <rtems/score/percpu.h>
 
 void _Watchdog_Insert(
-  Chain_Control         *header,
+  Watchdog_Header       *header,
   Watchdog_Control      *the_watchdog
 )
Index: cpukit/score/src/watchdogtickle.c
===================================================================
--- cpukit/score/src/watchdogtickle.c	(revision bcf536a50a0563b854773cb45bc0fd7b19cd5c51)
+++ cpukit/score/src/watchdogtickle.c	(revision 54cf0e34c5d6b8be0ce136eac7c4e11c1d487d7f)
@@ -19,10 +19,9 @@
 #endif
 
-#include <rtems/system.h>
-#include <rtems/score/isr.h>
 #include <rtems/score/watchdogimpl.h>
+#include <rtems/score/isrlevel.h>
 
 void _Watchdog_Tickle(
-  Chain_Control *header
+  Watchdog_Header *header
 )
 {
@@ -39,5 +38,5 @@
   _ISR_Disable( level );
 
-  if ( _Chain_Is_empty( header ) )
+  if ( _Watchdog_Is_empty( header ) )
     goto leave;
 
@@ -111,5 +110,5 @@
 
      the_watchdog = _Watchdog_First( header );
-   } while ( !_Chain_Is_empty( header ) &&
+   } while ( !_Watchdog_Is_empty( header ) &&
              (the_watchdog->delta_interval == 0) );
 
Index: testsuites/sptests/spintrcritical08/init.c
===================================================================
--- testsuites/sptests/spintrcritical08/init.c	(revision bcf536a50a0563b854773cb45bc0fd7b19cd5c51)
+++ testsuites/sptests/spintrcritical08/init.c	(revision 54cf0e34c5d6b8be0ce136eac7c4e11c1d487d7f)
@@ -47,8 +47,8 @@
 )
 {
-  Chain_Control *chain = &_Watchdog_Ticks_chain;
+  Watchdog_Header *header = &_Watchdog_Ticks_header;
 
-  if ( !_Chain_Is_empty( chain ) ) {
-    Watchdog_Control *watchdog = _Watchdog_First( chain );
+  if ( !_Watchdog_Is_empty( header ) ) {
+    Watchdog_Control *watchdog = _Watchdog_First( header );
 
     if (
Index: testsuites/sptests/spintrcritical09/init.c
===================================================================
--- testsuites/sptests/spintrcritical09/init.c	(revision bcf536a50a0563b854773cb45bc0fd7b19cd5c51)
+++ testsuites/sptests/spintrcritical09/init.c	(revision 54cf0e34c5d6b8be0ce136eac7c4e11c1d487d7f)
@@ -44,8 +44,8 @@
 )
 {
-  Chain_Control *chain = &_Watchdog_Ticks_chain;
+  Watchdog_Header *header = &_Watchdog_Ticks_header;
 
-  if ( !_Chain_Is_empty( chain ) ) {
-    Watchdog_Control *watchdog = _Watchdog_First( chain );
+  if ( !_Watchdog_Is_empty( header ) ) {
+    Watchdog_Control *watchdog = _Watchdog_First( header );
 
     if (
Index: testsuites/sptests/spsize/size.c
===================================================================
--- testsuites/sptests/spsize/size.c	(revision bcf536a50a0563b854773cb45bc0fd7b19cd5c51)
+++ testsuites/sptests/spsize/size.c	(revision 54cf0e34c5d6b8be0ce136eac7c4e11c1d487d7f)
@@ -403,6 +403,6 @@
                 (sizeof _Watchdog_Sync_count)             +
                 (sizeof _Watchdog_Ticks_since_boot)       +
-                (sizeof _Watchdog_Ticks_chain)            +
-                (sizeof _Watchdog_Seconds_chain)          +
+                (sizeof _Watchdog_Ticks_header)           +
+                (sizeof _Watchdog_Seconds_header)         +
 
 /*wkspace.h*/   (sizeof _Workspace_Area);
