summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2000-01-13 19:26:38 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2000-01-13 19:26:38 +0000
commit85d62357bbef6e3d8d9cfcbe2964a9e850de98a7 (patch)
treed8ed5885fc3df698e7624cc0b516f0a48e434529 /c
parentPOSIX message queues now include complete functionality including (diff)
downloadrtems-85d62357bbef6e3d8d9cfcbe2964a9e850de98a7.tar.bz2
Changed error checking macros for POSIX.
Diffstat (limited to 'c')
-rw-r--r--c/src/tests/psxtests/psxsem01/init.c100
-rw-r--r--c/src/tests/support/include/tmacros.h60
2 files changed, 110 insertions, 50 deletions
diff --git a/c/src/tests/psxtests/psxsem01/init.c b/c/src/tests/psxtests/psxsem01/init.c
index b81de1d12e..b39e2e0ada 100644
--- a/c/src/tests/psxtests/psxsem01/init.c
+++ b/c/src/tests/psxtests/psxsem01/init.c
@@ -25,96 +25,96 @@ void *POSIX_Init(
for (i = 0; i < CONFIGURE_MAXIMUM_POSIX_SEMAPHORES; i++) {
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 ");
for (i = 0; i < CONFIGURE_MAXIMUM_POSIX_SEMAPHORES; i++) {
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" );
waittime.tv_sec = 0;
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" );
for (i = 1; i < CONFIGURE_MAXIMUM_POSIX_SEMAPHORES; i++) {
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 );
}
/* Modes are currently unsupported */
@@ -129,15 +129,15 @@ void *POSIX_Init(
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");
/*
* XXX - Could not hit the following errors:
@@ -152,7 +152,7 @@ void *POSIX_Init(
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");
/*
* Validate a second open returns the same semaphore.
@@ -160,7 +160,7 @@ void *POSIX_Init(
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" );
/*
@@ -170,7 +170,7 @@ void *POSIX_Init(
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" );
n_sem2 = sem_open( "sem1", O_CREAT | O_EXCL, 00777, 1);
@@ -183,7 +183,7 @@ void *POSIX_Init(
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");
/*
@@ -193,21 +193,21 @@ void *POSIX_Init(
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");
/*
@@ -216,13 +216,13 @@ void *POSIX_Init(
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");
/*
* XXX - Cant' create location OBJECTS_ERROR or OBJECTS_REMOTE.
@@ -231,8 +231,8 @@ void *POSIX_Init(
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) );
diff --git a/c/src/tests/support/include/tmacros.h b/c/src/tests/support/include/tmacros.h
index 2e7925f809..6009ef473e 100644
--- a/c/src/tests/support/include/tmacros.h
+++ b/c/src/tests/support/include/tmacros.h
@@ -24,6 +24,7 @@ extern "C" {
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include <assert.h>
#include <rtems/error.h>
@@ -47,6 +48,10 @@ extern "C" {
} \
} while ( 0 )
+/*
+ * These macros properly report errors within the Classic API
+ */
+
#define directive_failed( _dirstat, _failmsg ) \
fatal_directive_status( _dirstat, RTEMS_SUCCESSFUL, _failmsg )
@@ -68,6 +73,61 @@ extern "C" {
} \
} 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) \
do { \
sprintf( (str), "%s%02d:%02d:%02d %02d/%02d/%04d%s", \