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:
Jennifer Averett
2008-01-25 20:14:45 +00:00
parent 41a7fef82b
commit 81f595760d
6 changed files with 48 additions and 5 deletions

View File

@@ -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.

View File

@@ -41,7 +41,7 @@ extern "C" {
void rtems_fatal_error_occurred(
uint32_t the_error
);
) RTEMS_COMPILER_NO_RETURN_ATTRIBUTE;
#ifdef __cplusplus
}

View File

@@ -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
*

View File

@@ -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;
/**

View File

@@ -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 );
}
/**

View File

@@ -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)