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 #if !defined(OPERATION_COUNT)
0030 #define OPERATION_COUNT 100
0031 #endif
0032
0033 #ifdef HAVE_CONFIG_H
0034 #include "config.h"
0035 #endif
0036
0037 #include <tmacros.h>
0038 #include <timesys.h>
0039 #include "test_support.h"
0040 #include <pthread.h>
0041 #include <sched.h>
0042 #include <rtems/btimer.h>
0043
0044 const char rtems_test_name[] = "PSXTMBARRIER 04";
0045
0046
0047 void *POSIX_Init(void *argument);
0048 void *Blocker(void *argument);
0049
0050 #define N 2
0051 pthread_barrier_t barrier;
0052
0053 void *Blocker(
0054 void *argument
0055 )
0056 {
0057 benchmark_timer_t end_time;
0058
0059
0060 (void) pthread_barrier_wait( &barrier );
0061
0062
0063
0064 end_time = benchmark_timer_read();
0065 put_time(
0066 "pthread_barrier_wait: releasing preempt",
0067 end_time,
0068 1,
0069 0,
0070 0
0071 );
0072 TEST_END();
0073 rtems_test_exit( 0 );
0074
0075 }
0076
0077 void *POSIX_Init(
0078 void *argument
0079 )
0080 {
0081 int status;
0082 pthread_t threadId;
0083 int policy;
0084 struct sched_param param;
0085
0086 TEST_BEGIN();
0087
0088 status = pthread_create( &threadId, NULL, Blocker, NULL );
0089 rtems_test_assert( status == 0 );
0090 status = pthread_barrier_init( &barrier, NULL, N );
0091 rtems_test_assert( status == 0 );
0092
0093
0094 sched_yield();
0095
0096 pthread_getschedparam(threadId, &policy, ¶m);
0097 param.sched_priority = sched_get_priority_max(policy) - 1;
0098
0099 pthread_setschedparam(threadId, policy, ¶m);
0100
0101
0102
0103
0104 benchmark_timer_initialize();
0105 status = pthread_barrier_wait( &barrier );
0106
0107
0108 return NULL;
0109 }
0110
0111
0112
0113 #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
0114 #define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
0115
0116 #define CONFIGURE_MAXIMUM_POSIX_THREADS 2
0117 #define CONFIGURE_POSIX_INIT_THREAD_TABLE
0118
0119 #define CONFIGURE_INIT
0120
0121 #include <rtems/confdefs.h>
0122