Index: c/src/tests/psxtests/psxsem01/init.c
===================================================================
--- c/src/tests/psxtests/psxsem01/init.c	(revision 53fb837afc4285486e318bcb614c911bbe9b1348)
+++ c/src/tests/psxtests/psxsem01/init.c	(revision 85d62357bbef6e3d8d9cfcbe2964a9e850de98a7)
@@ -26,15 +26,15 @@
     status = sem_init(&sems[i], 0, i);
     sprintf(failure_msg, "sem_init %d", i );
-    fatal_directive_status( status, 0, failure_msg);
+    fatal_posix_service_status( status, 0, failure_msg);
   }
   puts( "Init: sem_init - UNSUCCESSFUL (ENOSPC)" );
   status = sem_init(&sem2, 0, 1);
-  fatal_directive_status( status, -1, "sem_init error return status");
-  fatal_directive_status( errno, ENOSPC, "sem_init errorno ENOSPC" );
+  fatal_posix_service_status( status, -1, "sem_init error return status");
+  fatal_posix_service_status( errno, ENOSPC, "sem_init errorno ENOSPC" );
  
   puts( "Init: sem_init - UNSUCCESSFUL (ENOSYS -- pshared not supported)" );
   status = sem_init(&sem2, 1, 1);
-  fatal_directive_status( status, -1, "sem_init error return status");
-  fatal_directive_status( errno, ENOSYS, "sem_init errno set to ENOSYS");
+  fatal_posix_service_status( status, -1, "sem_init error return status");
+  fatal_posix_service_status( errno, ENOSYS, "sem_init errno set to ENOSYS");
   
   puts( "Init: sem_getvalue - SUCCESSFUL ");
@@ -42,51 +42,51 @@
     status = sem_getvalue(&sems[i], &value);
     sprintf( failure_msg, "sem_getvalue %d", i );
-    fatal_directive_status( status, 0, failure_msg );
-    fatal_directive_status( value, i, "sem_getvalue correct value" );
+    fatal_posix_service_status( status, 0, failure_msg );
+    fatal_posix_service_status( value, i, "sem_getvalue correct value" );
   }
   puts( "Init: sem_getvalue - UNSUCCESSFUL ");
   status = sem_getvalue(&sem2, &value);
-  fatal_directive_status( status, -1, "sem_getvalue error return status"); 
-  fatal_directive_status( errno, EINVAL, "sem_getvalue errno EINVAL");
+  fatal_posix_service_status( status, -1, "sem_getvalue error return status"); 
+  fatal_posix_service_status( errno, EINVAL, "sem_getvalue errno EINVAL");
 
   puts( "Init: sem_destroy - SUCCESSFUL" );
   status = sem_destroy(&sems[0]);
-  fatal_directive_status( status, 0, "sem_destroy semaphore 0"); 
+  fatal_posix_service_status( status, 0, "sem_destroy semaphore 0"); 
 
   puts( "Init: sem_destroy - UNSUCCESSFUL (EINVAL)" );
   status = sem_destroy(&sem2);
-  fatal_directive_status( status, -1, "sem_destroy error return status");
-  fatal_directive_status( errno, EINVAL, "sem_destroy errno EINVAL");
+  fatal_posix_service_status( status, -1, "sem_destroy error return status");
+  fatal_posix_service_status( errno, EINVAL, "sem_destroy errno EINVAL");
 
   puts( "Init: sem_wait - SUCCESSFUL" );
   status = sem_wait(&sems[1]);
-  fatal_directive_status( status, 0, "sem_wait semaphore 1"); 
+  fatal_posix_service_status( status, 0, "sem_wait semaphore 1"); 
 
   puts( "Init: sem_wait - UNSUCCESSFUL (EINVAL)" );
   status = sem_wait(&sem2);
-  fatal_directive_status( status, -1, "sem_wait error return status");
-  fatal_directive_status( errno, EINVAL, "sem_wait errno EINVAL");
+  fatal_posix_service_status( status, -1, "sem_wait error return status");
+  fatal_posix_service_status( errno, EINVAL, "sem_wait errno EINVAL");
 
   puts( "Init: sem_post - SUCCESSFUL" );
   status = sem_post(&sems[1]);
