Blame irqbalance.h

Packit Service 2212bb
#ifndef __INCLUDE_GUARD_IRQBALANCE_H_
Packit Service 2212bb
#define __INCLUDE_GUARD_IRQBALANCE_H_
Packit Service 2212bb
Packit Service 2212bb
Packit Service 2212bb
#include "constants.h"
Packit Service 2212bb
Packit Service 2212bb
#include "cpumask.h"
Packit Service 2212bb
Packit Service 2212bb
#include <stdint.h>
Packit Service 2212bb
#include <glib.h>
Packit Service 2212bb
#include <glib-unix.h>
Packit Service 2212bb
#include <syslog.h>
Packit Service 2212bb
#include <limits.h>
Packit Service 2212bb
Packit Service 2212bb
#include "types.h"
Packit Service 2212bb
#include "config.h"
Packit Service 2212bb
Packit Service 2212bb
#ifdef __aarch64__
Packit Service 2212bb
#define AARCH64
Packit Service 2212bb
#endif
Packit Service 2212bb
Packit Service 2212bb
#ifdef HAVE_NUMA_H
Packit Service 2212bb
#include <numa.h>
Packit Service 2212bb
#else
Packit Service 2212bb
#define numa_available() -1
Packit Service 2212bb
#endif
Packit Service 2212bb
Packit Service 2212bb
#ifdef HAVE_LIBSYSTEMD
Packit Service 2212bb
#include <systemd/sd-journal.h>
Packit Service 2212bb
#endif
Packit Service 2212bb
Packit Service 2212bb
extern int package_count;
Packit Service 2212bb
extern int cache_domain_count;
Packit Service 2212bb
extern int core_count;
Packit Service 2212bb
extern char *classes[];
Packit Service 2212bb
Packit Service 2212bb
extern void parse_cpu_tree(void);
Packit Service 2212bb
extern void clear_work_stats(void);
Packit Service 2212bb
extern void parse_proc_interrupts(void);
Packit Service 2212bb
extern GList* collect_full_irq_list();
Packit Service 2212bb
extern void parse_proc_stat(void);
Packit Service 2212bb
extern void set_interrupt_count(int number, uint64_t count);
Packit Service 2212bb
extern void set_msi_interrupt_numa(int number);
Packit Service 2212bb
Packit Service 2212bb
extern GList *rebalance_irq_list;
Packit Service 2212bb
Packit Service 2212bb
void update_migration_status(void);
Packit Service 2212bb
void dump_workloads(void);
Packit Service 2212bb
void sort_irq_list(GList **list);
Packit Service 2212bb
void calculate_placement(void);
Packit Service 2212bb
void dump_tree(void);
Packit Service 2212bb
Packit Service 2212bb
void activate_mappings(void);
Packit Service 2212bb
void clear_cpu_tree(void);
Packit Service 2212bb
Packit Service 2212bb
/*===================NEW BALANCER FUNCTIONS============================*/
Packit Service 2212bb
Packit Service 2212bb
/*
Packit Service 2212bb
 * Master topo_obj type lists
Packit Service 2212bb
 */
Packit Service 2212bb
extern GList *numa_nodes;
Packit Service 2212bb
extern GList *packages;
Packit Service 2212bb
extern GList *cache_domains;
Packit Service 2212bb
extern GList *cpus;
Packit Service 2212bb
extern int numa_avail;
Packit Service 2212bb
extern GList *cl_banned_irqs;
Packit Service 2212bb
Packit Service 2212bb
extern int debug_mode;
Packit Service 2212bb
extern int journal_logging;
Packit Service 2212bb
extern int one_shot_mode;
Packit Service 2212bb
extern int need_rescan;
Packit Service 2212bb
extern unsigned long long cycle_count;
Packit Service 2212bb
extern unsigned long power_thresh;
Packit Service 2212bb
extern unsigned long deepest_cache;
Packit Service 2212bb
extern char *banscript;
Packit Service 2212bb
extern char *polscript;
Packit Service 2212bb
extern cpumask_t banned_cpus;
Packit Service 2212bb
extern cpumask_t unbanned_cpus;
Packit Service 2212bb
extern long HZ;
Packit Service 2212bb
Packit Service 2212bb
/*
Packit Service 2212bb
 * Numa node access routines
Packit Service 2212bb
 */
Packit Service 2212bb
extern void build_numa_node_list(void);
Packit Service 2212bb
extern void free_numa_node_list(void);
Packit Service 2212bb
extern void dump_numa_node_info(struct topo_obj *node, void *data);
Packit Service 2212bb
extern void connect_cpu_mem_topo(struct topo_obj *p, void *data);
Packit Service 2212bb
extern struct topo_obj *get_numa_node(int nodeid);
Packit Service 2212bb
Packit Service 2212bb
/*
Packit Service 2212bb
 * cpu core functions
Packit Service 2212bb
 */
