forked from Imagelibrary/rtems
2008-01-25 Jennifer Averett <jennifer.averett@OARcorp.com>
* sapi/include/rtems/fatal.h, score/include/rtems/score/coremutex.h, score/include/rtems/score/interr.h, score/inline/rtems/score/thread.inl, score/src/coremutexseize.c: Modifications to aid in full path testing.
This commit is contained in:
@@ -1,3 +1,10 @@
|
|||||||
|
2008-01-25 Jennifer Averett <jennifer.averett@OARcorp.com>
|
||||||
|
|
||||||
|
* sapi/include/rtems/fatal.h, score/include/rtems/score/coremutex.h,
|
||||||
|
score/include/rtems/score/interr.h,
|
||||||
|
score/inline/rtems/score/thread.inl, score/src/coremutexseize.c:
|
||||||
|
Modifications to aid in full path testing.
|
||||||
|
|
||||||
2008-01-25 Joel Sherrill <joel.sherrill@oarcorp.com>
|
2008-01-25 Joel Sherrill <joel.sherrill@oarcorp.com>
|
||||||
|
|
||||||
* posix/src/mqueuesendsupp.c: Remove warning.
|
* posix/src/mqueuesendsupp.c: Remove warning.
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ extern "C" {
|
|||||||
|
|
||||||
void rtems_fatal_error_occurred(
|
void rtems_fatal_error_occurred(
|
||||||
uint32_t the_error
|
uint32_t the_error
|
||||||
);
|
) RTEMS_COMPILER_NO_RETURN_ATTRIBUTE;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -354,7 +354,8 @@ void _CORE_mutex_Seize_interrupt_blocking(
|
|||||||
* * If the caller is willing to wait
|
* * If the caller is willing to wait
|
||||||
* then they are blocked.
|
* then they are blocked.
|
||||||
*/
|
*/
|
||||||
#define _CORE_mutex_Seize( \
|
|
||||||
|
#define _CORE_mutex_Seize_body( \
|
||||||
_the_mutex, _id, _wait, _timeout, _level ) \
|
_the_mutex, _id, _wait, _timeout, _level ) \
|
||||||
do { \
|
do { \
|
||||||
if ( _Thread_Dispatch_disable_level \
|
if ( _Thread_Dispatch_disable_level \
|
||||||
@@ -364,7 +365,8 @@ void _CORE_mutex_Seize_interrupt_blocking(
|
|||||||
_Internal_error_Occurred( \
|
_Internal_error_Occurred( \
|
||||||
INTERNAL_ERROR_CORE, \
|
INTERNAL_ERROR_CORE, \
|
||||||
FALSE, \
|
FALSE, \
|
||||||
18 /* called from wrong environment */); \
|
INTERNAL_ERROR_MUTEX_OBTAIN_FROM_BAD_STATE \
|
||||||
|
); \
|
||||||
} \
|
} \
|
||||||
if ( _CORE_mutex_Seize_interrupt_trylock( _the_mutex, &_level ) ) { \
|
if ( _CORE_mutex_Seize_interrupt_trylock( _the_mutex, &_level ) ) { \
|
||||||
if ( !_wait ) { \
|
if ( !_wait ) { \
|
||||||
@@ -382,6 +384,18 @@ void _CORE_mutex_Seize_interrupt_blocking(
|
|||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
#if defined(__RTEMS_DO_NOT_INLINE_CORE_MUTEX_SEIZE__)
|
||||||
|
void _CORE_mutex_Seize(
|
||||||
|
CORE_mutex_Control *_the_mutex,
|
||||||
|
Objects_Id _id,
|
||||||
|
boolean _wait,
|
||||||
|
Watchdog_Interval _timeout,
|
||||||
|
ISR_Level _level
|
||||||
|
);
|
||||||
|
#else
|
||||||
|
#define _CORE_mutex_Seize( _the_mutex, _id, _wait, _timeout, _level ) \
|
||||||
|
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level )
|
||||||
|
#endif
|
||||||
/**
|
/**
|
||||||
* @brief Surrender the Mutex
|
* @brief Surrender the Mutex
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -64,7 +64,8 @@ typedef enum {
|
|||||||
INTERNAL_ERROR_BAD_STACK_HOOK,
|
INTERNAL_ERROR_BAD_STACK_HOOK,
|
||||||
INTERNAL_ERROR_BAD_ATTRIBUTES,
|
INTERNAL_ERROR_BAD_ATTRIBUTES,
|
||||||
INTERNAL_ERROR_IMPLEMENTATION_KEY_CREATE_INCONSISTENCY,
|
INTERNAL_ERROR_IMPLEMENTATION_KEY_CREATE_INCONSISTENCY,
|
||||||
INTERNAL_ERROR_IMPLEMENTATION_BLOCKING_OPERATION_CANCEL
|
INTERNAL_ERROR_IMPLEMENTATION_BLOCKING_OPERATION_CANCEL,
|
||||||
|
INTERNAL_ERROR_MUTEX_OBTAIN_FROM_BAD_STATE
|
||||||
} Internal_errors_Core_list;
|
} Internal_errors_Core_list;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -19,6 +19,8 @@
|
|||||||
#ifndef _RTEMS_SCORE_THREAD_INL
|
#ifndef _RTEMS_SCORE_THREAD_INL
|
||||||
#define _RTEMS_SCORE_THREAD_INL
|
#define _RTEMS_SCORE_THREAD_INL
|
||||||
|
|
||||||
|
#include <rtems/score/sysstate.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @addtogroup ScoreThread
|
* @addtogroup ScoreThread
|
||||||
* @{
|
* @{
|
||||||
@@ -32,7 +34,13 @@
|
|||||||
|
|
||||||
RTEMS_INLINE_ROUTINE void _Thread_Stop_multitasking( void )
|
RTEMS_INLINE_ROUTINE void _Thread_Stop_multitasking( void )
|
||||||
{
|
{
|
||||||
_Context_Switch( &_Thread_Executing->Registers, &_Thread_BSP_context );
|
Context_Control context_area;
|
||||||
|
Context_Control *context_p = &context_area;
|
||||||
|
|
||||||
|
if ( _System_state_Is_up(_System_state_Get ()) )
|
||||||
|
context_p = &_Thread_Executing->Registers;
|
||||||
|
|
||||||
|
_Context_Switch( context_p, &_Thread_BSP_context );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -27,6 +27,19 @@
|
|||||||
#include <rtems/score/thread.h>
|
#include <rtems/score/thread.h>
|
||||||
#include <rtems/score/threadq.h>
|
#include <rtems/score/threadq.h>
|
||||||
|
|
||||||
|
#if defined(__RTEMS_DO_NOT_INLINE_CORE_MUTEX_SEIZE__)
|
||||||
|
void _CORE_mutex_Seize(
|
||||||
|
CORE_mutex_Control *_the_mutex,
|
||||||
|
Objects_Id _id,
|
||||||
|
boolean _wait,
|
||||||
|
Watchdog_Interval _timeout,
|
||||||
|
ISR_Level _level
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*PAGE
|
/*PAGE
|
||||||
*
|
*
|
||||||
* _CORE_mutex_Seize (interrupt blocking support)
|
* _CORE_mutex_Seize (interrupt blocking support)
|
||||||
|
|||||||
Reference in New Issue
Block a user