Add nOS-V resubmit-race RT test
This commit is contained in:
		
							parent
							
								
									b4f9b87ec0
								
							
						
					
					
						commit
						ae8edc5985
					
				| @ -45,6 +45,7 @@ nosv_test(barrier.c SORT LEVEL 3) | |||||||
| nosv_test(cond.c SORT LEVEL 3) | nosv_test(cond.c SORT LEVEL 3) | ||||||
| nosv_test(yield-noisy.c NAME "yield-noisy-l3" DRIVER "yield-noisy-l3.driver.sh") | nosv_test(yield-noisy.c NAME "yield-noisy-l3" DRIVER "yield-noisy-l3.driver.sh") | ||||||
| nosv_test(yield-noisy.c NAME "yield-noisy-l4" DRIVER "yield-noisy-l4.driver.sh") | nosv_test(yield-noisy.c NAME "yield-noisy-l4" DRIVER "yield-noisy-l4.driver.sh") | ||||||
|  | nosv_test(resubmit-race.c SORT) | ||||||
| 
 | 
 | ||||||
| # Test multiple instrumentation levels | # Test multiple instrumentation levels | ||||||
| nosv_test(several-tasks.c SORT NAME several-tasks-level-0 LEVEL 0) | nosv_test(several-tasks.c SORT NAME several-tasks-level-0 LEVEL 0) | ||||||
|  | |||||||
							
								
								
									
										62
									
								
								test/rt/nosv/resubmit-race.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								test/rt/nosv/resubmit-race.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,62 @@ | |||||||
|  | /* Copyright (c) 2025 Barcelona Supercomputing Center (BSC)
 | ||||||
|  |  * SPDX-License-Identifier: GPL-3.0-or-later */ | ||||||
|  | 
 | ||||||
|  | #include <nosv.h> | ||||||
|  | #include <nosv/affinity.h> | ||||||
|  | #include <stdatomic.h> | ||||||
|  | #include <unistd.h> | ||||||
|  | #include "compat.h" | ||||||
|  | #include "common.h" | ||||||
|  | 
 | ||||||
|  | #define NTASKS 10 | ||||||
|  | 
 | ||||||
|  | atomic_int nr_completed_tasks; | ||||||
|  | atomic_int completed; | ||||||
|  | 
 | ||||||
|  | nosv_task_t child_task; | ||||||
|  | nosv_task_t main_task; | ||||||
|  | 
 | ||||||
|  | static void | ||||||
|  | task_run(nosv_task_t task) | ||||||
|  | { | ||||||
|  | 	UNUSED(task); | ||||||
|  | 	sleep_us(100); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | static void | ||||||
|  | task_comp(nosv_task_t task) | ||||||
|  | { | ||||||
|  | 	int total = atomic_fetch_add(&nr_completed_tasks, 1); | ||||||
|  | 	if (total < NTASKS) { | ||||||
|  | 		nosv_submit(task, NOSV_SUBMIT_NONE); | ||||||
|  | 		/* Wait to give the scheduler the chance to win the race */ | ||||||
|  | 		sleep_us(100); | ||||||
|  | 	} else { | ||||||
|  | 		nosv_submit(main_task, NOSV_SUBMIT_UNLOCKED); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | int | ||||||
|  | main(void) | ||||||
|  | { | ||||||
|  | 	nosv_init(); | ||||||
|  | 
 | ||||||
|  | 	nosv_attach(&main_task, NULL, NULL, NOSV_ATTACH_NONE); | ||||||
|  | 
 | ||||||
|  | 	nosv_task_type_t task_type; | ||||||
|  | 	nosv_type_init(&task_type, task_run, NULL, task_comp, "child_task", NULL, NULL, NOSV_TYPE_INIT_NONE); | ||||||
|  | 	nosv_create(&child_task, task_type, 0, 0); | ||||||
|  | 	nosv_submit(child_task, NOSV_SUBMIT_NONE); | ||||||
|  | 
 | ||||||
|  | 	nosv_pause(NOSV_PAUSE_NONE); | ||||||
|  | 
 | ||||||
|  | 	nosv_destroy(child_task, NOSV_DESTROY_NONE); | ||||||
|  | 
 | ||||||
|  | 	nosv_detach(NOSV_DETACH_NONE); | ||||||
|  | 
 | ||||||
|  | 	nosv_type_destroy(task_type, NOSV_TYPE_DESTROY_NONE); | ||||||
|  | 
 | ||||||
|  | 	nosv_shutdown(); | ||||||
|  | 
 | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user