File indexing completed on 2025-05-11 08:24:41
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 #ifdef HAVE_CONFIG_H
0030 #include "config.h"
0031 #endif
0032
0033 #include <timesys.h>
0034 #include <rtems/btimer.h>
0035 #include "test_support.h"
0036
0037 #include <pthread.h>
0038
0039 const char rtems_test_name[] = "PSXTMNANOSLEEP 02";
0040
0041
0042 void *POSIX_Init(void *argument);
0043 void *Middle(void *argument);
0044 void *Low(void *argument);
0045
0046 void *Low(
0047 void *argument
0048 )
0049 {
0050 benchmark_timer_t end_time;
0051
0052 end_time = benchmark_timer_read();
0053
0054 put_time(
0055 "nanosleep: blocking",
0056 end_time,
0057 OPERATION_COUNT,
0058 0,
0059 0
0060 );
0061
0062 TEST_END();
0063
0064 rtems_test_exit( 0 );
0065 return NULL;
0066 }
0067
0068 void *Middle(
0069 void *argument
0070 )
0071 {
0072
0073 struct timespec sleepTime;
0074 sleepTime.tv_sec = 0;
0075 sleepTime.tv_nsec = 1;
0076
0077 nanosleep(&sleepTime, (struct timespec *) NULL);
0078
0079 return NULL;
0080 }
0081
0082 void *POSIX_Init(
0083 void *argument
0084 )
0085 {
0086 int i;
0087 int status;
0088 pthread_t threadId;
0089 struct timespec sleepTime;
0090 struct timespec remainder;
0091
0092 sleepTime.tv_sec = 0;
0093 sleepTime.tv_nsec = 1;
0094 remainder.tv_sec = 0;
0095 remainder.tv_nsec = 0;
0096
0097 TEST_BEGIN();
0098
0099 for ( i=0 ; i < OPERATION_COUNT - 1 ; i++ ) {
0100 status = pthread_create( &threadId, NULL, Middle, NULL );
0101 rtems_test_assert( !status );
0102 }
0103
0104 status = pthread_create( &threadId, NULL, Low, NULL );
0105 rtems_test_assert( !status );
0106
0107
0108 benchmark_timer_initialize();
0109
0110 nanosleep(&sleepTime, &remainder);
0111
0112 return NULL;
0113 }
0114
0115
0116
0117 #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
0118 #define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
0119
0120 #define CONFIGURE_MAXIMUM_POSIX_THREADS OPERATION_COUNT + 2
0121 #define CONFIGURE_POSIX_INIT_THREAD_TABLE
0122
0123 #define CONFIGURE_INIT
0124
0125 #include <rtems/confdefs.h>
0126