-  fatal_directive_status( status, 0, "sem_post semaphore 1"); 
+  fatal_posix_service_status( status, 0, "sem_post semaphore 1"); 
 
   puts( "Init: sem_wait - SUCCESSFUL (after a sem_post)" );
   status = sem_wait(&sems[1]);
-  fatal_directive_status( status, 0, "sem_wait semaphore 1"); 
+  fatal_posix_service_status( status, 0, "sem_wait semaphore 1"); 
 
   puts( "Init: sem_trywait - SUCCESSFUL" );
   status = sem_trywait(&sems[2]);
-  fatal_directive_status( status, 0, "sem_trywait semaphore 2"); 
+  fatal_posix_service_status( status, 0, "sem_trywait semaphore 2"); 
 
   puts( "Init: sem_trywait - UNSUCCESSFUL (EAGAIN)" );
   status = sem_trywait(&sems[1]);
-  fatal_directive_status( status, -1, "sem_trywait error return status");
-  fatal_directive_status( errno, EAGAIN, "sem_trywait errno EAGAIN");
+  fatal_posix_service_status( status, -1, "sem_trywait error return status");
+  fatal_posix_service_status( errno, EAGAIN, "sem_trywait errno EAGAIN");
 
   puts( "Init: sem_trywait - UNSUCCESSFUL (EINVAL)" );
   status = sem_trywait(&sem2);
-  fatal_directive_status( status, -1, "sem_trywait error return status");
-  fatal_directive_status( errno, EINVAL, "sem_trywait errno EINVAL");
+  fatal_posix_service_status( status, -1, "sem_trywait error return status");
+  fatal_posix_service_status( errno, EINVAL, "sem_trywait errno EINVAL");
 
   puts( "Init: sem_timedwait - SUCCESSFUL" );
@@ -94,20 +94,20 @@
   waittime.tv_nsec = 100;
   status = sem_timedwait(&sems[2], &waittime);
-  fatal_directive_status( status, 0, "sem_timedwait semaphore 2"); 
+  fatal_posix_service_status( status, 0, "sem_timedwait semaphore 2"); 
 
   puts( "Init: sem_timedwait - UNSUCCESSFUL (ETIMEDOUT)" );
   status = sem_timedwait(&sems[1], &waittime);
-  fatal_directive_status( status, -1, "sem_timedwait error return status");
-  fatal_directive_status( errno, ETIMEDOUT, "sem_timedwait errno ETIMEDOUT");
+  fatal_posix_service_status( status, -1, "sem_timedwait error return status");
+  fatal_posix_service_status( errno, ETIMEDOUT, "sem_timedwait errno ETIMEDOUT");
 
   puts( "Init: sem_timedwait - UNSUCCESSFUL (EINVAL)" );
   status = sem_timedwait(&sem2, &waittime);
-  fatal_directive_status( status, -1, "sem_timedwait error return status");
-  fatal_directive_status( errno, EINVAL, "sem_init errno EINVAL");
+  fatal_posix_service_status( status, -1, "sem_timedwait error return status");
+  fatal_posix_service_status( errno, EINVAL, "sem_init errno EINVAL");
 
   puts( "Init: sem_post - UNSUCCESSFUL (EINVAL)" );
   status = sem_post(&sem2);
-  fatal_directive_status( status, -1, "sem_post error return status");
-  fatal_directive_status( errno, EINVAL, "sem_post errno EINVAL");
+  fatal_posix_service_status( status, -1, "sem_post error return status");
+  fatal_posix_service_status( errno, EINVAL, "sem_post errno EINVAL");
 
   puts( "Init: sem_destroy - SUCCESSFUL" );
@@ -115,5 +115,5 @@
     status = sem_destroy(&sems[i]);
     sprintf( failure_msg, "sem_destroy %d", i );
-    fatal_directive_status( status, 0, failure_msg ); 
+    fatal_posix_service_status( status, 0, failure_msg ); 
   }
 
@@ -130,13 +130,13 @@
   puts( "Init: sem_open - Create an Existing sem (EEXIST)" );
   n_sem2 = sem_open("sem1", O_CREAT | O_EXCL, 00777, 1);
