summaryrefslogtreecommitdiffstats
path: root/testsuites
diff options
context:
space:
mode:
Diffstat (limited to 'testsuites')
-rw-r--r--testsuites/psxtests/psxmsgq01/init.c9
-rw-r--r--testsuites/psxtests/psxsem01/init.c10
-rw-r--r--testsuites/support/include/tmacros.h55
3 files changed, 54 insertions, 20 deletions
diff --git a/testsuites/psxtests/psxmsgq01/init.c b/testsuites/psxtests/psxmsgq01/init.c
index 5d544ddeeb..de2965a715 100644
--- a/testsuites/psxtests/psxmsgq01/init.c
+++ b/testsuites/psxtests/psxmsgq01/init.c
@@ -61,15 +61,6 @@ void verify_timedout_mq_timedsend(int que, int is_blocking);
void verify_mq_send(void);
void verify_timed_receive(void);
-#define fatal_posix_mqd( _ptr, _msg ) \
- if ( (_ptr != (mqd_t) -1) ) { \
- check_dispatch_disable_level( 0 ); \
- printf( "\n%s FAILED -- expected (-1) got (%" PRId32 " - %d/%s)\n", \
- (_msg), _ptr, errno, strerror(errno) ); \
- FLUSH_OUTPUT(); \
- rtems_test_exit( -1 ); \
- }
-
typedef struct {
char msg[ 50 ];
int size;
diff --git a/testsuites/psxtests/psxsem01/init.c b/testsuites/psxtests/psxsem01/init.c
index ed741bda11..f377a4e68b 100644
--- a/testsuites/psxtests/psxsem01/init.c
+++ b/testsuites/psxtests/psxsem01/init.c
@@ -25,16 +25,6 @@ const char rtems_test_name[] = "PSXSEM 1";
/* forward declarations to avoid warnings */
void *POSIX_Init(void *argument);
-#define fatal_posix_sem( _ptr, _msg ) \
- if ( (_ptr != SEM_FAILED) ) { \
- check_dispatch_disable_level( 0 ); \
- printf( "\n%s FAILED -- expected (-1) got (%p - %d/%s)\n", \
- (_msg), _ptr, errno, strerror(errno) ); \
- FLUSH_OUTPUT(); \
- rtems_test_exit( -1 ); \
- }
-
-
#define MAX_SEMS 10
void *POSIX_Init(
diff --git a/testsuites/support/include/tmacros.h b/testsuites/support/include/tmacros.h
index 2b0df83eff..a67bb956e9 100644
--- a/testsuites/support/include/tmacros.h
+++ b/testsuites/support/include/tmacros.h
@@ -46,7 +46,7 @@ extern "C" {
* Check that that the dispatch disable level is proper for the
* mode/state of the test. Normally it should be 0 when in task space.
*
- * This test is only valid when in a non smp system. In an smp system
+ * This test is only valid when in a non-SMP system. In an smp system
* another cpu may be accessing the core at any point when this core
* does not have it locked.
*/
@@ -70,6 +70,32 @@ extern "C" {
#endif
/*
+ * Check that that the allocator mutex is not locked. It should never
+ * be locked unless inside a service which is allocating a resource.
+ *
+ * This test is only valid when in a non-SMP system. In an SMP system
+ * another cpu may be allocating a resource while we are computing.
+ */
+#if defined SMPTEST
+ #define check_if_allocator_mutex_is_unlocked()
+#else
+ #include <rtems/score/apimutex.h>
+ #define check_if_allocator_mutex_is_unlocked() \
+ do { \
+ if ( _RTEMS_Check_if_allocator_is_locked() ) { \
+ printk( \
+ "\nRTEMS Allocator Mutex is locked and should not be.\n" \
+ "Detected at %s:%d\n", \
+ __FILE__, \
+ __LINE__ \
+ ); \
+ FLUSH_OUTPUT(); \
+ rtems_test_exit( 1 ); \
+ } \
+ } while ( 0 )
+#endif
+
+/*
* These macros properly report errors within the Classic API
*/
#define directive_failed( _dirstat, _failmsg ) \
@@ -95,6 +121,7 @@ extern "C" {
#define fatal_directive_status_with_level( _stat, _desired, _msg, _level ) \
do { \
check_dispatch_disable_level( _level ); \
+ check_if_allocator_mutex_is_unlocked(); \
fatal_directive_check_status_only( _stat, _desired, _msg ); \
} while ( 0 )
@@ -112,6 +139,7 @@ extern "C" {
if ( (_stat != -1) && (errno) != (_desired) ) { \
long statx = _stat; \
check_dispatch_disable_level( 0 ); \
+ check_if_allocator_mutex_is_unlocked(); \
printf( "\n%s FAILED -- expected (%d - %s) got (%ld %d - %s)\n", \
(_msg), _desired, strerror(_desired), \
statx, errno, strerror(errno) ); \
@@ -125,6 +153,7 @@ extern "C" {
#define fatal_posix_service_status_with_level( _stat, _desired, _msg, _level ) \
do { \
check_dispatch_disable_level( _level ); \
+ check_if_allocator_mutex_is_unlocked(); \
if ( (_stat) != (_desired) ) { \
printf( "\n%s FAILED -- expected (%d - %s) got (%d - %s)\n", \
(_msg), _desired, strerror(_desired), _stat, strerror(_stat) ); \
@@ -136,6 +165,30 @@ extern "C" {
} while ( 0 )
/*
+ * This macro evaluates the semaphore id returned.
+ */
+#define fatal_posix_sem( _ptr, _msg ) \
+ if ( (_ptr != SEM_FAILED) ) { \
+ check_dispatch_disable_level( 0 ); \
+ printf( "\n%s FAILED -- expected (-1) got (%p - %d/%s)\n", \
+ (_msg), _ptr, errno, strerror(errno) ); \
+ FLUSH_OUTPUT(); \
+ rtems_test_exit( -1 ); \
+ }
+
+/*
+ * This macro evaluates the message queue id returned.
+ */
+#define fatal_posix_mqd( _ptr, _msg ) \
+ if ( (_ptr != (mqd_t) -1) ) { \
+ check_dispatch_disable_level( 0 ); \
+ printf( "\n%s FAILED -- expected (-1) got (%" PRId32 " - %d/%s)\n", \
+ (_msg), _ptr, errno, strerror(errno) ); \
+ FLUSH_OUTPUT(); \
+ rtems_test_exit( -1 ); \
+ }
+
+/*
* Generic integer version of the error reporting
*/