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…
Reference in New Issue
Block a user