-  fatal_directive_status( 
+  fatal_posix_service_status( 
     (int) n_sem2, (int ) SEM_FAILED, "sem_open error return status" );
-  fatal_directive_status( errno, EEXIST,  "sem_open errno EEXIST");
+  fatal_posix_service_status( errno, EEXIST,  "sem_open errno EEXIST");
 
   puts( "Init: sem_open - Open new sem without create flag (ENOENT)" );
   n_sem2 = sem_open("sem3", O_EXCL, 00777, 1);
-  fatal_directive_status( 
+  fatal_posix_service_status( 
     (int) n_sem2, (int ) SEM_FAILED, "sem_open error return status" );
-  fatal_directive_status( errno, ENOENT,  "sem_open errno EEXIST"); 
+  fatal_posix_service_status( errno, ENOENT,  "sem_open errno EEXIST"); 
 
   /*
@@ -153,5 +153,5 @@
   puts( "Init: sem_wait on sem1" );
   status = sem_wait(n_sem1);
-  fatal_directive_status( status, 0, "sem_wait opened semaphore"); 
+  fatal_posix_service_status( status, 0, "sem_wait opened semaphore"); 
 
   /*
@@ -161,5 +161,5 @@
   puts( "Init: sem_open - Open an existing sem ( same id )" );
   n_sem2 = sem_open("sem1", 0 );
-  fatal_directive_status( 
+  fatal_posix_service_status( 
     (int) n_sem2, (int ) n_sem1, "sem_open error return status" );
   
@@ -171,5 +171,5 @@
   puts( "Init: sem_unlink - sem1 SUCCESSFUL" );
   status = sem_unlink( "sem1" );
-  fatal_directive_status( status, 0, "sem_unlink locked semaphore"); 
+  fatal_posix_service_status( status, 0, "sem_unlink locked semaphore"); 
 
   puts( "Init: sem_open - Reopen sem1 SUCCESSFUL with a different id" );
@@ -184,5 +184,5 @@
   puts( "Init: sem_close (1) - SUCCESSFUL" );
   status = sem_close( n_sem1 );
-  fatal_directive_status( status, 0, "sem_close semaphore"); 
+  fatal_posix_service_status( status, 0, "sem_close semaphore"); 
 
 
@@ -194,19 +194,19 @@
   puts( "Init: sem_close (2) - SUCCESSFUL" );
   status = sem_close( n_sem2 );
-  fatal_directive_status( status, 0, "sem_close semaphore"); 
+  fatal_posix_service_status( status, 0, "sem_close semaphore"); 
 
   puts( "Init: sem_unlink - sem1 (2) SUCCESSFUL" );
   status = sem_unlink( "sem1" );
-  fatal_directive_status( status, 0, "sem_unlink locked semaphore"); 
+  fatal_posix_service_status( status, 0, "sem_unlink locked semaphore"); 
 
   puts( "Init: sem_close - UNSUCCESSFUL (EINVAL)" );
   status = sem_close(n_sem2);
-  fatal_directive_status( status, -1, "sem_close error return status");
-  fatal_directive_status( errno, EINVAL, "sem_close errno EINVAL");
+  fatal_posix_service_status( status, -1, "sem_close error return status");
+  fatal_posix_service_status( errno, EINVAL, "sem_close errno EINVAL");
 
   puts( "Init: sem_unlink - UNSUCCESSFUL (ENOENT)" );
   status = sem_unlink("sem1");
-  fatal_directive_status( status, -1, "sem_unlink error return status");
-  fatal_directive_status( errno, ENOENT, "sem_close errno EINVAL");
+  fatal_posix_service_status( status, -1, "sem_unlink error return status");
+  fatal_posix_service_status( errno, ENOENT, "sem_close errno EINVAL");
 
 
@@ -217,11 +217,11 @@
   puts( "Init: sem_unlink (NULL) - EINVAL" );
   status = sem_unlink( NULL );
-  fatal_directive_status( status, -1, "sem_unlink error return status");
-  fatal_directive_status( errno, EINVAL, "sem_unlink errno value"); 
+  fatal_posix_service_status( status, -1, "sem_unlink error return status");
+  fatal_posix_service_status( errno, EINVAL, "sem_unlink errno value"); 
 
   puts( "Init: sem_unlink (\"\") - EINVAL" );
   status = sem_unlink( "" );
-  fatal_directive_status( status, -1, "sem_unlink error return status");
-  fatal_directive_status( errno, EINVAL, "sem_unlink errno value"); 
+  fatal_posix_service_status( status, -1, "sem_unlink error return status");
+  fatal_posix_service_status( errno, EINVAL, "sem_unlink errno value"); 
 
   /*
@@ -232,6 +232,6 @@
   puts( "Init: sem_unlink - UNSUCCESSFUL (ENOENT)" );
   status = sem_unlink("sem2");
-  fatal_directive_status( status, -1, "sem_unlink error return status");
-  fatal_directive_status( errno, ENOENT, "sem_unlink errno ENOENT");
+  fatal_posix_service_status( status, -1, "sem_unlink error return status");
+  fatal_posix_service_status( errno, ENOENT, "sem_unlink errno ENOENT");
   assert( (status == -1) && (errno == ENOENT) );
 
Index: c/src/tests/support/include/tmacros.h
===================================================================
--- c/src/tests/support/include/tmacros.h	(revision 53fb837afc4285486e318bcb614c911bbe9b1348)
+++ c/src/tests/support/include/tmacros.h	(revision 85d62357bbef6e3d8d9cfcbe2964a9e850de98a7)
@@ -25,4 +25,5 @@
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 #include <assert.h>
 #include <rtems/error.h>
@@ -48,4 +49,8 @@
   } while ( 0 ) 
 
+/*
+ *  These macros properly report errors within the Classic API
+ */
+
 #define directive_failed( _dirstat, _failmsg )  \
  fatal_directive_status( _dirstat, RTEMS_SUCCESSFUL, _failmsg )
@@ -68,4 +73,59 @@
     } \
   } while ( 0 ) 
