summaryrefslogblamecommitdiffstats
path: root/testsuites/sptests/spintrcritical_support/intrcritical.h
blob: aca1ee0f2c5fc00333bd895c6d8d06af7af66416 (plain) (tree)
1
2
3
4
5
6
7





                                                           
                                         










                                                                
                                       

  









                                                                    


















                                                                              

      
/*
 *  COPYRIGHT (c) 1989-2009.
 *  On-Line Applications Research Corporation (OAR).
 *
 *  The license and distribution terms for this file may be
 *  found in the file LICENSE in this distribution or at
 *  http://www.rtems.org/license/LICENSE.
 */

#ifndef __INTERRUPT_CRITICAL_SECTIONS_TEST_SUPPORT_h
#define __INTERRUPT_CRITICAL_SECTIONS_TEST_SUPPORT_h

/**
 *  @brief Initialize Test Support
 *
 *  @param[in] tsr is the optional timer service routine to fire
 */
void interrupt_critical_section_test_support_initialize(
  rtems_timer_service_routine_entry tsr
);

/**
 *  @brief Delay Test Support
 *
 *  This method delays a varying amount of time each call.
 *
 *  @return This method returns true each time the delay counter has
 *          to be reset.
 */
bool interrupt_critical_section_test_support_delay(void);

/**
 * @brief Interrupt critical section test.
 *
 * This function first estimates the test body duration and then repeatedly
 * calls the test body with varying times to the next clock tick interrupt.
 *
 * @param[in] test_body The test body function.  In case the test body returns
 * true, then the test iteration stops.
 * @param[in] test_body_arg The argument for the test body function.
 * @param[in] tsr An optional timer service routine.
 *
 * @return The test body return status.
 */
bool interrupt_critical_section_test(
  bool                              ( *test_body )( void * ),
  void                                *test_body_arg,
  rtems_timer_service_routine_entry    tsr
);

#endif