(root)/
util-linux-2.39/
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 */