+
+/*
+ *  These macros properly report errors from the POSIX API
+ */
+
+#define posix_service_failed( _dirstat, _failmsg )  \
+ fatal_posix_service_status( _dirstat, RTEMS_SUCCESSFUL, _failmsg )
+
+#define posix_service_failed_with_level( _dirstat, _failmsg, _level )  \
+ fatal_posix_service_status_with_level( \
+      _dirstat, RTEMS_SUCCESSFUL, _failmsg, _level )
+
+#define fatal_posix_service_status( _stat, _desired, _msg ) \
+  fatal_posix_service_status_with_level( _stat, _desired, _msg, 0 )
+
+#define fatal_posix_service_status_with_level( _stat, _desired, _msg, _level ) \
+  do { \
+    check_dispatch_disable_level( _level ); \
+    if ( (_stat) != (_desired) ) { \
+      printf( "\n%s FAILED -- expected (%s) got (%s)\n", \
+              (_msg), strerror(_desired), strerror(_stat) ); \
+      fflush(stdout); \
+      exit( _stat ); \
+    } \
+  } while ( 0 )
+
+/*
+ *  Generic integer version of the error reporting
+ */
+
+#define int_service_failed( _dirstat, _failmsg )  \
+ fatal_int_service_status( _dirstat, RTEMS_SUCCESSFUL, _failmsg )
+
+#define int_service_failed_with_level( _dirstat, _failmsg, _level )  \
+ fatal_int_service_status_with_level( \
+      _dirstat, RTEMS_SUCCESSFUL, _failmsg, _level )
+
+#define fatal_int_service_status( _stat, _desired, _msg ) \
+  fatal_int_service_status_with_level( _stat, _desired, _msg, 0 )
+
+#define fatal_int_service_status_with_level( _stat, _desired, _msg, _level ) \
+  do { \
+    check_dispatch_disable_level( _level ); \
+    if ( (_stat) != (_desired) ) { \
+      printf( "\n%s FAILED -- expected (%d) got (%d)\n", \
+              (_msg), (_desired), (_stat) ); \
+      fflush(stdout); \
+      exit( _stat ); \
+    } \
+  } while ( 0 )
+
+
+/*
+ *  Print the time
+ */
 
 #define sprint_time(_str, _s1, _tb, _s2) \
