]> git.ipfire.org Git - thirdparty/util-linux.git/blob - sys-utils/irq-common.h
04c43207eea1ea1397a63bb38a96e5f0b5f4d935
[thirdparty/util-linux.git] / sys-utils / irq-common.h
1 #ifndef UTIL_LINUX_H_IRQ_COMMON
2 #define UTIL_LINUX_H_IRQ_COMMON
3
4 #include "c.h"
5 #include "nls.h"
6 #include "cpuset.h"
7
8 /* supported columns */
9 enum {
10 COL_IRQ = 0,
11 COL_TOTAL,
12 COL_DELTA,
13 COL_NAME,
14
15 __COL_COUNT
16 };
17
18 struct irq_info {
19 char *irq; /* short name of this irq */
20 char *name; /* descriptive name of this irq */
21 unsigned long total; /* total count since system start up */
22 unsigned long delta; /* delta count since previous update */
23 };
24
25 struct irq_cpu {
26 unsigned long total;
27 unsigned long delta;
28 };
29
30 struct irq_stat {
31 unsigned long nr_irq; /* number of irq vector */
32 unsigned long nr_irq_info; /* number of irq info */
33 struct irq_info *irq_info; /* array of irq_info */
34 struct irq_cpu *cpus; /* array of irq_cpu */
35 size_t nr_active_cpu; /* number of active cpu */
36 unsigned long total_irq; /* total irqs */
37 unsigned long delta_irq; /* delta irqs */
38 };
39
40
41 typedef int (irq_cmp_t)(const struct irq_info *, const struct irq_info *);
42
43 /* output definition */
44 struct irq_output {
45 int columns[__COL_COUNT * 2];
46 size_t ncolumns;
47
48 irq_cmp_t *sort_cmp_func;
49
50 unsigned int
51 json:1, /* JSON output */
52 pairs:1, /* export, NAME="value" aoutput */
53 no_headings:1; /* don't print header */
54 };
55
56 int irq_column_name_to_id(char const *const name, size_t const namesz);
57 void free_irqstat(struct irq_stat *stat);
58
59 void irq_print_columns(FILE *f, int nodelta);
60
61 void set_sort_func_by_name(struct irq_output *out, const char *name);
62 void set_sort_func_by_key(struct irq_output *out, const char c);
63
64 struct libscols_table *get_scols_table(struct irq_output *out,
65 struct irq_stat *prev,
66 struct irq_stat **xstat,
67 int softirq,
68 size_t setsize,
69 cpu_set_t *cpuset);
70
71 struct libscols_table *get_scols_cpus_table(struct irq_output *out,
72 struct irq_stat *prev,
73 struct irq_stat *curr,
74 size_t setsize,
75 cpu_set_t *cpuset);
76
77 #endif /* UTIL_LINUX_H_IRQ_COMMON */