Packit Service 2212bb
#define cpu_numa_node(cpu) ((cpu)->parent->numa_nodes)
Packit Service 2212bb
extern struct topo_obj *find_cpu_core(int cpunr);
Packit Service 2212bb
extern int get_cpu_count(void);
Packit Service 2212bb
Packit Service 2212bb
/*
Packit Service 2212bb
 * irq db functions
Packit Service 2212bb
 */
Packit Service 2212bb
extern void rebuild_irq_db(void);
Packit Service 2212bb
extern void free_irq_db(void);
Packit Service 2212bb
extern void add_cl_banned_irq(int irq);
Packit Service 2212bb
extern void for_each_irq(GList *list, void (*cb)(struct irq_info *info,  void *data), void *data);
Packit Service 2212bb
extern struct irq_info *get_irq_info(int irq);
Packit Service 2212bb
extern void migrate_irq(GList **from, GList **to, struct irq_info *info);
Packit Service 2212bb
extern void free_cl_opts(void);
Packit Service 2212bb
extern void add_cl_banned_module(char *modname);
Packit Service 2212bb
#define irq_numa_node(irq) ((irq)->numa_node)
Packit Service 2212bb
Packit Service 2212bb
Packit Service 2212bb
/*
Packit Service 2212bb
 * Generic object functions
Packit Service 2212bb
 */
Packit Service 2212bb
static inline void for_each_object(GList *list, void (*cb)(struct topo_obj *obj,  void *data), void *data)
Packit Service 2212bb
{
Packit Service 2212bb
	GList *entry, *next;
Packit Service 2212bb
	entry = g_list_first(list);
Packit Service 2212bb
	while (entry) {
Packit Service 2212bb
		next = g_list_next(entry);
Packit Service 2212bb
		cb(entry->data, data);
Packit Service 2212bb
		entry = next;
Packit Service 2212bb
	}
Packit Service 2212bb
}
Packit Service 2212bb
Packit Service 2212bb
/*
Packit Service 2212bb
 * Logging functions
Packit Service 2212bb
 */
Packit Service 2212bb
#define TO_SYSLOG	(1 << 0)
Packit Service 2212bb
#define TO_CONSOLE	(1 << 1)
Packit Service 2212bb
#define TO_ALL		(TO_SYSLOG | TO_CONSOLE)
Packit Service 2212bb
Packit Service 2212bb
extern const char * log_indent;
Packit Service 2212bb
extern unsigned int log_mask;
Packit Service 2212bb
#ifdef HAVE_LIBSYSTEMD
Packit Service 2212bb
#define log(mask, lvl, fmt, args...) do {					\
Packit Service 2212bb
	if (journal_logging) {							\
Packit Service 2212bb
		sd_journal_print(lvl, fmt, ##args);				\
Packit Service 2212bb
		if (log_mask & mask & TO_CONSOLE)				\
Packit Service 2212bb
			printf(fmt, ##args);					\
Packit Service 2212bb
	} else { 								\
Packit Service 2212bb
		if (log_mask & mask & TO_SYSLOG) 				\
Packit Service 2212bb
			syslog(lvl, fmt, ##args); 				\
Packit Service 2212bb
		if (log_mask & mask & TO_CONSOLE) 				\
Packit Service 2212bb
			printf(fmt, ##args); 					\
Packit Service 2212bb
	} 									\
Packit Service 2212bb
}while(0)
Packit Service 2212bb
#else /* ! HAVE_LIBSYSTEMD */
Packit Service 2212bb
#define log(mask, lvl, fmt, args...) do {					\
Packit Service 2212bb
	if (journal_logging) {							\
Packit Service 2212bb
		printf("<%d>", lvl); 						\
Packit Service 2212bb
		printf(fmt, ##args);						\
Packit Service 2212bb
	} else { 								\
Packit Service 2212bb
		if (log_mask & mask & TO_SYSLOG) 				\
Packit Service 2212bb
			syslog(lvl, fmt, ##args); 				\
Packit Service 2212bb
		if (log_mask & mask & TO_CONSOLE) 				\
Packit Service 2212bb
			printf(fmt, ##args); 					\
Packit Service 2212bb
	} 									\
Packit Service 2212bb
}while(0)
Packit Service 2212bb
#endif /* HAVE_LIBSYSTEMD */
Packit Service 2212bb
Packit Service 2212bb
#define SOCKET_PATH "irqbalance"
Packit Service 2212bb
Packit Service 2212bb
#endif /* __INCLUDE_GUARD_IRQBALANCE_H_ */
Packit Service 2212bb