Index: testsuites/psxtests/psxsem01/init.c
===================================================================
--- testsuites/psxtests/psxsem01/init.c	(revision 53fb837afc4285486e318bcb614c911bbe9b1348)
+++ testsuites/psxtests/psxsem01/init.c	(revision 85d62357bbef6e3d8d9cfcbe2964a9e850de98a7)
@@ -26,15 +26,15 @@
     status = sem_init(&sems[i], 0, i);
     sprintf(failure_msg, "sem_init %d", i );
-    fatal_directive_status( status, 0, failure_msg);
+    fatal_posix_service_status( status, 0, failure_msg);
   }
   puts( "Init: sem_init - UNSUCCESSFUL (ENOSPC)" );
   status = sem_init(&sem2, 0, 1);
-  fatal_directive_status( status, -1, "sem_init error return status");
-  fatal_directive_status( errno, ENOSPC, "sem_init errorno ENOSPC" );
+  fatal_posix_service_status( status, -1, "sem_init error return status");
+  fatal_posix_service_status( errno, ENOSPC, "sem_init errorno ENOSPC" );
  
   puts( "Init: sem_init - UNSUCCESSFUL (ENOSYS -- pshared not supported)" );
   status = sem_init(&sem2, 1, 1);
-  fatal_directive_status( status, -1, "sem_init error return status");
-  fatal_directive_status( errno, ENOSYS, "sem_init errno set to ENOSYS");
+  fatal_posix_service_status( status, -1, "sem_init error return status");
+  fatal_posix_service_status( errno, ENOSYS, "sem_init errno set to ENOSYS");
   
   puts( "Init: sem_getvalue - SUCCESSFUL ");
@@ -42,51 +42,51 @@
     status = sem_getvalue(&sems[i], &value);
     sprintf( failure_msg, "sem_getvalue %d", i );
-    fatal_directive_status( status, 0, failure_msg );
-    fatal_directive_status( value, i, "sem_getvalue correct value" );
+    fatal_posix_service_status( status, 0, failure_msg );
+    fatal_posix_service_status( value, i, "sem_getvalue correct value" );
   }
   puts( "Init: sem_getvalue - UNSUCCESSFUL ");
   status = sem_getvalue(&sem2, &value);
-  fatal_directive_status( status, -1, "sem_getvalue error return status"); 
-  fatal_directive_status( errno, EINVAL, "sem_getvalue errno EINVAL");
+  fatal_posix_service_status( status, -1, "sem_getvalue error return status"); 
+  fatal_posix_service_status( errno, EINVAL, "sem_getvalue errno EINVAL");
 
   puts( "Init: sem_destroy - SUCCESSFUL" );
   status = sem_destroy(&sems[0]);
-  fatal_directive_status( status, 0, "sem_destroy semaphore 0"); 
+  fatal_posix_service_status( status, 0, "sem_destroy semaphore 0"); 
 
   puts( "Init: sem_destroy - UNSUCCESSFUL (EINVAL)" );
   status = sem_destroy(&sem2);
-  fatal_directive_status( status, -1, "sem_destroy error return status");
-  fatal_directive_status( errno, EINVAL, "sem_destroy errno EINVAL");
+  fatal_posix_service_status( status, -1, "sem_destroy error return status");
+  fatal_posix_service_status( errno, EINVAL, "sem_destroy errno EINVAL");
 
   puts( "Init: sem_wait - SUCCESSFUL" );
   status = sem_wait(&sems[1]);
-  fatal_directive_status( status, 0, "sem_wait semaphore 1"); 
+  fatal_posix_service_status( status, 0, "sem_wait semaphore 1"); 
 
   puts( "Init: sem_wait - UNSUCCESSFUL (EINVAL)" );
   status = sem_wait(&sem2);
-  fatal_directive_status( status, -1, "sem_wait error return status");
-  fatal_directive_status( errno, EINVAL, "sem_wait errno EINVAL");
+  fatal_posix_service_status( status, -1, "sem_wait error return status");
+  fatal_posix_service_status( errno, EINVAL, "sem_wait errno EINVAL");
 
   puts( "Init: sem_post - SUCCESSFUL" );
   status = sem_post(&sems[1]);
