|
|
|
@ -211,13 +211,13 @@ void main_update_processes() {
|
|
|
|
|
gboolean active_all_empty = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->btnMainShowAllEmpty));
|
|
|
|
|
gboolean active_core_stream = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->btnMainShowCoreStream));
|
|
|
|
|
if (active_core_stream == 1) {
|
|
|
|
|
cmd = "systemd-cgls --no-page --all";
|
|
|
|
|
cmd = "systemd-cgls --no-page -l";
|
|
|
|
|
}
|
|
|
|
|
else if (active_all_empty == 1) {
|
|
|
|
|
cmd = "systemd-cgls --no-page -k";
|
|
|
|
|
}
|
|
|
|
|
else if (active_all_empty == 1 && active_core_stream == 1) {
|
|
|
|
|
cmd = "systemd-cgls --no-page --all -k";
|
|
|
|
|
cmd = "systemd-cgls --no-page -l -k";
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
cmd = "systemd-cgls --no-page";
|
|
|
|
@ -251,11 +251,11 @@ void main_update_information() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void load_system_cfg() {
|
|
|
|
|
|
|
|
|
|
template_cfg(CMD_LOAD_SYSTEM);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void load_global_cfg() {
|
|
|
|
|
|
|
|
|
|
template_cfg(CMD_LOAD_GLOBAL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void template_cfg(char* cmd) {
|
|
|
|
@ -264,16 +264,46 @@ void template_cfg(char* cmd) {
|
|
|
|
|
for (int index = 0; index < size; index++) {
|
|
|
|
|
char* str_key_value = yon_char_new(cfg[index]);
|
|
|
|
|
char* str_key = yon_char_divide_search(str_key_value, "=",-1);
|
|
|
|
|
str_split_value(str_key_value);
|
|
|
|
|
if (yon_char_find_count(str_key, "CGROUP_QUOTA") != 0) {
|
|
|
|
|
if (str_key_value[0] == '\"') {
|
|
|
|
|
yon_char_divide(str_key_value, 0);
|
|
|
|
|
size_t length = strlen(str_key_value);
|
|
|
|
|
str_key_value = yon_char_divide(str_key_value, length-2);
|
|
|
|
|
}
|
|
|
|
|
str_split_value(str_key_value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void str_split_value(char* value) {
|
|
|
|
|
char* new_value = yon_char_new(value);
|
|
|
|
|
void str_split_value(char* values) {
|
|
|
|
|
char* new_value = yon_char_new(values);
|
|
|
|
|
int size = 0;
|
|
|
|
|
char arr_values = yon_char_parse(new_value, &size, ",");
|
|
|
|
|
char** arr_values = philos_str_split(new_value, &size, ",");
|
|
|
|
|
if (arr_values == NULL) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
char* key = NULL;
|
|
|
|
|
char* value = NULL;
|
|
|
|
|
for (int index = 0; index < size; index++) {
|
|
|
|
|
if (yon_char_find_count(arr_values,arr_values[index], "MemoryHigh") != 0) {
|
|
|
|
|
value = arr_values[index];
|
|
|
|
|
key = yon_char_divide_search(value, "=", -1);
|
|
|
|
|
if (yon_char_find_count(key, "MemoryHigh") != 0) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else if (yon_char_find_count(key, "MemoryMax") != 0) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else if (yon_char_find_count(key, "MemorySwapMax") != 0) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else if (yon_char_find_count(key, "CPUQuota") != 0) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else if (yon_char_find_count(key, "IOReadBandwidthMax") != 0) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else if (yon_char_find_count(key, "IOWriteBandwidthMax") != 0) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -322,7 +352,7 @@ void tree_view_select(GtkWidget *self, main_window *widgets) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void tree_view_add(int index) {
|
|
|
|
|
main_config.type_quota= yon_char_parsed_append(main_config.type_quota, &main_config.size_tree_view, add_get_quota_object());
|
|
|
|
|
main_config.type_quota = yon_char_parsed_append(main_config.type_quota, &main_config.size_tree_view, add_get_quota_object());
|
|
|
|
|
main_config.size_tree_view--;
|
|
|
|
|
main_config.quota_volume = yon_char_parsed_append(main_config.quota_volume, &main_config.size_tree_view, add_get_select_device_to_level_2());
|
|
|
|
|
main_config.size_tree_view--;
|
|
|
|
@ -337,6 +367,23 @@ void tree_view_add(int index) {
|
|
|
|
|
main_config.i_o_limit_read = yon_char_parsed_append(main_config.i_o_limit_read, &main_config.size_tree_view, add_get_read_device());
|
|
|
|
|
main_config.size_tree_view--;
|
|
|
|
|
main_config.i_o_limit_write = yon_char_parsed_append(main_config.i_o_limit_write, &main_config.size_tree_view, add_get_write_device());
|
|
|
|
|
main_config.size_tree_view--;
|
|
|
|
|
|
|
|
|
|
main_config.type_quota_size = philos_int_append(main_config.type_quota_size, &main_config.size_tree_view, add_get_quota_object_size());
|
|
|
|
|
main_config.size_tree_view--;
|
|
|
|
|
main_config.quota_volume_size = philos_int_append(main_config.quota_volume_size, &main_config.size_tree_view, -1);
|
|
|
|
|
main_config.size_tree_view--;
|
|
|
|
|
main_config.soft_raw_limit_size = philos_int_append(main_config.soft_raw_limit_size, &main_config.size_tree_view, add_get_soft_size());
|
|
|
|
|
main_config.size_tree_view--;
|
|
|
|
|
main_config.hard_raw_limit_size = philos_int_append(main_config.hard_raw_limit_size, &main_config.size_tree_view, add_get_hard_size());
|
|
|
|
|
main_config.size_tree_view--;
|
|
|
|
|
main_config.swap_size = philos_int_append(main_config.swap_size, &main_config.size_tree_view, add_get_limit_swap_size());
|
|
|
|
|
main_config.size_tree_view--;
|
|
|
|
|
main_config.cpu_limit_size = philos_int_append(main_config.cpu_limit_size, &main_config.size_tree_view, add_get_limit_cpu_size());
|
|
|
|
|
main_config.size_tree_view--;
|
|
|
|
|
main_config.i_o_limit_read_size = philos_int_append(main_config.i_o_limit_read_size, &main_config.size_tree_view, add_get_read_device_size());
|
|
|
|
|
main_config.size_tree_view--;
|
|
|
|
|
main_config.i_o_limit_write_size = philos_int_append(main_config.i_o_limit_write_size, &main_config.size_tree_view, add_get_write_device_size());
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
gtk_list_store_append(main_config.list,&iter);
|
|
|
|
|
gtk_list_store_set(main_config.list,&iter,0,main_config.type_quota[index],
|
|
|
|
@ -363,6 +410,13 @@ int tree_view_edit() {
|
|
|
|
|
main_config.cpu_limit[index] = edit_get_limit_cpu();
|
|
|
|
|
main_config.i_o_limit_read[index] = edit_get_read_device();
|
|
|
|
|
main_config.i_o_limit_write[index] = edit_get_write_device();
|
|
|
|
|
|
|
|
|
|
main_config.soft_raw_limit_size[index] = edit_get_soft_size();
|
|
|
|
|
main_config.hard_raw_limit_size[index] = edit_get_hard_size();
|
|
|
|
|
main_config.swap_size[index] = edit_get_limit_swap_size();
|
|
|
|
|
main_config.cpu_limit_size[index] = edit_get_limit_cpu_size();
|
|
|
|
|
main_config.i_o_limit_read_size[index] = edit_get_read_device_size();
|
|
|
|
|
main_config.i_o_limit_write_size[index] = edit_get_write_device_size();
|
|
|
|
|
gtk_list_store_set(main_config.list,&iter,0,main_config.type_quota[index],
|
|
|
|
|
1,main_config.quota_volume[index],
|
|
|
|
|
2,main_config.soft_raw_limit[index],
|
|
|
|
@ -428,6 +482,8 @@ void main_event(main_window *widgets) {
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->cbtMainInfoLevel2),"changed",G_CALLBACK(main_cbx_2_event), NULL);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->btnDelQuotas), "clicked", G_CALLBACK(tree_view_del_line), widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->treeViewMain), "cursor-changed", G_CALLBACK(tree_view_select), widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem), "activate", G_CALLBACK(load_global_cfg), widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem), "activate", G_CALLBACK(load_system_cfg), widgets);
|
|
|
|
|
/*
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(),NULL);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(),NULL);
|
|
|
|
@ -459,12 +515,12 @@ void wrapper_edit_show() {
|
|
|
|
|
char* str_iter = gtk_tree_model_get_string_from_iter(model, &iter);
|
|
|
|
|
int index = atoi(str_iter);
|
|
|
|
|
edit_show(NULL, glade_path);
|
|
|
|
|
edit_set_hard(main_config.hard_raw_limit[index]);
|
|
|
|
|
edit_set_limit_cpu(main_config.cpu_limit[index]);
|
|
|
|
|
edit_set_soft(main_config.soft_raw_limit[index]);
|
|
|
|
|
edit_set_write_device(main_config.i_o_limit_write[index]);
|
|
|
|
|
edit_set_read_device(main_config.i_o_limit_read[index]);
|
|
|
|
|
edit_set_limit_swap(main_config.swap[index]);
|
|
|
|
|
edit_set_hard(main_config.hard_raw_limit[index], main_config.hard_raw_limit_size[index]);
|
|
|
|
|
edit_set_limit_cpu(main_config.cpu_limit[index], main_config.cpu_limit_size[index]);
|
|
|
|
|
edit_set_soft(main_config.soft_raw_limit[index], main_config.soft_raw_limit_size[index]);
|
|
|
|
|
edit_set_write_device(main_config.i_o_limit_write[index], main_config.i_o_limit_write_size[index]);
|
|
|
|
|
edit_set_read_device(main_config.i_o_limit_read[index], main_config.i_o_limit_read_size[index]);
|
|
|
|
|
edit_set_limit_swap(main_config.swap[index], main_config.swap_size[index]);
|
|
|
|
|
// edit_set_select_device(main_config.cpu_limit[index]);
|
|
|
|
|
g_signal_connect(G_OBJECT(get_widget_edit()->btnSaveEditSave), "clicked", G_CALLBACK(main_edit_btn_save), NULL);
|
|
|
|
|
}
|
|
|
|
@ -503,6 +559,23 @@ void tree_view_del_line() {
|
|
|
|
|
main_config.i_o_limit_read = yon_char_parsed_shrink(main_config.i_o_limit_read, &main_config.size_tree_view,index);
|
|
|
|
|
main_config.size_tree_view++;
|
|
|
|
|
main_config.i_o_limit_write = yon_char_parsed_shrink(main_config.i_o_limit_write, &main_config.size_tree_view,index);
|
|
|
|
|
main_config.size_tree_view++;
|
|
|
|
|
|
|
|
|
|
main_config.type_quota_size = remove_element_int_array(main_config.type_quota_size, &main_config.size_tree_view,index);
|
|
|
|
|
main_config.size_tree_view++;
|
|
|
|
|
main_config.quota_volume_size = remove_element_int_array(main_config.quota_volume_size, &main_config.size_tree_view,index);
|
|
|
|
|
main_config.size_tree_view++;
|
|
|
|
|
main_config.soft_raw_limit_size = remove_element_int_array(main_config.soft_raw_limit_size, &main_config.size_tree_view,index);
|
|
|
|
|
main_config.size_tree_view++;
|
|
|
|
|
main_config.hard_raw_limit_size = remove_element_int_array(main_config.hard_raw_limit_size, &main_config.size_tree_view,index);
|
|
|
|
|
main_config.size_tree_view++;
|
|
|
|
|
main_config.swap_size = remove_element_int_array(main_config.swap_size, &main_config.size_tree_view,index);
|
|
|
|
|
main_config.size_tree_view++;
|
|
|
|
|
main_config.cpu_limit_size = remove_element_int_array(main_config.cpu_limit_size, &main_config.size_tree_view,index);
|
|
|
|
|
main_config.size_tree_view++;
|
|
|
|
|
main_config.i_o_limit_read_size = remove_element_int_array(main_config.i_o_limit_read_size, &main_config.size_tree_view,index);
|
|
|
|
|
main_config.size_tree_view++;
|
|
|
|
|
main_config.i_o_limit_write_size = remove_element_int_array(main_config.i_o_limit_write_size, &main_config.size_tree_view,index);
|
|
|
|
|
g_object_ref(main_config.list);
|
|
|
|
|
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->treeViewMain), NULL);
|
|
|
|
|
gtk_list_store_clear(main_config.list);
|
|
|
|
|