WIP: Allow breakdown for OpenMP without nOS-V
This commit is contained in:
		
							parent
							
								
									5ca0fcaed3
								
							
						
					
					
						commit
						8d78abd07f
					
				| @ -80,6 +80,20 @@ model_nosv_breakdown_create(struct emu *emu) | |||||||
| 	struct nosv_emu *memu = EXT(emu, 'V'); | 	struct nosv_emu *memu = EXT(emu, 'V'); | ||||||
| 	struct nosv_breakdown_emu *bemu = &memu->breakdown; | 	struct nosv_breakdown_emu *bemu = &memu->breakdown; | ||||||
| 
 | 
 | ||||||
|  | 	/* Ensure all threads have breakdown enabled */ | ||||||
|  | 	bemu->enabled = 1; | ||||||
|  | 	for (struct thread *th = emu->system.threads; th; th = th->gnext) { | ||||||
|  | 		if (check_thread_metadata(th) != 0) { | ||||||
|  | 			err("bad nosv metadata in thread: %s", th->id); | ||||||
|  | 			bemu->enabled = 0; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	if (!bemu->enabled) { | ||||||
|  | 		warn("cannot enable breakdown for nOS-V model"); | ||||||
|  | 		return 0; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	/* Count phy cpus */ | 	/* Count phy cpus */ | ||||||
| 	struct system *sys = &emu->system; | 	struct system *sys = &emu->system; | ||||||
| 	int64_t nphycpus = (int64_t) (sys->ncpus - sys->nlooms); | 	int64_t nphycpus = (int64_t) (sys->ncpus - sys->nlooms); | ||||||
| @ -111,13 +125,6 @@ model_nosv_breakdown_create(struct emu *emu) | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	for (struct thread *th = emu->system.threads; th; th = th->gnext) { |  | ||||||
| 		if (check_thread_metadata(th) != 0) { |  | ||||||
| 			err("bad nosv metadata in thread: %s", th->id); |  | ||||||
| 			return -1; |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -241,6 +248,10 @@ model_nosv_breakdown_connect(struct emu *emu) | |||||||
| 
 | 
 | ||||||
| 	struct nosv_emu *memu = EXT(emu, 'V'); | 	struct nosv_emu *memu = EXT(emu, 'V'); | ||||||
| 	struct nosv_breakdown_emu *bemu = &memu->breakdown; | 	struct nosv_breakdown_emu *bemu = &memu->breakdown; | ||||||
|  | 
 | ||||||
|  | 	if (!bemu->enabled) | ||||||
|  | 		return 0; | ||||||
|  | 
 | ||||||
| 	struct bay *bay = &emu->bay; | 	struct bay *bay = &emu->bay; | ||||||
| 	struct system *sys = &emu->system; | 	struct system *sys = &emu->system; | ||||||
| 
 | 
 | ||||||
| @ -290,6 +301,10 @@ model_nosv_breakdown_finish(struct emu *emu, | |||||||
| 
 | 
 | ||||||
| 	struct nosv_emu *memu = EXT(emu, 'V'); | 	struct nosv_emu *memu = EXT(emu, 'V'); | ||||||
| 	struct nosv_breakdown_emu *bemu = &memu->breakdown; | 	struct nosv_breakdown_emu *bemu = &memu->breakdown; | ||||||
|  | 
 | ||||||
|  | 	if (!bemu->enabled) | ||||||
|  | 		return 0; | ||||||
|  | 
 | ||||||
| 	struct pcf *pcf = pvt_get_pcf(bemu->pvt); | 	struct pcf *pcf = pvt_get_pcf(bemu->pvt); | ||||||
| 	long typeid = PRV_NOSV_BREAKDOWN; | 	long typeid = PRV_NOSV_BREAKDOWN; | ||||||
| 	char label[] = "CPU: nOS-V Runtime/Idle/Task breakdown"; | 	char label[] = "CPU: nOS-V Runtime/Idle/Task breakdown"; | ||||||
|  | |||||||
| @ -51,6 +51,7 @@ struct nosv_breakdown_emu { | |||||||
| 	int64_t nphycpus; | 	int64_t nphycpus; | ||||||
| 	struct sort sort; | 	struct sort sort; | ||||||
| 	struct pvt *pvt; | 	struct pvt *pvt; | ||||||
|  | 	int enabled; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #endif /* BREAKDOWN_H */ | #endif /* BREAKDOWN_H */ | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user