-  fatal_directive_status( status, 0, "sem_post semaphore 1"); 
+  fatal_posix_service_status( status, 0, "sem_post semaphore 1"); 
 
   puts( "Init: sem_wait - SUCCESSFUL (after a sem_post)" );
   status = sem_wait(&sems[1]);
-  fatal_directive_status( status, 0, "sem_wait semaphore 1"); 
+  fatal_posix_service_status( status, 0, "sem_wait semaphore 1"); 
 
   puts( "Init: sem_trywait - SUCCESSFUL" );
   status = sem_trywait(&sems[2]);
-  fatal_directive_status( status, 0, "sem_trywait semaphore 2"); 
+  fatal_posix_service_status( status, 0, "sem_trywait semaphore 2"); 
 
   puts( "Init: sem_trywait - UNSUCCESSFUL (EAGAIN)" );
   status = sem_trywait(&sems[1]);
-  fatal_directive_status( status, -1, "sem_trywait error return status");
-  fatal_directive_status( errno, EAGAIN, "sem_trywait errno EAGAIN");
+  fatal_posix_service_status( status, -1, "sem_trywait error return status");
+  fatal_posix_service_status( errno, EAGAIN, "sem_trywait errno EAGAIN");
 
   puts( "Init: sem_trywait - UNSUCCESSFUL (EINVAL)" );
   status = sem_trywait(&sem2);
-  fatal_directive_status( status, -1, "sem_trywait error return status");
-  fatal_directive_status( errno, EINVAL, "sem_trywait errno EINVAL");
+  fatal_posix_service_status( status, -1, "sem_trywait error return status");
+  fatal_posix_service_status( errno, EINVAL, "sem_trywait errno EINVAL");
 
   puts( "Init: sem_timedwait - SUCCESSFUL" );
@@ -94,20 +94,20 @@
   waittime.tv_nsec = 100;
   status = sem_timedwait(&sems[2], &waittime);
-  fatal_directive_status( status, 0, "sem_timedwait semaphore 2"); 
+  fatal_posix_service_status( status, 0, "sem_timedwait semaphore 2"); 
 
   puts( "Init: sem_timedwait - UNSUCCESSFUL (ETIMEDOUT)" );
   status = sem_timedwait(&sems[1], &waittime);
-  fatal_directive_status( status, -1, "sem_timedwait error return status");
-  fatal_directive_status( errno, ETIMEDOUT, "sem_timedwait errno ETIMEDOUT");
+  fatal_posix_service_status( status, -1, "sem_timedwait error return status");
+  fatal_posix_service_status( errno, ETIMEDOUT, "sem_timedwait errno ETIMEDOUT");
 
   puts( "Init: sem_timedwait - UNSUCCESSFUL (EINVAL)" );
   status = sem_timedwait(&sem2, &waittime);
-  fatal_directive_status( status, -1, "sem_timedwait error return status");
-  fatal_directive_status( errno, EINVAL, "sem_init errno EINVAL");
+  fatal_posix_service_status( status, -1, "sem_timedwait error return status");
+  fatal_posix_service_status( errno, EINVAL, "sem_init errno EINVAL");
 
   puts( "Init: sem_post - UNSUCCESSFUL (EINVAL)" );
   status = sem_post(&sem2);
-  fatal_directive_status( status, -1, "sem_post error return status");
-  fatal_directive_status( errno, EINVAL, "sem_post errno EINVAL");
+  fatal_posix_service_status( status, -1, "sem_post error return status");
+  fatal_posix_service_status( errno, EINVAL, "sem_post errno EINVAL");
 
   puts( "Init: sem_destroy - SUCCESSFUL" );
@@ -115,5 +115,5 @@
     status = sem_destroy(&sems[i]);
     sprintf( failure_msg, "sem_destroy %d", i );
-    fatal_directive_status( status, 0, failure_msg ); 
+    fatal_posix_service_status( status, 0, failure_msg ); 
   }
 
@@ -130,13 +130,13 @@
   puts( "Init: sem_open - Create an Existing sem (EEXIST)" );
   n_sem2 = sem_open("sem1", O_CREAT | O_EXCL, 00777, 1);
