summaryrefslogblamecommitdiffstats
path: root/cpukit/score/inline/rtems/score/watchdog.inl
blob: d5d12cbeef466d1ca4d6651d13fc94f771baa2dd (plain) (tree)







































































































































































































































































































                                                                          
/*  watchdog.inl
 *
 *  This file contains the static inline implementation of all inlined
 *  routines in the Watchdog Handler.
 *
 *  COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
 *  On-Line Applications Research Corporation (OAR).
 *  All rights assigned to U.S. Government, 1994.
 *
 *  This material may be reproduced by or for the U.S. Government pursuant
 *  to the copyright license under the clause at DFARS 252.227-7013.  This
 *  notice must appear in all copies of this file and its derivatives.
 *
 *  $Id$
 */

#ifndef __WATCHDOG_inl
#define __WATCHDOG_inl

/*PAGE
 *
 *  _Watchdog_Initialize
 *
 */

STATIC INLINE void _Watchdog_Initialize(
  Watchdog_Control *the_watchdog,
  rtems_timer_service_routine_entry  routine,
  Objects_Id        id,
  void             *user_data
)
{
  the_watchdog->state     = WATCHDOG_INACTIVE;
  the_watchdog->routine   = routine;
  the_watchdog->id        = id;
  the_watchdog->user_data = user_data;
}

/*PAGE
 *
 *  _Watchdog_Is_active
 *
 */

STATIC INLINE boolean _Watchdog_Is_active(
  Watchdog_Control *the_watchdog
)
{

  return ( the_watchdog->state == WATCHDOG_ACTIVE );

}

/*PAGE
 *
 *  _Watchdog_Activate
 *
 */

STATIC INLINE void _Watchdog_Activate(
  Watchdog_Control *the_watchdog
)
{

  the_watchdog->state = WATCHDOG_ACTIVE;

}

/*PAGE
 *
 *  _Watchdog_Deactivate
 *
 */

STATIC INLINE void _Watchdog_Deactivate(
  Watchdog_Control *the_watchdog
)
{

  the_watchdog->state = WATCHDOG_REMOVE_IT;

}

/*PAGE
 *
 *  _Watchdog_Tickle_ticks
 *
 */

STATIC INLINE void _Watchdog_Tickle_ticks( void )
{

  _Watchdog_Tickle( &_Watchdog_Ticks_chain );

}

/*PAGE
 *
 *  _Watchdog_Tickle_seconds
 *
 */

STATIC INLINE void _Watchdog_Tickle_seconds( void )
{

  _Watchdog_Tickle( &_Watchdog_Seconds_chain );

}

/*PAGE
 *
 *  _Watchdog_Insert_ticks
 *
 */

STATIC INLINE void _Watchdog_Insert_ticks(
  Watchdog_Control      *the_watchdog,
  rtems_interval      units,
  Watchdog_Insert_modes  insert_mode
)
{

  the_watchdog->initial = units;

  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog, insert_mode );

}

/*PAGE
 *
 *  _Watchdog_Insert_seconds
 *
 */

STATIC INLINE void _Watchdog_Insert_seconds(
  Watchdog_Control      *the_watchdog,
  rtems_interval      units,
  Watchdog_Insert_modes  insert_mode
)
{

  the_watchdog->initial = units;

  _Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog, insert_mode );

}

/*PAGE
 *
 *  _Watchdog_Adjust_seconds
 *
 */

STATIC INLINE void _Watchdog_Adjust_seconds(
  Watchdog_Adjust_directions direction,
  rtems_interval          units
)
{

  _Watchdog_Adjust( &_Watchdog_Seconds_chain, direction, units );

}

/*PAGE
 *
 *  _Watchdog_Adjust_ticks
 *
 */

STATIC INLINE void _Watchdog_Adjust_ticks(
  Watchdog_Adjust_directions direction,
  rtems_interval          units
)
{

  _Watchdog_Adjust( &_Watchdog_Ticks_chain, direction, units );

}

/*PAGE
 *
 *  _Watchdog_Reset
 *
 */

STATIC INLINE void _Watchdog_Reset(
  Watchdog_Control *the_watchdog
)
{

  (void) _Watchdog_Remove( the_watchdog );

  _Watchdog_Insert(
    &_Watchdog_Ticks_chain,
    the_watchdog,
    WATCHDOG_ACTIVATE_NOW
  );

}

/*PAGE
 *
 *  _Watchdog_Next
 *
 */

STATIC INLINE Watchdog_Control *_Watchdog_Next(
  Watchdog_Control *the_watchdog
)
{

  return ( (Watchdog_Control *) the_watchdog->Node.next );

}

/*PAGE
 *
 *  _Watchdog_Previous
 *
 */

STATIC INLINE Watchdog_Control *_Watchdog_Previous(
  Watchdog_Control *the_watchdog
)
{

  return ( (Watchdog_Control *) the_watchdog->Node.previous );

}

/*PAGE
 *
 *  _Watchdog_First
 *
 */

STATIC INLINE Watchdog_Control *_Watchdog_First(
  Chain_Control *header
)
{

  return ( (Watchdog_Control *) header->first );

}

/*PAGE
 *
 *  _Watchdog_Last
 *
 */
STATIC INLINE Watchdog_Control *_Watchdog_Last(
  Chain_Control *header
)
{

  return ( (Watchdog_Control *) header->last );

}

/*PAGE
 *
 *  _Watchdog_Get_sync
 *
 */

STATIC INLINE Watchdog_Control *_Watchdog_Get_sync( void )
{
  return (Watchdog_Control *) _Watchdog_Sync;
}

/*PAGE
 *
 *  _Watchdog_Set_sync
 *
 */

STATIC INLINE void _Watchdog_Set_sync(
  Watchdog_Control *the_watchdog
)
{
  _Watchdog_Sync = (Watchdog_Synchronization_pointer) the_watchdog;
}

/*PAGE
 *
 *  _Watchdog_Clear_sync
 *
 */

STATIC INLINE void _Watchdog_Clear_sync( void )
{
  _Watchdog_Sync = NULL;
}

#endif
/* end of include file */