X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=goptions.c;h=16938eda141641b298434a626498dd087ff60752;hp=33183682d97f7eb3f2ab0887ffe6cea575245e24;hb=867f90e36d9d1458b20e5fab4542ce6c631f2633;hpb=7b504eddc4b039f2db3a0626bd08f880c5f4de27 diff --git a/goptions.c b/goptions.c index 33183682..16938eda 100644 --- a/goptions.c +++ b/goptions.c @@ -11,6 +11,7 @@ #include "ghelpers.h" #include "gerror.h" #include "parse.h" +#include "optgroup.h" struct gopt { GtkWidget *box; @@ -92,10 +93,10 @@ struct gopt_job_view { static GNode *gopt_dep_tree; static GtkWidget *gopt_get_group_frame(struct gopt_job_view *gjv, - GtkWidget *box, unsigned int groupmask) + GtkWidget *box, uint64_t groupmask) { - unsigned int mask, group; - struct opt_group *og; + uint64_t mask, group; + const struct opt_group *og; GtkWidget *frame, *hbox; struct gopt_frame_widget *gfw; @@ -107,7 +108,7 @@ static GtkWidget *gopt_get_group_frame(struct gopt_job_view *gjv, if (!og) return NULL; - group = ffz(~groupmask); + group = ffz64(~groupmask); gfw = &gjv->g_widgets[group]; if (!gfw->vbox[0]) { frame = gtk_frame_new(og->name); @@ -825,7 +826,7 @@ static struct gopt *gopt_new_str_val(struct gopt_job_view *gjv, unsigned long long *p, unsigned int idx) { struct gopt_str_val *g; - const gchar *postfix[] = { "B", "KB", "MB", "GB", "PB", "TB", "" }; + const gchar *postfix[] = { "B", "KiB", "MiB", "GiB", "PiB", "PiB", "" }; GtkWidget *label; int i; @@ -874,7 +875,7 @@ static void gopt_set_option(struct gopt_job_view *gjv, struct fio_option *o, struct gopt_str_val *g; if (o->off1) - ullp = td_var(to, o->off1); + ullp = td_var(to, o, o->off1); g = container_of(gopt, struct gopt_str_val, gopt); if (ullp) @@ -885,12 +886,8 @@ static void gopt_set_option(struct gopt_job_view *gjv, struct fio_option *o, unsigned long long *ullp = NULL; struct gopt_int *i; - if (o->off1) { - if (o->prof_opts) - ullp = td_var(o->prof_opts, o->off1); - else - ullp = td_var(to, o->off1); - } + if (o->off1) + ullp = td_var(to, o, o->off1); i = container_of(gopt, struct gopt_int, gopt); if (ullp) @@ -902,12 +899,8 @@ static void gopt_set_option(struct gopt_job_view *gjv, struct fio_option *o, unsigned int *ip = NULL; struct gopt_combo *c; - if (o->off1) { - if (o->prof_opts) - ip = td_var(o->prof_opts, o->off1); - else - ip = td_var(to, o->off1); - } + if (o->off1) + ip = td_var(to, o, o->off1); c = container_of(gopt, struct gopt_combo, gopt); if (ip) @@ -916,12 +909,8 @@ static void gopt_set_option(struct gopt_job_view *gjv, struct fio_option *o, unsigned int *ip = NULL; struct gopt_int *i; - if (o->off1) { - if (o->prof_opts) - ip = td_var(o->prof_opts, o->off1); - else - ip = td_var(to, o->off1); - } + if (o->off1) + ip = td_var(to, o, o->off1); i = container_of(gopt, struct gopt_int, gopt); if (ip) @@ -933,12 +922,8 @@ static void gopt_set_option(struct gopt_job_view *gjv, struct fio_option *o, unsigned int *ip = NULL; struct gopt_bool *b; - if (o->off1) { - if (o->prof_opts) - ip = td_var(o->prof_opts, o->off1); - else - ip = td_var(to, o->off1); - } + if (o->off1) + ip = td_var(to, o, o->off1); b = container_of(gopt, struct gopt_bool, gopt); if (ip) @@ -950,12 +935,8 @@ static void gopt_set_option(struct gopt_job_view *gjv, struct fio_option *o, unsigned int *ip = NULL; struct gopt_combo *c; - if (o->off1) { - if (o->prof_opts) - ip = td_var(o->prof_opts, o->off1); - else - ip = td_var(to, o->off1); - } + if (o->off1) + ip = td_var(to, o, o->off1); c = container_of(gopt, struct gopt_combo, gopt); if (ip) @@ -965,12 +946,7 @@ static void gopt_set_option(struct gopt_job_view *gjv, struct fio_option *o, char *text = NULL; if (o->off1) { - char **p; - - if (o->prof_opts) - p = td_var(o->prof_opts, o->off1); - else - p = td_var(to, o->off1); + char **p = td_var(to, o, o->off1); text = *p; } @@ -986,13 +962,7 @@ static void gopt_set_option(struct gopt_job_view *gjv, struct fio_option *o, char *text = NULL; if (o->off1) { - char **p; - - if (o->prof_opts) - p = td_var(o->prof_opts, o->off1); - else - p = td_var(to, o->off1); - + char **p = td_var(to, o, o->off1); text = *p; } @@ -1014,19 +984,10 @@ static void gopt_set_option(struct gopt_job_view *gjv, struct fio_option *o, break; case FIO_OPT_RANGE: { struct gopt_range *r; - unsigned int *ip[4]; - - if (o->prof_opts) { - ip[0] = td_var(o->prof_opts, o->off1); - ip[1] = td_var(o->prof_opts, o->off2); - ip[2] = td_var(o->prof_opts, o->off3); - ip[3] = td_var(o->prof_opts, o->off4); - } else { - ip[0] = td_var(to, o->off1); - ip[1] = td_var(to, o->off2); - ip[2] = td_var(to, o->off3); - ip[3] = td_var(to, o->off4); - } + unsigned int *ip[4] = { td_var(to, o, o->off1), + td_var(to, o, o->off2), + td_var(to, o, o->off3), + td_var(to, o, o->off4) }; r = container_of(gopt, struct gopt_range, gopt); gopt_int_range_set_val(r, *ip); @@ -1053,12 +1014,8 @@ static void gopt_add_option(struct gopt_job_view *gjv, GtkWidget *hbox, case FIO_OPT_STR_VAL: { unsigned long long *ullp = NULL; - if (o->off1) { - if (o->prof_opts) - ullp = td_var(o->prof_opts, o->off1); - else - ullp = td_var(to, o->off1); - } + if (o->off1) + ullp = td_var(to, o, o->off1); go = gopt_new_str_val(gjv, o, ullp, opt_index); break; @@ -1066,12 +1023,8 @@ static void gopt_add_option(struct gopt_job_view *gjv, GtkWidget *hbox, case FIO_OPT_STR_VAL_TIME: { unsigned long long *ullp = NULL; - if (o->off1) { - if (o->prof_opts) - ullp = td_var(o->prof_opts, o->off1); - else - ullp = td_var(to, o->off1); - } + if (o->off1) + ullp = td_var(to, o, o->off1); go = gopt_new_ullong(gjv, o, ullp, opt_index); break; @@ -1080,23 +1033,15 @@ static void gopt_add_option(struct gopt_job_view *gjv, GtkWidget *hbox, if (o->posval[0].ival) { unsigned int *ip = NULL; - if (o->off1) { - if (o->prof_opts) - ip = td_var(o->prof_opts, o->off1); - else - ip = td_var(to, o->off1); - } + if (o->off1) + ip = td_var(to, o, o->off1); go = gopt_new_combo_int(gjv, o, ip, opt_index); } else { unsigned int *ip = NULL; - if (o->off1) { - if (o->prof_opts) - ip = td_var(o->prof_opts, o->off1); - else - ip = td_var(to, o->off1); - } + if (o->off1) + ip = td_var(to, o, o->off1); go = gopt_new_int(gjv, o, ip, opt_index); } @@ -1105,12 +1050,8 @@ static void gopt_add_option(struct gopt_job_view *gjv, GtkWidget *hbox, case FIO_OPT_BOOL: { unsigned int *ip = NULL; - if (o->off1) { - if (o->prof_opts) - ip = td_var(o->prof_opts, o->off1); - else - ip = td_var(to, o->off1); - } + if (o->off1) + ip = td_var(to, o, o->off1); go = gopt_new_bool(gjv, o, ip, opt_index); break; @@ -1119,12 +1060,8 @@ static void gopt_add_option(struct gopt_job_view *gjv, GtkWidget *hbox, if (o->posval[0].ival) { unsigned int *ip = NULL; - if (o->off1) { - if (o->prof_opts) - ip = td_var(o->prof_opts, o->off1); - else - ip = td_var(to, o->off1); - } + if (o->off1) + ip = td_var(to, o, o->off1); go = gopt_new_combo_int(gjv, o, ip, opt_index); } else { @@ -1138,13 +1075,7 @@ static void gopt_add_option(struct gopt_job_view *gjv, GtkWidget *hbox, char *text = NULL; if (o->off1) { - char **p; - - if (o->prof_opts) - p = td_var(o->prof_opts, o->off1); - else - p = td_var(to, o->off1); - + char **p = td_var(to, o, o->off1); text = *p; } @@ -1160,19 +1091,10 @@ static void gopt_add_option(struct gopt_job_view *gjv, GtkWidget *hbox, go = gopt_new_str_multi(gjv, o, opt_index); break; case FIO_OPT_RANGE: { - unsigned int *ip[4]; - - if (o->prof_opts) { - ip[0] = td_var(o->prof_opts, o->off1); - ip[1] = td_var(o->prof_opts, o->off2); - ip[2] = td_var(o->prof_opts, o->off3); - ip[3] = td_var(o->prof_opts, o->off4); - } else { - ip[0] = td_var(to, o->off1); - ip[1] = td_var(to, o->off2); - ip[2] = td_var(to, o->off3); - ip[3] = td_var(to, o->off4); - } + unsigned int *ip[4] = { td_var(to, o, o->off1), + td_var(to, o, o->off2), + td_var(to, o, o->off3), + td_var(to, o, o->off4) }; go = gopt_new_int_range(gjv, o, ip, opt_index); break; @@ -1214,11 +1136,11 @@ static void gopt_add_options(struct gopt_job_view *gjv, */ for (i = 0; fio_options[i].name; i++) { struct fio_option *o = &fio_options[i]; - unsigned int mask = o->category; - struct opt_group *og; + uint64_t mask = o->category; + const struct opt_group *og; while ((og = opt_group_from_mask(&mask)) != NULL) { - GtkWidget *vbox = gjv->vboxes[ffz(~og->mask)]; + GtkWidget *vbox = gjv->vboxes[ffz64(~og->mask)]; hbox = gtk_hbox_new(FALSE, 3); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5); @@ -1256,19 +1178,20 @@ static GtkWidget *gopt_add_tab(GtkWidget *notebook, const char *name) return vbox; } -static GtkWidget *gopt_add_group_tab(GtkWidget *notebook, struct opt_group *og) +static GtkWidget *gopt_add_group_tab(GtkWidget *notebook, + const struct opt_group *og) { return gopt_add_tab(notebook, og->name); } static void gopt_add_group_tabs(GtkWidget *notebook, struct gopt_job_view *gjv) { - struct opt_group *og; + const struct opt_group *og; unsigned int i; i = 0; do { - unsigned int mask = (1U << i); + uint64_t mask = (1ULL << i); og = opt_group_from_mask(&mask); if (!og) @@ -1282,17 +1205,12 @@ static void gopt_handle_str_multi_changed(struct gopt_job_view *gjv, struct gopt_str_multi *m, struct fio_option *o) { + unsigned int *ip = td_var(gjv->o, o, o->off1); struct value_pair *vp; - unsigned int *ip; gboolean set; guint val = 0; int i; - if (o->prof_opts) - ip = td_var(o->prof_opts, o->off1); - else - ip = td_var(gjv->o, o->off1); - i = 0; vp = &o->posval[0]; while (vp->ival) { @@ -1300,7 +1218,7 @@ static void gopt_handle_str_multi_changed(struct gopt_job_view *gjv, break; set = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(m->checks[i])); if (set) { - if (vp->or) + if (vp->orval) val |= vp->oval; else val = vp->oval; @@ -1317,22 +1235,13 @@ static void gopt_handle_range_changed(struct gopt_job_view *gjv, struct gopt_range *r, struct fio_option *o) { - unsigned int *ip[4]; + unsigned int *ip[4] = { td_var(gjv->o, o, o->off1), + td_var(gjv->o, o, o->off2), + td_var(gjv->o, o, o->off3), + td_var(gjv->o, o, o->off4) }; gint val; int i; - if (o->prof_opts) { - ip[0] = td_var(o->prof_opts, o->off1); - ip[1] = td_var(o->prof_opts, o->off2); - ip[2] = td_var(o->prof_opts, o->off3); - ip[3] = td_var(o->prof_opts, o->off4); - } else { - ip[0] = td_var(gjv->o, o->off1); - ip[1] = td_var(gjv->o, o->off2); - ip[2] = td_var(gjv->o, o->off3); - ip[3] = td_var(gjv->o, o->off4); - } - for (i = 0; i < GOPT_RANGE_SPIN; i++) { val = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(r->spins[i])); *ip[i] = val; @@ -1343,15 +1252,10 @@ static void gopt_handle_str_val_changed(struct gopt_job_view *gjv, struct gopt_str_val *s, struct fio_option *o) { - unsigned long long *ullp; + unsigned long long *ullp = td_var(gjv->o, o, o->off1); GtkAdjustment *adj; gint index; - if (o->prof_opts) - ullp = td_var(o->prof_opts, o->off1); - else - ullp = td_var(gjv->o, o->off1); - if (!ullp) return; @@ -1372,12 +1276,7 @@ static void gopt_handle_str_val_changed(struct gopt_job_view *gjv, static void gopt_handle_str_changed(struct gopt_job_view *gjv, struct gopt_str *s, struct fio_option *o) { - char **p; - - if (o->prof_opts) - p = td_var(o->prof_opts, o->off1); - else - p = td_var(gjv->o, o->off1); + char **p = td_var(gjv->o, o, o->off1); if (*p) free(*p); @@ -1388,14 +1287,9 @@ static void gopt_handle_str_changed(struct gopt_job_view *gjv, static void gopt_handle_bool_changed(struct gopt_job_view *gjv, struct gopt_bool *b, struct fio_option *o) { - unsigned int *ip; + unsigned int *ip = td_var(gjv->o, o, o->off1); gboolean set; - if (o->prof_opts) - ip = td_var(o->prof_opts, o->off1); - else - ip = td_var(gjv->o, o->off1); - set = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(b->check)); *ip = set; } @@ -1403,15 +1297,10 @@ static void gopt_handle_bool_changed(struct gopt_job_view *gjv, static void gopt_handle_int_changed(struct gopt_job_view *gjv, struct gopt_int *i, struct fio_option *o) { + unsigned int *ip = td_var(gjv->o, o, o->off1); GtkAdjustment *adj; - unsigned int *ip; guint val; - if (o->prof_opts) - ip = td_var(o->prof_opts, o->off1); - else - ip = td_var(gjv->o, o->off1); - adj = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(i->spin)); val = gtk_adjustment_get_value(adj); *ip = val; @@ -1421,12 +1310,7 @@ static void gopt_handle_combo_str_changed(struct gopt_job_view *gjv, struct gopt_combo *c, struct fio_option *o) { - char **p; - - if (o->prof_opts) - p = td_var(o->prof_opts, o->off1); - else - p = td_var(gjv->o, o->off1); + char **p = td_var(gjv->o, o, o->off1); if (*p) free(*p); @@ -1438,14 +1322,9 @@ static void gopt_handle_combo_int_changed(struct gopt_job_view *gjv, struct gopt_combo *c, struct fio_option *o) { - unsigned int *ip; + unsigned int *ip = td_var(gjv->o, o, o->off1); gint index; - if (o->prof_opts) - ip = td_var(o->prof_opts, o->off1); - else - ip = td_var(gjv->o, o->off1); - index = gtk_combo_box_get_active(GTK_COMBO_BOX(c->combo)); *ip = o->posval[index].oval; } @@ -1556,7 +1435,7 @@ static int gopt_handle_changed_options(struct gopt_job_view *gjv) goto done; while (!flist_empty(&gjv->changed_list)) { - gopt = flist_entry(gjv->changed_list.next, struct gopt, changed_list); + gopt = flist_first_entry(&gjv->changed_list, struct gopt, changed_list); flist_del_init(&gopt->changed_list); } @@ -1700,7 +1579,7 @@ void gopt_get_options_window(GtkWidget *window, struct gfio_client *gc) gjv = calloc(1, sizeof(*gjv)); INIT_FLIST_HEAD(&gjv->changed_list); - gco = flist_entry(gc->o_list.next, struct gfio_client_options, list); + gco = flist_first_entry(&gc->o_list, struct gfio_client_options, list); gjv->o = &gco->o; gjv->dialog = dialog; gjv->client = gc;