-  fatal_directive_status( 
+  fatal_posix_service_status( 
     (int) n_sem2, (int ) SEM_FAILED, "sem_open error return status" );
-  fatal_directive_status( errno, EEXIST,  "sem_open errno EEXIST");
+  fatal_posix_service_status( errno, EEXIST,  "sem_open errno EEXIST");
 
   puts( "Init: sem_open - Open new sem without create flag (ENOENT)" );
   n_sem2 = sem_open("sem3", O_EXCL, 00777, 1);
-  fatal_directive_status( 
+  fatal_posix_service_status( 
     (int) n_sem2, (int ) SEM_FAILED, "sem_open error return status" );
-  fatal_directive_status( errno, ENOENT,  "sem_open errno EEXIST"); 
+  fatal_posix_service_status( errno, ENOENT,  "sem_open errno EEXIST"); 
 
   /*
@@ -153,5 +153,5 @@
   puts( "Init: sem_wait on sem1" );
   status = sem_wait(n_sem1);
-  fatal_directive_status( status, 0, "sem_wait opened semaphore"); 
+  fatal_posix_service_status( status, 0, "sem_wait opened semaphore"); 
 
   /*
@@ -161,5 +161,5 @@
   puts( "Init: sem_open - Open an existing sem ( same id )" );
   n_sem2 = sem_open("sem1", 0 );
-  fatal_directive_status( 
+  fatal_posix_service_status( 
     (int) n_sem2, (int ) n_sem1, "sem_open error return status" );
   
@@ -171,5 +171,5 @@
   puts( "Init: sem_unlink - sem1 SUCCESSFUL" );
   status = sem_unlink( "sem1" );
-  fatal_directive_status( status, 0, "sem_unlink locked semaphore"); 
+  fatal_posix_service_status( status, 0, "sem_unlink locked semaphore"); 
 
   puts( "Init: sem_open - Reopen sem1 SUCCESSFUL with a different id" );
@@ -184,5 +184,5 @@
   puts( "Init: sem_close (1) - SUCCESSFUL" );
   status = sem_close( n_sem1 );
-  fatal_directive_status( status, 0, "sem_close semaphore"); 
+  fatal_posix_service_status( status, 0, "sem_close semaphore"); 
 
 
@@ -194,19 +194,19 @@
   puts( "Init: sem_close (2) - SUCCESSFUL" );
   status = sem_close( n_sem2 );
-  fatal_directive_status( status, 0, "sem_close semaphore"); 
+  fatal_posix_service_status( status, 0, "sem_close semaphore"); 
 
   puts( "Init: sem_unlink - sem1 (2) SUCCESSFUL" );
   status = sem_unlink( "sem1" );
-  fatal_directive_status( status, 0, "sem_unlink locked semaphore"); 
+  fatal_posix_service_status( status, 0, "sem_unlink locked semaphore"); 
 
   puts( "Init: sem_close - UNSUCCESSFUL (EINVAL)" );
   status = sem_close(n_sem2);
-  fatal_directive_status( status, -1, "sem_close error return status");
-  fatal_directive_status( errno, EINVAL, "sem_close errno EINVAL");
+  fatal_posix_service_status( status, -1, "sem_close error return status");
+  fatal_posix_service_status( errno, EINVAL, "sem_close errno EINVAL");
 
   puts( "Init: sem_unlink - UNSUCCESSFUL (ENOENT)" );
   status = sem_unlink("sem1");
-  fatal_directive_status( status, -1, "sem_unlink error return status");
-  fatal_directive_status( errno, ENOENT, "sem_close errno EINVAL");
+  fatal_posix_service_status( status, -1, "sem_unlink error return status");
+  fatal_posix_service_status( errno, ENOENT, "sem_close errno EINVAL");
 
 
@@ -217,11 +217,11 @@
   puts( "Init: sem_unlink (NULL) - EINVAL" );
   status = sem_unlink( NULL );
-  fatal_directive_status( status, -1, "sem_unlink error return status");
-  fatal_directive_status( errno, EINVAL, "sem_unlink errno value"); 
+  fatal_posix_service_status( status, -1, "sem_unlink error return status");
+  fatal_posix_service_status( errno, EINVAL, "sem_unlink errno value"); 
 
   puts( "Init: sem_unlink (\"\") - EINVAL" );
   status = sem_unlink( "" );
-  fatal_directive_status( status, -1, "sem_unlink error return status");
-  fatal_directive_status( errno, EINVAL, "sem_unlink errno value"); 
+  fatal_posix_service_status( status, -1, "sem_unlink error return status");
+  fatal_posix_service_status( errno, EINVAL, "sem_unlink errno value"); 
 
   /*
@@ -232,6 +232,6 @@
   puts( "Init: sem_unlink - UNSUCCESSFUL (ENOENT)" );
   status = sem_unlink("sem2");
-  fatal_directive_status( status, -1, "sem_unlink error return status");
-  fatal_directive_status( errno, ENOENT, "sem_unlink errno ENOENT");
+  fatal_posix_service_status( status, -1, "sem_unlink error return status");
+  fatal_posix_service_status( errno, ENOENT, "sem_unlink errno ENOENT");
   assert( (status == -1) && (errno == ENOENT) );
 
Index: testsuites/support/include/tmacros.h
===================================================================
--- testsuites/support/include/tmacros.h	(revision 53fb837afc4285486e318bcb614c911bbe9b1348)
+++ testsuites/support/include/tmacros.h	(revision 85d62357bbef6e3d8d9cfcbe2964a9e850de98a7)
@@ -25,4 +25,5 @@
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 #include <assert.h>
 #include <rtems/error.h>
@@ -48,4 +49,8 @@
   } while ( 0 ) 
 
+/*
+ *  These macros properly report errors within the Classic API
+ */
+
 #define directive_failed( _dirstat, _failmsg )  \
  fatal_directive_status( _dirstat, RTEMS_SUCCESSFUL, _failmsg )
@@ -68,4 +73,59 @@
     } \
   } while ( 0 ) 
