mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-09-23 15:28:29 +08:00
2009-09-13 Joel Sherrill <joel.sherrill@oarcorp.com>
* psxclock/init.c, psxclock/psxclock.scn, psxenosys/init.c, psxenosys/psxenosys.scn, psxsignal03/Makefile.am, psxsignal03/init.c, psxsignal04/Makefile.am: Move test cases which needed to be executed when POSIX is disabled to psxclock so they will be.
This commit is contained in:
@@ -1,3 +1,10 @@
|
||||
2009-09-13 Joel Sherrill <joel.sherrill@oarcorp.com>
|
||||
|
||||
* psxclock/init.c, psxclock/psxclock.scn, psxenosys/init.c,
|
||||
psxenosys/psxenosys.scn, psxsignal03/Makefile.am, psxsignal03/init.c,
|
||||
psxsignal04/Makefile.am: Move test cases which needed to be executed
|
||||
when POSIX is disabled to psxclock so they will be.
|
||||
|
||||
2009-09-13 Joel Sherrill <joel.sherrill@oarcorp.com>
|
||||
|
||||
* Makefile.am, configure.ac, psx01/init.c, psx01/psx01.scn: Add new
|
||||
|
||||
@@ -13,13 +13,23 @@
|
||||
#include <time.h>
|
||||
#include <errno.h>
|
||||
|
||||
void check_enosys(int status);
|
||||
|
||||
void check_enosys(int status)
|
||||
{
|
||||
if ( (status == -1) && (errno == ENOSYS) )
|
||||
return;
|
||||
puts( "ERROR -- did not return ENOSYS as expected" );
|
||||
rtems_test_exit(0);
|
||||
}
|
||||
|
||||
rtems_task Init(
|
||||
rtems_task_argument argument
|
||||
)
|
||||
{
|
||||
struct timespec tv;
|
||||
struct timespec tr;
|
||||
int status;
|
||||
int sc;
|
||||
int priority;
|
||||
pthread_t thread_id;
|
||||
time_t seconds;
|
||||
@@ -35,18 +45,18 @@ rtems_task Init(
|
||||
/* error cases in clock_gettime and clock_settime */
|
||||
|
||||
puts( "Init: clock_gettime - EINVAL (NULL timespec)" );
|
||||
status = clock_gettime( CLOCK_REALTIME, NULL );
|
||||
rtems_test_assert( status == -1 );
|
||||
sc = clock_gettime( CLOCK_REALTIME, NULL );
|
||||
rtems_test_assert( sc == -1 );
|
||||
rtems_test_assert( errno == EINVAL );
|
||||
|
||||
puts( "Init: clock_gettime - EINVAL (invalid clockid)" );
|
||||
status = clock_gettime( (clockid_t)-1, &tv );
|
||||
rtems_test_assert( status == -1 );
|
||||
sc = clock_gettime( (clockid_t)-1, &tv );
|
||||
rtems_test_assert( sc == -1 );
|
||||
rtems_test_assert( errno == EINVAL );
|
||||
|
||||
puts( "Init: clock_settime - EINVAL (invalid clockid)" );
|
||||
status = clock_settime( (clockid_t)-1, &tv );
|
||||
rtems_test_assert( status == -1 );
|
||||
sc = clock_settime( (clockid_t)-1, &tv );
|
||||
rtems_test_assert( sc == -1 );
|
||||
rtems_test_assert( errno == EINVAL );
|
||||
|
||||
/* way back near the dawn of time :D */
|
||||
@@ -54,26 +64,26 @@ rtems_task Init(
|
||||
tv.tv_nsec = 0;
|
||||
printf( ctime( &tv.tv_sec ) );
|
||||
puts( "Init: clock_settime - before 1988 EINVAL" );
|
||||
status = clock_settime( CLOCK_REALTIME, &tv );
|
||||
rtems_test_assert( status == -1 );
|
||||
sc = clock_settime( CLOCK_REALTIME, &tv );
|
||||
rtems_test_assert( sc == -1 );
|
||||
rtems_test_assert( errno == EINVAL );
|
||||
|
||||
/* exercise clock_getres */
|
||||
|
||||
puts( "Init: clock_getres - EINVAL (invalid clockid)" );
|
||||
status = clock_getres( (clockid_t) -1, &tv );
|
||||
rtems_test_assert( status == -1 );
|
||||
sc = clock_getres( (clockid_t) -1, &tv );
|
||||
rtems_test_assert( sc == -1 );
|
||||
rtems_test_assert( errno == EINVAL );
|
||||
|
||||
puts( "Init: clock_getres - EINVAL (NULL resolution)" );
|
||||
status = clock_getres( CLOCK_REALTIME, NULL );
|
||||
rtems_test_assert( status == -1 );
|
||||
sc = clock_getres( CLOCK_REALTIME, NULL );
|
||||
rtems_test_assert( sc == -1 );
|
||||
rtems_test_assert( errno == EINVAL );
|
||||
|
||||
puts( "Init: clock_getres - SUCCESSFUL" );
|
||||
status = clock_getres( CLOCK_REALTIME, &tv );
|
||||
sc = clock_getres( CLOCK_REALTIME, &tv );
|
||||
printf( "Init: resolution = sec (%ld), nsec (%ld)\n", tv.tv_sec, tv.tv_nsec );
|
||||
rtems_test_assert( !status );
|
||||
rtems_test_assert( !sc );
|
||||
|
||||
/* set the time of day, and print our buffer in multiple ways */
|
||||
|
||||
@@ -88,8 +98,8 @@ rtems_task Init(
|
||||
|
||||
printf( asctime( &tm ) );
|
||||
puts( "Init: clock_settime - SUCCESSFUL" );
|
||||
status = clock_settime( CLOCK_REALTIME, &tv );
|
||||
rtems_test_assert( !status );
|
||||
sc = clock_settime( CLOCK_REALTIME, &tv );
|
||||
rtems_test_assert( !sc );
|
||||
|
||||
printf( asctime( &tm ) );
|
||||
printf( ctime( &tv.tv_sec ) );
|
||||
@@ -100,12 +110,12 @@ rtems_task Init(
|
||||
rtems_test_assert( !remaining );
|
||||
|
||||
/* print new times to make sure it has changed and we can get the realtime */
|
||||
status = clock_gettime( CLOCK_PROCESS_CPUTIME, &tv );
|
||||
rtems_test_assert( !status );
|
||||
sc = clock_gettime( CLOCK_PROCESS_CPUTIME, &tv );
|
||||
rtems_test_assert( !sc );
|
||||
printf("Time since boot: (%d, %d)\n", tv.tv_sec,tv.tv_nsec );
|
||||
|
||||
status = clock_gettime( CLOCK_REALTIME, &tv );
|
||||
rtems_test_assert( !status );
|
||||
sc = clock_gettime( CLOCK_REALTIME, &tv );
|
||||
rtems_test_assert( !sc );
|
||||
|
||||
printf( ctime( &tv.tv_sec ) );
|
||||
|
||||
@@ -126,23 +136,23 @@ rtems_task Init(
|
||||
|
||||
empty_line();
|
||||
puts( "Init: nanosleep - EINVAL (NULL time)" );
|
||||
status = nanosleep ( NULL, &tr );
|
||||
rtems_test_assert( status == -1 );
|
||||
sc = nanosleep ( NULL, &tr );
|
||||
rtems_test_assert( sc == -1 );
|
||||
rtems_test_assert( errno == EINVAL );
|
||||
|
||||
tv.tv_sec = 0;
|
||||
tv.tv_nsec = TOD_NANOSECONDS_PER_SECOND * 2;
|
||||
puts( "Init: nanosleep - EINVAL (too many nanoseconds)" );
|
||||
status = nanosleep ( &tv, &tr );
|
||||
rtems_test_assert( status == -1 );
|
||||
sc = nanosleep ( &tv, &tr );
|
||||
rtems_test_assert( sc == -1 );
|
||||
rtems_test_assert( errno == EINVAL );
|
||||
|
||||
/* this is actually a small delay or yield */
|
||||
tv.tv_sec = -1;
|
||||
tv.tv_nsec = 0;
|
||||
puts( "Init: nanosleep - negative seconds small delay " );
|
||||
status = nanosleep ( &tv, &tr );
|
||||
rtems_test_assert( status == -1 );
|
||||
sc = nanosleep ( &tv, &tr );
|
||||
rtems_test_assert( sc == -1 );
|
||||
rtems_test_assert( errno == EINVAL );
|
||||
|
||||
/* use nanosleep to yield */
|
||||
@@ -151,14 +161,14 @@ rtems_task Init(
|
||||
tv.tv_nsec = 0;
|
||||
|
||||
puts( "Init: nanosleep - yield with remaining" );
|
||||
status = nanosleep ( &tv, &tr );
|
||||
rtems_test_assert( !status );
|
||||
sc = nanosleep ( &tv, &tr );
|
||||
rtems_test_assert( !sc );
|
||||
rtems_test_assert( !tr.tv_sec );
|
||||
rtems_test_assert( !tr.tv_nsec );
|
||||
|
||||
puts( "Init: nanosleep - yield with NULL time remaining" );
|
||||
status = nanosleep ( &tv, NULL );
|
||||
rtems_test_assert( !status );
|
||||
sc = nanosleep ( &tv, NULL );
|
||||
rtems_test_assert( !sc );
|
||||
rtems_test_assert( !tr.tv_sec );
|
||||
rtems_test_assert( !tr.tv_nsec );
|
||||
|
||||
@@ -168,12 +178,12 @@ rtems_task Init(
|
||||
tv.tv_nsec = 500000;
|
||||
|
||||
puts( "Init: nanosleep - 1.05 seconds" );
|
||||
status = nanosleep ( &tv, &tr );
|
||||
rtems_test_assert( !status );
|
||||
sc = nanosleep ( &tv, &tr );
|
||||
rtems_test_assert( !sc );
|
||||
|
||||
/* print the current real time again */
|
||||
status = clock_gettime( CLOCK_REALTIME, &tv );
|
||||
rtems_test_assert( !status );
|
||||
sc = clock_gettime( CLOCK_REALTIME, &tv );
|
||||
rtems_test_assert( !sc );
|
||||
printf( ctime( &tv.tv_sec ) );
|
||||
|
||||
/* check the time remaining */
|
||||
@@ -186,10 +196,38 @@ rtems_task Init(
|
||||
rtems_test_assert( useconds < 1350000 );
|
||||
|
||||
/* print the current real time again */
|
||||
status = clock_gettime( CLOCK_REALTIME, &tv );
|
||||
rtems_test_assert( !status );
|
||||
sc = clock_gettime( CLOCK_REALTIME, &tv );
|
||||
rtems_test_assert( !sc );
|
||||
printf( ctime( &tv.tv_sec ) );
|
||||
|
||||
puts( "" );
|
||||
puts( "clock_gettime - CLOCK_THREAD_CPUTIME -- ENOSYS" );
|
||||
#if defined(_POSIX_THREAD_CPUTIME)
|
||||
{
|
||||
struct timespec tp;
|
||||
sc = clock_gettime( CLOCK_THREAD_CPUTIME, &tp );
|
||||
check_enosys( sc );
|
||||
}
|
||||
#endif
|
||||
|
||||
puts( "clock_settime - CLOCK_PROCESS_CPUTIME -- ENOSYS" );
|
||||
#if defined(_POSIX_CPUTIME)
|
||||
{
|
||||
struct timespec tp;
|
||||
sc = clock_settime( CLOCK_PROCESS_CPUTIME, &tp );
|
||||
check_enosys( sc );
|
||||
}
|
||||
#endif
|
||||
|
||||
puts( "clock_settime - CLOCK_THREAD_CPUTIME -- ENOSYS" );
|
||||
#if defined(_POSIX_THREAD_CPUTIME)
|
||||
{
|
||||
struct timespec tp;
|
||||
sc = clock_settime( CLOCK_THREAD_CPUTIME, &tp );
|
||||
check_enosys( sc );
|
||||
}
|
||||
#endif
|
||||
|
||||
puts( "*** END OF POSIX CLOCK TEST ***" );
|
||||
rtems_test_exit(0);
|
||||
}
|
||||
|
||||
@@ -28,4 +28,7 @@ Fri May 24 11:05:06 1996
|
||||
Init: sec (0), nsec (0) remaining
|
||||
Init: usleep - 1.35 seconds
|
||||
Fri May 24 11:05:07 1996
|
||||
clock_gettime - CLOCK_THREAD_CPUTIME -- ENOSYS
|
||||
clock_settime - CLOCK_PROCESS_CPUTIME -- ENOSYS
|
||||
clock_settime - CLOCK_THREAD_CPUTIME -- ENOSYS
|
||||
*** END OF POSIX CLOCK TEST ***
|
||||
|
||||
@@ -82,33 +82,6 @@ void *POSIX_Init(
|
||||
sc = clock_setenable_attr( 0, 0 );
|
||||
check_enosys( sc );
|
||||
|
||||
puts( "clock_gettime - CLOCK_THREAD_CPUTIME -- ENOSYS" );
|
||||
#if defined(_POSIX_THREAD_CPUTIME)
|
||||
{
|
||||
struct timespec tp;
|
||||
sc = clock_gettime( CLOCK_THREAD_CPUTIME, &tp );
|
||||
check_enosys( sc );
|
||||
}
|
||||
#endif
|
||||
|
||||
puts( "clock_settime - CLOCK_PROCESS_CPUTIME -- ENOSYS" );
|
||||
#if defined(_POSIX_CPUTIME)
|
||||
{
|
||||
struct timespec tp;
|
||||
sc = clock_settime( CLOCK_PROCESS_CPUTIME, &tp );
|
||||
check_enosys( sc );
|
||||
}
|
||||
#endif
|
||||
|
||||
puts( "clock_settime - CLOCK_THREAD_CPUTIME -- ENOSYS" );
|
||||
#if defined(_POSIX_THREAD_CPUTIME)
|
||||
{
|
||||
struct timespec tp;
|
||||
sc = clock_settime( CLOCK_THREAD_CPUTIME, &tp );
|
||||
check_enosys( sc );
|
||||
}
|
||||
#endif
|
||||
|
||||
puts( "devctl -- ENOSYS" );
|
||||
sc = devctl( 0, NULL, 0, NULL );
|
||||
check_enosys( sc );
|
||||
|
||||
@@ -10,9 +10,6 @@ aio_fsync -- ENOSYS
|
||||
clock_getcpuclockid -- ENOSYS
|
||||
clock_getenable_attr -- ENOSYS
|
||||
clock_setenable_attr -- ENOSYS
|
||||
clock_gettime - CLOCK_THREAD_CPUTIME -- ENOSYS
|
||||
clock_settime - CLOCK_PROCESS_CPUTIME -- ENOSYS
|
||||
clock_settime - CLOCK_THREAD_CPUTIME -- ENOSYS
|
||||
devctl -- ENOSYS
|
||||
execl -- ENOSYS
|
||||
execle -- ENOSYS
|
||||
|
||||
@@ -18,7 +18,7 @@ psxsignal03_LDADD = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel)
|
||||
|
||||
AM_CPPFLAGS += -I$(top_srcdir)/include
|
||||
AM_CPPFLAGS += -I$(top_srcdir)/../support/include
|
||||
AM_CPPFLAGS += -DUSE_USER_SIGNALS
|
||||
AM_CPPFLAGS += -DUSE_USER_SIGNALS_PROCESS
|
||||
|
||||
LINK_OBJS = $(psxsignal03_OBJECTS) $(psxsignal03_LDADD)
|
||||
LINK_LIBS = $(psxsignal03_LDLIBS)
|
||||
|
||||
@@ -9,17 +9,37 @@
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#if defined(USE_USER_SIGNALS)
|
||||
#if defined(USE_USER_SIGNALS_PROCESS)
|
||||
#define TEST_NAME "03"
|
||||
#define TEST_STRING "User Signals"
|
||||
#define TEST_STRING "User Signals to Process"
|
||||
#define SIGNAL_ONE SIGUSR1
|
||||
#define SIGNAL_TWO SIGUSR2
|
||||
#define SEND_SIGNAL(_sig) kill( getpid(), _sig )
|
||||
#define TO_PROCESS
|
||||
|
||||
#elif defined(USE_REAL_TIME_SIGNALS)
|
||||
#elif defined(USE_REAL_TIME_SIGNALS_PROCESS)
|
||||
#define TEST_NAME "04"
|
||||
#define TEST_STRING "Real-Time Signals"
|
||||
#define TEST_STRING "Real-Time Signals to Process"
|
||||
#define SIGNAL_ONE SIGRTMIN
|
||||
#define SIGNAL_TWO SIGRTMAX
|
||||
#define SEND_SIGNAL(_sig) kill( getpid(), _sig )
|
||||
#define TO_PROCESS
|
||||
|
||||
#elif defined(USE_USER_SIGNALS_THREAD)
|
||||
#define TEST_NAME "05"
|
||||
#define TEST_STRING "User Signals to Thread"
|
||||
#define SIGNAL_ONE SIGUSR1
|
||||
#define SIGNAL_TWO SIGUSR2
|
||||
#define SEND_SIGNAL(_sig) pthread_kill( id, _sig )
|
||||
#define TO_THREAD
|
||||
|
||||
#elif defined(USE_REAL_TIME_SIGNALS_THREAD)
|
||||
#define TEST_NAME "05"
|
||||
#define TEST_STRING "Real-Time Signals to Thread"
|
||||
#define SIGNAL_ONE SIGRTMIN
|
||||
#define SIGNAL_TWO SIGRTMAX
|
||||
#define SEND_SIGNAL(_sig) pthread_kill( id, _sig )
|
||||
#define TO_THREAD
|
||||
|
||||
#else
|
||||
#error "Test Mode not defined"
|
||||
@@ -154,18 +174,20 @@ void *POSIX_Init(
|
||||
|
||||
printf( "Init - sending %s - deliver to one thread\n",
|
||||
signal_name(SIGNAL_TWO));
|
||||
sc = kill( getpid(), SIGNAL_TWO );
|
||||
sc = SEND_SIGNAL( SIGNAL_TWO );
|
||||
assert( !sc );
|
||||
|
||||
printf( "Init - sending %s - deliver to other thread\n",
|
||||
signal_name(SIGNAL_TWO));
|
||||
sc = kill( getpid(), SIGNAL_TWO );
|
||||
sc = SEND_SIGNAL( SIGNAL_TWO );
|
||||
assert( !sc );
|
||||
|
||||
printf( "Init - sending %s - expect EAGAIN\n", signal_name(SIGNAL_TWO) );
|
||||
sc = kill( getpid(), SIGNAL_TWO );
|
||||
assert( sc == -1 );
|
||||
assert( errno == EAGAIN );
|
||||
#if defined(TO_PROCESS)
|
||||
printf( "Init - sending %s - expect EAGAIN\n", signal_name(SIGNAL_TWO) );
|
||||
sc = SEND_SIGNAL( SIGNAL_TWO );
|
||||
assert( sc == -1 );
|
||||
assert( errno == EAGAIN );
|
||||
#endif
|
||||
|
||||
puts( "Init - sleep - let thread report if it unblocked - OK" );
|
||||
usleep(500000);
|
||||
|
||||
@@ -18,7 +18,7 @@ psxsignal04_LDADD = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel)
|
||||
|
||||
AM_CPPFLAGS += -I$(top_srcdir)/include
|
||||
AM_CPPFLAGS += -I$(top_srcdir)/../support/include
|
||||
AM_CPPFLAGS += -DUSE_REAL_TIME_SIGNALS
|
||||
AM_CPPFLAGS += -DUSE_REAL_TIME_SIGNALS_PROCESS
|
||||
|
||||
LINK_OBJS = $(psxsignal04_OBJECTS) $(psxsignal04_LDADD)
|
||||
LINK_LIBS = $(psxsignal04_LDLIBS)
|
||||
|
||||
Reference in New Issue
Block a user