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>
|
||||
|
||||
* posix/src/mqueuesendsupp.c: Remove warning.
|
||||
|
||||
@@ -41,7 +41,7 @@ extern "C" {
|
||||
|
||||
void rtems_fatal_error_occurred(
|
||||
uint32_t the_error
|
||||
);
|
||||
) RTEMS_COMPILER_NO_RETURN_ATTRIBUTE;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -354,7 +354,8 @@ void _CORE_mutex_Seize_interrupt_blocking(
|
||||
* * If the caller is willing to wait
|
||||
* then they are blocked.
|
||||
*/
|
||||
#define _CORE_mutex_Seize( \
|
||||
|
||||
#define _CORE_mutex_Seize_body( \
|
||||
_the_mutex, _id, _wait, _timeout, _level ) \
|
||||
do { \
|
||||
if ( _Thread_Dispatch_disable_level \
|
||||
@@ -364,7 +365,8 @@ void _CORE_mutex_Seize_interrupt_blocking(
|
||||
_Internal_error_Occurred( \
|
||||
INTERNAL_ERROR_CORE, \
|
||||
FALSE, \
|
||||
18 /* called from wrong environment */); \
|
||||
INTERNAL_ERROR_MUTEX_OBTAIN_FROM_BAD_STATE \
|
||||
); \
|
||||
} \
|
||||
if ( _CORE_mutex_Seize_interrupt_trylock( _the_mutex, &_level ) ) { \
|
||||
if ( !_wait ) { \
|
||||
@@ -382,6 +384,18 @@ void _CORE_mutex_Seize_interrupt_blocking(
|
||||
} \
|
||||
} 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
|
||||
*
|
||||
|
||||
@@ -64,7 +64,8 @@ typedef enum {
|
||||
INTERNAL_ERROR_BAD_STACK_HOOK,
|
||||
INTERNAL_ERROR_BAD_ATTRIBUTES,
|
||||
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;
|
||||
|
||||
/**
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
#ifndef _RTEMS_SCORE_THREAD_INL
|
||||
#define _RTEMS_SCORE_THREAD_INL
|
||||
|
||||
#include <rtems/score/sysstate.h>
|
||||
|
||||
/**
|
||||
* @addtogroup ScoreThread
|
||||
* @{
|
||||
@@ -32,7 +34,13 @@
|
||||
|
||||
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/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
|
||||
*
|
||||
* _CORE_mutex_Seize (interrupt blocking support)
|
||||
|
||||
Reference in New Issue
Block a user