+
+/*
+ *  These macros properly report errors from the POSIX API
+ */
+
+#define posix_service_failed( _dirstat, _failmsg )  \
+ fatal_posix_service_status( _dirstat, RTEMS_SUCCESSFUL, _failmsg )
+
+#define posix_service_failed_with_level( _dirstat, _failmsg, _level )  \
+ fatal_posix_service_status_with_level( \
+      _dirstat, RTEMS_SUCCESSFUL, _failmsg, _level )
+
+#define fatal_posix_service_status( _stat, _desired, _msg ) \
+  fatal_posix_service_status_with_level( _stat, _desired, _msg, 0 )
+
+#define fatal_posix_service_status_with_level( _stat, _desired, _msg, _level ) \
+  do { \
+    check_dispatch_disable_level( _level ); \
+    if ( (_stat) != (_desired) ) { \
+      printf( "\n%s FAILED -- expected (%s) got (%s)\n", \
+              (_msg), strerror(_desired), strerror(_stat) ); \
+      fflush(stdout); \
+      exit( _stat ); \
+    } \
+  } while ( 0 )
+
+/*
+ *  Generic integer version of the error reporting
+ */
+
+#define int_service_failed( _dirstat, _failmsg )  \
+ fatal_int_service_status( _dirstat, RTEMS_SUCCESSFUL, _failmsg )
+
+#define int_service_failed_with_level( _dirstat, _failmsg, _level )  \
+ fatal_int_service_status_with_level( \
+      _dirstat, RTEMS_SUCCESSFUL, _failmsg, _level )
+
+#define fatal_int_service_status( _stat, _desired, _msg ) \
+  fatal_int_service_status_with_level( _stat, _desired, _msg, 0 )
+
+#define fatal_int_service_status_with_level( _stat, _desired, _msg, _level ) \
+  do { \
+    check_dispatch_disable_level( _level ); \
+    if ( (_stat) != (_desired) ) { \
+      printf( "\n%s FAILED -- expected (%d) got (%d)\n", \
+              (_msg), (_desired), (_stat) ); \
+      fflush(stdout); \
+      exit( _stat ); \
+    } \
+  } while ( 0 )
+
+
+/*
+ *  Print the time
+ */
 
 #define sprint_time(_str, _s1, _tb, _s2) \
