diff options
-rw-r--r-- | idlestat.c | 9 | ||||
-rw-r--r-- | idlestat.h | 1 |
2 files changed, 10 insertions, 0 deletions
@@ -20,6 +20,7 @@ static char irq_type_name[][8] = { "irq", + "ipi", }; static char buffer[BUFSIZE]; @@ -320,6 +321,7 @@ static int store_irq(int cpu, int irqid, char *irqname, } #define TRACE_IRQ_FORMAT "%*[^[][%d] %*[^=]=%d%*[^=]=%16s" +#define TRACE_IPIIRQ_FORMAT "%*[^[][%d] %*[^=]=%d%*[^=]=%16s" #define TRACE_CMD_FORMAT "%*[^]]] %lf:%*[^=]=%u%*[^=]=%d" #define TRACE_FORMAT "%*[^]]] %*s %lf:%*[^=]=%u%*[^=]=%d" @@ -336,6 +338,13 @@ static int get_wakeup_irq(struct cpuidle_datas *datas, char *buffer, int count) return 0; } + if (strstr(buffer, "ipi_handler_entry")) { + sscanf(buffer, TRACE_IPIIRQ_FORMAT, &cpu, &irqid, irqname); + + store_irq(cpu, irqid, irqname, datas, count, IPI_IRQ); + return 0; + } + return -1; } @@ -28,6 +28,7 @@ struct cpuidle_cstate { enum IRQ_TYPE { HARD_IRQ = 0, + IPI_IRQ, IRQ_TYPE_MAX }; |