File indexing completed on 2025-05-11 08:24:42
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 <pthread.h>
0035 #include <sched.h>
0036 #include <rtems/btimer.h>
0037 #include "test_support.h"
0038
0039 const char rtems_test_name[] = "PSXTMTHREAD 05";
0040
0041
0042 void *POSIX_Init(void *argument);
0043 void benchmark_pthread_create(void);
0044 void benchmark_pthread_setschedparam(void);
0045 void *test_thread(void *argument);
0046
0047 void benchmark_pthread_setschedparam(void)
0048 {
0049 int status;
0050 int policy;
0051 struct sched_param param;
0052 pthread_t thread_ID;
0053
0054 status = pthread_create(&thread_ID, NULL, test_thread, NULL);
0055 rtems_test_assert( status == 0 );
0056
0057
0058 pthread_getschedparam(pthread_self(), &policy, ¶m);
0059
0060 pthread_setschedparam(thread_ID, policy, ¶m);
0061
0062
0063
0064 param.sched_priority = sched_get_priority_min(policy);
0065
0066 benchmark_timer_initialize();
0067
0068 pthread_setschedparam(pthread_self(), policy, ¶m);
0069 }
0070
0071 void *test_thread(
0072 void *argument
0073 )
0074 {
0075 uint32_t end_time;
0076
0077 sched_yield();
0078
0079 end_time = benchmark_timer_read();
0080 put_time(
0081 "pthread_setschedparam: lower own priority preempt",
0082 end_time,
0083 1,
0084 0,
0085 0
0086 );
0087
0088 TEST_END();
0089 rtems_test_exit(0);
0090
0091 return NULL;
0092 }
0093
0094 void *POSIX_Init(
0095 void *argument
0096 )
0097 {
0098
0099 TEST_BEGIN();
0100 benchmark_pthread_setschedparam();
0101
0102 rtems_test_assert( 1 );
0103 return NULL;
0104 }
0105
0106
0107
0108 #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
0109 #define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
0110
0111 #define CONFIGURE_MAXIMUM_POSIX_THREADS 2
0112 #define CONFIGURE_POSIX_INIT_THREAD_TABLE
0113
0114 #define CONFIGURE_INIT
0115
0116 #include <rtems/confdefs.h>
0117