From: Gilles A. <gil...@or...> - 2013-06-13 08:34:15
|
The "kernel profile" & "user binaries profile" buttons of GUI are not correctly set from daemonrc file. The 2 values are reversed & opcontrol handles a wrong value of "--event" argument. This patch fixes that bug. Added: a few code optimization. Signed-off-by: Gilles Allard <gil...@or...> --- gui/oprof_start.cpp | 51 ++++++++++++++++++++++++++------------------------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/gui/oprof_start.cpp b/gui/oprof_start.cpp index 914e356..a4aaef5 100644 --- a/gui/oprof_start.cpp +++ b/gui/oprof_start.cpp @@ -219,6 +219,7 @@ void oprof_start::fill_events() // from its name. struct list_head * pos; struct list_head * events = op_events(cpu_type); + event_setting *cfg; list_for_each(pos, events) { struct op_event * event = list_entry(pos, struct op_event, event_next); @@ -255,12 +256,13 @@ void oprof_start::fill_events() count = descr.min_count * 100; } - event_cfgs[descr.name].count = count; - event_cfgs[descr.name].umask = 0; + cfg = &event_cfgs[descr.name]; + cfg->count = count; + cfg->umask = 0; if (descr.unit) - event_cfgs[descr.name].umask = descr.unit->default_mask; - event_cfgs[descr.name].os_ring_count = 1; - event_cfgs[descr.name].user_ring_count = 1; + cfg->umask = descr.unit->default_mask; + cfg->os_ring_count = 1; + cfg->user_ring_count = 1; } v_events.push_back(descr); @@ -301,12 +303,15 @@ Q3ListViewItem * findItem(Q3ListView * view, char const * name) void oprof_start::setup_default_event() { struct op_default_event_descr descr; + event_setting *cfg; + op_default_event(cpu_type, &descr); - event_cfgs[descr.name].umask = descr.um; - event_cfgs[descr.name].count = descr.count; - event_cfgs[descr.name].user_ring_count = 1; - event_cfgs[descr.name].os_ring_count = 1; + cfg = &event_cfgs[descr.name]; + cfg->umask = descr.um; + cfg->count = descr.count; + cfg->user_ring_count = 1; + cfg->os_ring_count = 1; Q3ListViewItem * item = findItem(events_list, descr.name); if (item) @@ -325,17 +330,15 @@ void oprof_start::read_set_events() return; } + event_setting *cfg; string str; - bool one_enabled = false; while (getline(in, str)) { - string const val = split(str, '='); - string const name = str; - - if (!is_prefix(name, "CHOSEN_EVENTS_")) + if (!is_prefix(str, "CHOSEN_EVENTS_")) continue; + string const val = split(str, '='); one_enabled = true; // CHOSEN_EVENTS_#nr=CPU_CLK_UNHALTED:10000:0:1:1 @@ -348,21 +351,19 @@ void oprof_start::read_set_events() } string ev_name = parts[0]; - event_cfgs[ev_name].count = - op_lexical_cast<unsigned int>(parts[1]); + + cfg = &event_cfgs[ev_name]; + cfg->count = op_lexical_cast<unsigned int>(parts[1]); // CPU_CLK_UNHALTED:10000 is also valid if (parts.size() == 5) { - event_cfgs[ev_name].umask = - op_lexical_cast<unsigned int>(parts[2]); - event_cfgs[ev_name].user_ring_count = - op_lexical_cast<unsigned int>(parts[3]); - event_cfgs[ev_name].os_ring_count = - op_lexical_cast<unsigned int>(parts[4]); + cfg->umask = op_lexical_cast<unsigned int>(parts[2]); + cfg->os_ring_count = op_lexical_cast<unsigned int>(parts[3]); + cfg->user_ring_count = op_lexical_cast<unsigned int>(parts[4]); } else { - event_cfgs[ev_name].umask = 0; - event_cfgs[ev_name].user_ring_count = 1; - event_cfgs[ev_name].os_ring_count = 1; + cfg->umask = 0; + cfg->user_ring_count = 1; + cfg->os_ring_count = 1; } Q3ListViewItem * item = findItem(events_list, ev_name.c_str()); -- 1.8.1.5 |