Add CPU idle and active events
This commit is contained in:
		
							parent
							
								
									982bc39490
								
							
						
					
					
						commit
						576936ef01
					
				@ -187,4 +187,7 @@ KCI	Is back in the CPU due to a context switch
 | 
				
			|||||||
6HL	Unsets itself as leader thread
 | 
					6HL	Unsets itself as leader thread
 | 
				
			||||||
6Hm	Sets itself as main thread
 | 
					6Hm	Sets itself as main thread
 | 
				
			||||||
6HM	Unsets itself as main thread
 | 
					6HM	Unsets itself as main thread
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					6Ci	CPU becomes idle
 | 
				
			||||||
 | 
					6Ca	CPU becomes active
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										8
									
								
								emu.h
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								emu.h
									
									
									
									
									
								
							@ -118,10 +118,12 @@ enum nanos6_ss_state {
 | 
				
			|||||||
	ST_NANOS6_HANDLING_TASK,
 | 
						ST_NANOS6_HANDLING_TASK,
 | 
				
			||||||
	ST_NANOS6_WORKER_LOOP,
 | 
						ST_NANOS6_WORKER_LOOP,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* Value 51 is broken in old Paraver */
 | 
						/* Value 51 is broken in old Paraver */
 | 
				
			||||||
	EV_NANOS6_SCHED_RECV = 60,
 | 
						EV_NANOS6_SCHED_RECV = 60,
 | 
				
			||||||
	EV_NANOS6_SCHED_SEND = 61,
 | 
						EV_NANOS6_SCHED_SEND,
 | 
				
			||||||
	EV_NANOS6_SCHED_SELF = 62,
 | 
						EV_NANOS6_SCHED_SELF,
 | 
				
			||||||
 | 
						EV_NANOS6_CPU_IDLE,
 | 
				
			||||||
 | 
						EV_NANOS6_CPU_ACTIVE,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum nanos6_thread_type {
 | 
					enum nanos6_thread_type {
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										21
									
								
								emu_nanos6.c
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								emu_nanos6.c
									
									
									
									
									
								
							@ -379,7 +379,6 @@ pre_worker(struct ovni_emu *emu)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
pre_sched(struct ovni_emu *emu)
 | 
					pre_sched(struct ovni_emu *emu)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -427,6 +426,25 @@ pre_thread(struct ovni_emu *emu)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					pre_cpu(struct ovni_emu *emu)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct ovni_ethread *th;
 | 
				
			||||||
 | 
						struct ovni_chan *chan_th;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						th = emu->cur_thread;
 | 
				
			||||||
 | 
						chan_th = &th->chan[CHAN_NANOS6_SUBSYSTEM];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch(emu->cur_ev->header.value)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							case 'i': chan_ev(chan_th, EV_NANOS6_CPU_IDLE); break;
 | 
				
			||||||
 | 
							case 'a': chan_ev(chan_th, EV_NANOS6_CPU_ACTIVE); break;
 | 
				
			||||||
 | 
							default:
 | 
				
			||||||
 | 
								die("unknown Nanos6 cpu event %c\n",
 | 
				
			||||||
 | 
					                    emu->cur_ev->header.value);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
pre_ss(struct ovni_emu *emu, int st)
 | 
					pre_ss(struct ovni_emu *emu, int st)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -487,6 +505,7 @@ hook_pre_nanos6(struct ovni_emu *emu)
 | 
				
			|||||||
		case 'D': pre_deps(emu); break;
 | 
							case 'D': pre_deps(emu); break;
 | 
				
			||||||
		case 'B': pre_blocking(emu); break;
 | 
							case 'B': pre_blocking(emu); break;
 | 
				
			||||||
		case 'W': pre_worker(emu); break;
 | 
							case 'W': pre_worker(emu); break;
 | 
				
			||||||
 | 
							case 'C': pre_cpu(emu); break;
 | 
				
			||||||
		default:
 | 
							default:
 | 
				
			||||||
			die("unknown Nanos6 event category %c\n",
 | 
								die("unknown Nanos6 event category %c\n",
 | 
				
			||||||
                    emu->cur_ev->header.category);
 | 
					                    emu->cur_ev->header.category);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user