| #ifndef UTIL_LINUX_H_IRQ_COMMON |
| #define UTIL_LINUX_H_IRQ_COMMON |
| |
| #include "c.h" |
| #include "nls.h" |
| |
| /* supported columns */ |
| enum { |
| COL_IRQ = 0, |
| COL_TOTAL, |
| COL_DELTA, |
| COL_NAME, |
| |
| __COL_COUNT |
| }; |
| |
| struct irq_info { |
| char *irq; /* short name of this irq */ |
| char *name; /* descriptive name of this irq */ |
| unsigned long total; /* total count since system start up */ |
| unsigned long delta; /* delta count since previous update */ |
| }; |
| |
| struct irq_cpu { |
| unsigned long total; |
| unsigned long delta; |
| }; |
| |
| struct irq_stat { |
| unsigned long nr_irq; /* number of irq vector */ |
| unsigned long nr_irq_info; /* number of irq info */ |
| struct irq_info *irq_info; /* array of irq_info */ |
| struct irq_cpu *cpus; /* array of irq_cpu */ |
| size_t nr_active_cpu; /* number of active cpu */ |
| unsigned long total_irq; /* total irqs */ |
| unsigned long delta_irq; /* delta irqs */ |
| }; |
| |
| |
| typedef int (irq_cmp_t)(const struct irq_info *, const struct irq_info *); |
| |
| /* output definition */ |
| struct irq_output { |
| int columns[__COL_COUNT * 2]; |
| size_t ncolumns; |
| |
| irq_cmp_t *sort_cmp_func; |
| |
| unsigned int |
| json:1, /* JSON output */ |
| pairs:1, /* export, NAME="value" aoutput */ |
| no_headings:1; /* don't print header */ |
| }; |
| |
| int irq_column_name_to_id(char const *const name, size_t const namesz); |
| void free_irqstat(struct irq_stat *stat); |
| |
| void irq_print_columns(FILE *f, int nodelta); |
| |
| void set_sort_func_by_name(struct irq_output *out, const char *name); |
| void set_sort_func_by_key(struct irq_output *out, const char c); |
| |
| struct libscols_table *get_scols_table(struct irq_output *out, |
| struct irq_stat *prev, |
| struct irq_stat **xstat, |
| int softirq); |
| |
| struct libscols_table *get_scols_cpus_table(struct irq_output *out, |
| struct irq_stat *prev, |
| struct irq_stat *curr); |
| |
| #endif /* UTIL_LINUX_H_IRQ_COMMON */ |