irqbalance/ui/ui.h
Liu Chao b65faa2b65 irqbalance-ui: can't change window when in editing state
when invoking setup_irqs in settings or invoking settings in setup_irqs, it
doesn't break but enters another while loop.
For example:
 # gdb program `pidof irqbalance-ui`
 (gdb) bt
 #0  0x0000ffffb0dcc7b0 in poll () from /usr/lib64/libc.so.6
 #1  0x0000ffffb0e9097c in _nc_timed_wait () from /usr/lib64/libtinfo.so.6
 #2  0x0000ffffb0ecc154 in _nc_wgetch () from /usr/lib64/libncursesw.so.6
 #3  0x0000ffffb0eccb18 in wgetch () from /usr/lib64/libncursesw.so.6
 #4  0x00000000004045d4 in setup_irqs () at ui/ui.c:637
 #5  0x0000000000404084 in settings () at ui/ui.c:614
 #6  0x0000000000404084 in settings () at ui/ui.c:614
 #7  0x0000000000404084 in settings () at ui/ui.c:614
 #8  0x0000000000404084 in settings () at ui/ui.c:614
 #9  0x0000000000404084 in settings () at ui/ui.c:614
 #10 0x0000000000404084 in settings () at ui/ui.c:614
 #11 0x0000000000404084 in settings () at ui/ui.c:614
 #12 0x0000000000401fac in key_loop (data=<optimized out>) at ui/irqbalance-ui.c:387
 #13 0x0000ffffb105371c in ?? () from /usr/lib64/libglib-2.0.so.0
 #14 0x0000ffffb1052a84 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
 #15 0x0000ffffb1052e38 in ?? () from /usr/lib64/libglib-2.0.so.0
 #16 0x0000ffffb1053188 in g_main_loop_run () from /usr/lib64/libglib-2.0.so.0
 #17 0x000000000040196c in main (argc=<optimized out>, argv=<optimized out>) at ui/irqbalance-ui.c:445

Signed-off-by: Liu Chao <liuchao173@huawei.com>
2022-06-30 10:42:37 +08:00

54 lines
1.4 KiB
C

#ifndef UI_H
#define UI_H
#include <glib.h>
#include <glib-unix.h>
#include <curses.h>
#include <form.h>
#include <ncurses.h>
#include <signal.h>
#include "irqbalance-ui.h"
#include "helpers.h"
extern GList *tree;
extern setup_t setup;
void show_frame();
void show_footer();
char * check_control_in_sleep_input(int max_len, int column_offest, int line_offset);
int get_valid_sleep_input(int column_offest);
void get_banned_cpu(int *cpu, void *data);
void print_cpu_line(cpu_ban_t *cpu, void *data);
void print_all_cpus();
void add_banned_cpu(int *banned_cpu, void *data);
void display_banned_cpus();
int toggle_cpu(GList *cpu_list, int cpu_number);
void get_new_cpu_ban_values(cpu_ban_t *cpu, void *data);
void get_cpu();
void handle_sleep_setting();
void handle_cpu_banning();
void copy_assigned_obj(int *number, void *data);
void print_assigned_objects_string(irq_t *irq, int *line_offset);
void print_irq_line(irq_t *irq, void *data);
void print_all_irqs();
int toggle_irq(GList *irq_list, int position);
void get_new_irq_ban_values(irq_t *irq, void *data);
void copy_irqs_from_nodes(cpu_node_t *node, void *data);
void get_all_irqs();
void handle_irq_banning();
void init();
void close_window(int sig);
void settings();
void setup_irqs();
void display_tree_node_irqs(irq_t *irq, void *data);
void display_tree_node(cpu_node_t *node, void *data);
void display_tree();
#endif /* UI_H */