6666 * Private Data
6767 ****************************************************************************/
6868
69+ static uint8_t g_rr_values [CONFIG_TESTING_OSTEST_RR_RUNS * 2 ];
70+ static atomic_t g_rr_value_index ;
6971static sem_t g_rrsem ;
7072
7173/****************************************************************************
@@ -132,6 +134,7 @@ static FAR void *get_primes_thread(FAR void *parameter)
132134 for (i = 0 ; i < CONFIG_TESTING_OSTEST_RR_RUNS ; i ++ )
133135 {
134136 get_primes (& count , & last );
137+ g_rr_values [atomic_fetch_add (& g_rr_value_index , 1 )] = id ;
135138 }
136139
137140 printf ("get_primes_thread id=%d finished, found %d primes, "
@@ -154,11 +157,13 @@ void rr_test(void)
154157 pthread_t get_primes1_thread ;
155158 pthread_t get_primes2_thread ;
156159 struct sched_param sparam ;
160+ bool test_passed = false;
157161 pthread_attr_t attr ;
158162 pthread_addr_t result ;
159163 int status ;
164+ int i ;
160165
161- /* Setup common thread attrributes */
166+ /* Setup common thread attributes */
162167
163168 status = pthread_attr_init (& attr );
164169 if (status != OK )
@@ -197,6 +202,8 @@ void rr_test(void)
197202 /* This semaphore will prevent anything from running until we are ready */
198203
199204 sched_lock ();
205+ atomic_set (& g_rr_value_index , 0 );
206+ memset (g_rr_values , 0 , sizeof (g_rr_values ));
200207 sem_init (& g_rrsem , 0 , 0 );
201208
202209 /* Start the threads */
@@ -235,7 +242,26 @@ void rr_test(void)
235242
236243 pthread_join (get_primes2_thread , & result );
237244 pthread_join (get_primes1_thread , & result );
238- printf ("rr_test: Done\n" );
245+
246+ for (i = 1 ; i < CONFIG_TESTING_OSTEST_RR_RUNS ; i ++ )
247+ {
248+ if (g_rr_values [i - 1 ] != g_rr_values [i ])
249+ {
250+ test_passed = true;
251+ break ;
252+ }
253+ }
254+
255+ if (test_passed )
256+ {
257+ printf ("rr_test: Done\n" );
258+ }
259+ else
260+ {
261+ printf ("rr_test: Roundrobin Failed\n" );
262+ ASSERT (false);
263+ }
264+
239265 sem_destroy (& g_rrsem );
240266}
241267
0 commit comments