Avoid TID collisions searching only in cur_proc
This commit is contained in:
		
							parent
							
								
									67a9b8f319
								
							
						
					
					
						commit
						e80bcdd224
					
				
							
								
								
									
										30
									
								
								emu.c
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								emu.c
									
									
									
									
									
								
							| @ -221,35 +221,19 @@ emulate(struct ovni_emu *emu) | ||||
| } | ||||
| 
 | ||||
| struct ovni_ethread * | ||||
| emu_get_thread(struct ovni_emu *emu, int tid) | ||||
| emu_get_thread(struct ovni_eproc *proc, int tid) | ||||
| { | ||||
| 	int i, j, k; | ||||
| 	struct ovni_loom *loom; | ||||
| 	struct ovni_eproc *proc; | ||||
| 	int i; | ||||
| 	struct ovni_ethread *thread; | ||||
| 
 | ||||
| 	for(i=0; i<emu->trace.nlooms; i++) | ||||
| 	for(i=0; i<proc->nthreads; i++) | ||||
| 	{ | ||||
| 		loom = &emu->trace.loom[i]; | ||||
| 		for(j=0; j<loom->nprocs; j++) | ||||
| 		{ | ||||
| 			proc = &loom->proc[j]; | ||||
| 			for(k=0; k<proc->nthreads; k++) | ||||
| 			{ | ||||
| 				thread = &proc->thread[k]; | ||||
| 				if(thread->tid == tid) | ||||
| 				{ | ||||
| 					/* Only same process threads can
 | ||||
| 					 * change the affinity to each | ||||
| 					 * others */ | ||||
| 					assert(emu->cur_proc == proc); | ||||
| 					return thread; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		thread = &proc->thread[i]; | ||||
| 		if(thread->tid == tid) | ||||
| 			return thread; | ||||
| 	} | ||||
| 
 | ||||
| 	return thread; | ||||
| 	return NULL; | ||||
| } | ||||
| 
 | ||||
| static void | ||||
|  | ||||
							
								
								
									
										2
									
								
								emu.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								emu.h
									
									
									
									
									
								
							| @ -220,7 +220,7 @@ void hook_post_nosv(struct ovni_emu *emu); | ||||
| 
 | ||||
| struct ovni_cpu *emu_get_cpu(struct ovni_loom *loom, int cpuid); | ||||
| 
 | ||||
| struct ovni_ethread *emu_get_thread(struct ovni_emu *emu, int tid); | ||||
| struct ovni_ethread *emu_get_thread(struct ovni_eproc *proc, int tid); | ||||
| 
 | ||||
| void emu_emit_prv(struct ovni_emu *emu, int type, int val); | ||||
| 
 | ||||
|  | ||||
| @ -210,7 +210,7 @@ ev_affinity_remote(struct ovni_emu *emu) | ||||
| 	cpuid = emu->cur_ev->payload.i32[0]; | ||||
| 	tid = emu->cur_ev->payload.i32[1]; | ||||
| 
 | ||||
| 	thread = emu_get_thread(emu, tid); | ||||
| 	thread = emu_get_thread(emu->cur_proc, tid); | ||||
| 
 | ||||
| 	assert(thread); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user