cpu: Add qemu_for_each_cpu()
Wrapper to avoid open-coded loops and to make CPUState iteration independent of CPUArchState. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Igor Mammedov <imammedo@redhat.com> Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
		
							parent
							
								
									997395d388
								
							
						
					
					
						commit
						d6b9e0d60c
					
				
							
								
								
									
										10
									
								
								exec.c
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								exec.c
									
									
									
									
									
								
							@ -265,6 +265,16 @@ CPUState *qemu_get_cpu(int index)
 | 
			
		||||
    return env ? cpu : NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void qemu_for_each_cpu(void (*func)(CPUState *cpu, void *data), void *data)
 | 
			
		||||
{
 | 
			
		||||
    CPUArchState *env = first_cpu;
 | 
			
		||||
 | 
			
		||||
    while (env) {
 | 
			
		||||
        func(ENV_GET_CPU(env), data);
 | 
			
		||||
        env = env->next_cpu;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void cpu_exec_init(CPUArchState *env)
 | 
			
		||||
{
 | 
			
		||||
    CPUState *cpu = ENV_GET_CPU(env);
 | 
			
		||||
 | 
			
		||||
@ -215,6 +215,15 @@ bool cpu_is_stopped(CPUState *cpu);
 | 
			
		||||
 */
 | 
			
		||||
void run_on_cpu(CPUState *cpu, void (*func)(void *data), void *data);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * qemu_for_each_cpu:
 | 
			
		||||
 * @func: The function to be executed.
 | 
			
		||||
 * @data: Data to pass to the function.
 | 
			
		||||
 *
 | 
			
		||||
 * Executes @func for each CPU.
 | 
			
		||||
 */
 | 
			
		||||
void qemu_for_each_cpu(void (*func)(CPUState *cpu, void *data), void *data);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * qemu_get_cpu:
 | 
			
		||||
 * @index: The CPUState@cpu_index value of the CPU to obtain.
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user