| #ifndef GFIO_H |
| #define GFIO_H |
| |
| #include <gtk/gtk.h> |
| |
| #include "gcompat.h" |
| #include "stat.h" |
| #include "thread_options.h" |
| #include "ghelpers.h" |
| #include "graph.h" |
| |
| struct probe_widget { |
| GtkWidget *hostname; |
| GtkWidget *os; |
| GtkWidget *arch; |
| GtkWidget *fio_ver; |
| }; |
| |
| struct eta_widget { |
| GtkWidget *names; |
| struct multitext_widget iotype; |
| struct multitext_widget bs; |
| struct multitext_widget ioengine; |
| struct multitext_widget iodepth; |
| GtkWidget *jobs; |
| GtkWidget *files; |
| GtkWidget *read_bw; |
| GtkWidget *read_iops; |
| GtkWidget *cr_bw; |
| GtkWidget *cr_iops; |
| GtkWidget *write_bw; |
| GtkWidget *write_iops; |
| GtkWidget *cw_bw; |
| GtkWidget *cw_iops; |
| GtkWidget *trim_bw; |
| GtkWidget *trim_iops; |
| }; |
| |
| struct gfio_graphs { |
| #define DRAWING_AREA_XDIM 1000 |
| #define DRAWING_AREA_YDIM 400 |
| GtkWidget *drawing_area; |
| struct graph *iops_graph; |
| graph_label_t read_iops; |
| graph_label_t write_iops; |
| graph_label_t trim_iops; |
| struct graph *bandwidth_graph; |
| graph_label_t read_bw; |
| graph_label_t write_bw; |
| graph_label_t trim_bw; |
| }; |
| |
| /* |
| * Main window widgets and data |
| */ |
| struct gui { |
| GtkUIManager *uimanager; |
| GtkRecentManager *recentmanager; |
| GtkActionGroup *actiongroup; |
| guint recent_ui_id; |
| GtkWidget *menu; |
| GtkWidget *window; |
| GtkWidget *vbox; |
| GtkWidget *thread_status_pb; |
| GtkWidget *buttonbox; |
| GtkWidget *notebook; |
| GtkWidget *error_info_bar; |
| GtkWidget *error_label; |
| GtkListStore *log_model; |
| GtkWidget *log_tree; |
| GtkWidget *log_view; |
| struct gfio_graphs graphs; |
| struct probe_widget probe; |
| struct eta_widget eta; |
| pthread_t server_t; |
| |
| pthread_t t; |
| int handler_running; |
| |
| GHashTable *ge_hash; |
| } main_ui; |
| |
| enum { |
| GE_STATE_NEW = 1, |
| GE_STATE_CONNECTED, |
| GE_STATE_JOB_SENT, |
| GE_STATE_JOB_STARTED, |
| GE_STATE_JOB_RUNNING, |
| GE_STATE_JOB_DONE, |
| }; |
| |
| enum { |
| GFIO_BUTTON_CONNECT = 0, |
| GFIO_BUTTON_SEND, |
| GFIO_BUTTON_START, |
| GFIO_BUTTON_NR, |
| }; |
| |
| /* |
| * Notebook entry |
| */ |
| struct gui_entry { |
| struct gui *ui; |
| |
| GtkWidget *vbox; |
| GtkWidget *job_notebook; |
| GtkWidget *thread_status_pb; |
| GtkWidget *buttonbox; |
| GtkWidget *button[GFIO_BUTTON_NR]; |
| GtkWidget *notebook; |
| GtkWidget *error_info_bar; |
| GtkWidget *error_label; |
| GtkWidget *results_window; |
| GtkWidget *results_notebook; |
| GtkUIManager *results_uimanager; |
| GtkWidget *results_menu; |
| GtkWidget *disk_util_vbox; |
| GtkListStore *log_model; |
| GtkWidget *log_tree; |
| GtkWidget *log_view; |
| struct gfio_graphs graphs; |
| struct probe_widget probe; |
| struct eta_widget eta; |
| GtkWidget *page_label; |
| gint page_num; |
| unsigned int state; |
| |
| struct graph *clat_graph; |
| struct graph *lat_bucket_graph; |
| |
| struct gfio_client *client; |
| char *job_file; |
| char *host; |
| int port; |
| int type; |
| int server_start; |
| }; |
| |
| struct end_results { |
| struct group_run_stats gs; |
| struct thread_stat ts; |
| }; |
| |
| struct gfio_client_options { |
| struct flist_head list; |
| struct thread_options o; |
| }; |
| |
| struct gfio_client { |
| struct gui_entry *ge; |
| struct fio_client *client; |
| GtkWidget *err_entry; |
| uint32_t client_cpus; |
| uint64_t client_flags; |
| |
| struct flist_head o_list; |
| unsigned int o_list_nr; |
| |
| struct end_results *results; |
| unsigned int nr_results; |
| |
| uint32_t update_job_status; |
| volatile uint32_t update_job_done; |
| |
| struct cmd_du_pdu *du; |
| unsigned int nr_du; |
| }; |
| |
| #define GFIO_MIME "text/fio" |
| |
| extern void gfio_view_log(struct gui *ui); |
| extern void gfio_set_state(struct gui_entry *ge, unsigned int state); |
| extern void clear_ge_ui_info(struct gui_entry *ge); |
| |
| extern const char *gfio_graph_font; |
| extern GdkColor gfio_color_white; |
| extern GdkColor gfio_color_lightyellow; |
| |
| #endif |