⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpu.c

📁 系统任务管理器
💻 C
📖 第 1 页 / 共 3 页
字号:
	{	GList	*list;	CpuMon	*cpu;	for (list = cpu_mon_list; list; list = list->next)		{		cpu = (CpuMon *) list->data;		if (*(cpu->launch.command) != '\0')			fprintf(f, "%s launch %s %s\n", CPU_CONFIG_KEYWORD,						cpu->name, cpu->launch.command);		if (*(cpu->launch.tooltip_comment) != '\0')			fprintf(f, "%s tooltip_comment %s %s\n", CPU_CONFIG_KEYWORD,						cpu->name, cpu->launch.tooltip_comment);		fprintf(f, "%s extra_info %s %d\n", CPU_CONFIG_KEYWORD,					cpu->name, cpu->extra_info);		gkrellm_save_chartconfig(f, cpu->chart_config,					CPU_CONFIG_KEYWORD, cpu->name);		}	fprintf(f, "%s enable %d\n", CPU_CONFIG_KEYWORD, cpu_enabled);	fprintf(f, "%s smp_mode %d\n", CPU_CONFIG_KEYWORD, smp_mode);	fprintf(f, "%s omit_nice_mode %d\n", CPU_CONFIG_KEYWORD, omit_nice_mode);	fprintf(f, "%s config_tracking %d\n", CPU_CONFIG_KEYWORD, config_tracking);	fprintf(f, "%s sensor_mode %d\n", CPU_CONFIG_KEYWORD,			sensor_separate_mode);	fprintf(f, "%s text_format %s\n", CPU_CONFIG_KEYWORD, text_format);	if (cpu_alert)		{		gkrellm_save_alertconfig(f, cpu_alert, CPU_CONFIG_KEYWORD, NULL);		fprintf(f, "%s alert_includes_nice %d\n", CPU_CONFIG_KEYWORD,					alert_includes_nice);		}	}static voidload_cpu_config(gchar *arg)	{	GList	*list;	CpuMon	*cpu;	gchar	config[32], item[CFG_BUFSIZE],			cpu_name[32], command[CFG_BUFSIZE];	gint	n;	n = sscanf(arg, "%31s %[^\n]", config, item);	if (n == 2)		{		if (!strcmp(config, "enable"))			sscanf(item, "%d", &cpu_enabled);		else if (!strcmp(config, "smp_mode"))			sscanf(item, "%d\n", &smp_mode);		else if (!strcmp(config, "omit_nice_mode"))			sscanf(item, "%d\n", &omit_nice_mode);		else if (!strcmp(config, "config_tracking"))			sscanf(item, "%d\n", &config_tracking);		else if (!strcmp(config, "sensor_mode"))			sscanf(item, "%d\n", &sensor_separate_mode);		else if (!strcmp(config, "text_format"))			gkrellm_locale_dup_string(&text_format, item, &text_format_locale);		else if (!strcmp(config, "alert_includes_nice"))			sscanf(item, "%d\n", &alert_includes_nice);		else if (!strcmp(config, GKRELLM_CHARTCONFIG_KEYWORD))			{			sscanf(item, "%31s %[^\n]", cpu_name, command);			for (list = cpu_mon_list; list; list = list->next)				{				cpu = (CpuMon *) list->data;				if (strcmp(cpu->name, cpu_name) == 0)					gkrellm_load_chartconfig(&cpu->chart_config, command,							nice_time_unsupported ? 2 : 3);				}			}		else if (!strcmp(config, GKRELLM_ALERTCONFIG_KEYWORD))			{			if (!cpu_alert)				create_alert();			gkrellm_load_alertconfig(&cpu_alert, item);			dup_cpu_alert();			}		else if (!strcmp(config, "extra_info"))			{			sscanf(item, "%31s %[^\n]", cpu_name, command);			for (list = cpu_mon_list; list; list = list->next)				{				cpu = (CpuMon *) list->data;				if (strcmp(cpu->name, cpu_name) == 0)					sscanf(command, "%d\n", &cpu->extra_info);				}			}		else if (!strcmp(config, "launch"))			{			sscanf(item, "%31s %[^\n]", cpu_name, command);			for (list = cpu_mon_list; list; list = list->next)				{				cpu = (CpuMon *) list->data;				if (strcmp(cpu->name, cpu_name) == 0)					cpu->launch.command = g_strdup(command);				}			}		else if (!strcmp(config, "tooltip_comment"))			{			sscanf(item, "%31s %[^\n]", cpu_name, command);			for (list = cpu_mon_list; list; list = list->next)				{				cpu = (CpuMon *) list->data;				if (strcmp(cpu->name, cpu_name) == 0)					cpu->launch.tooltip_comment = g_strdup(command);				}			}		}	}static voidcb_alert_config(GkrellmAlert *ap, gpointer data)	{#if !defined(WIN32)	alert_includes_nice = GTK_TOGGLE_BUTTON(alert_config_nice_button)->active;#endif	dup_cpu_alert();	}#if !defined(WIN32)static voidcb_alert_config_create(GkrellmAlert *ap, GtkWidget *vbox, gpointer data)	{	gkrellm_gtk_check_button(vbox, &alert_config_nice_button,			alert_includes_nice, FALSE, 2,			_("nice time"));	}#endifstatic voidcb_set_alert(GtkWidget *button, gpointer data)	{	if (!cpu_alert)		create_alert();	gkrellm_alert_config_window(&cpu_alert);	}static gbooleanfix_panel(CpuMon *cpu)	{	gboolean	result;	if ((result = adjust_sensors_display(cpu, FALSE)) && cpu->launch.button)		{		gkrellm_destroy_button(cpu->launch.button);		cpu->launch.button = 			gkrellm_put_label_in_panel_button(cpu->chart->panel,				gkrellm_launch_button_cb, &cpu->launch, cpu->launch.pad);		}	return result;	}gbooleangkrellm_cpu_set_sensor(gpointer sr, gint type, gint n)	{	CpuMon	*cpu;	if (   (cpu = (CpuMon *) g_list_nth_data(cpu_mon_list, n)) == NULL		|| !cpu->enabled	   )		return FALSE;	if (type == SENSOR_TEMPERATURE)		cpu->sensor_temp = sr;	else if (type == SENSOR_FAN)		cpu->sensor_fan = sr;	else		return FALSE;	return fix_panel(cpu);	}static voidcb_sensor_separate(GtkWidget *button, gpointer data)    {	GList	*list;	sensor_separate_mode = GTK_TOGGLE_BUTTON(button)->active;	for (list = cpu_mon_list; list; list = list->next)		fix_panel((CpuMon *) list->data);	}static voidcb_omit_nice(GtkWidget *button, gpointer data)    {	omit_nice_mode = GTK_TOGGLE_BUTTON(button)->active;	}static voidcb_text_format(GtkWidget *widget, gpointer data)	{	GList	*list;	CpuMon	*cpu;	gchar	*s;	s = gkrellm_gtk_entry_get_text(&(GTK_COMBO(text_format_combo)->entry));	gkrellm_locale_dup_string(&text_format, s, &text_format_locale);	for (list = cpu_mon_list; list; list = list->next)		{		cpu = (CpuMon *) list->data;		cpu->new_text_format = TRUE;		refresh_cpu_chart(cpu);		}	}static voidcb_enable(GtkWidget *button, gpointer data)    {	GList	*list;	CpuMon	*cpu;	cpu_enabled = GTK_TOGGLE_BUTTON(button)->active;	for (list = cpu_mon_list; list; list = list->next)		{		cpu = (CpuMon *) list->data;		if (enable_cpu_visibility(cpu) && cpu->enabled)			gkrellm_reset_and_draw_chart(cpu->chart);		gkrellm_apply_launcher(&cpu->launch_entry, &cpu->tooltip_entry,					cpu->chart->panel, &cpu->launch, gkrellm_launch_button_cb);		gkrellm_reset_alert_soft(cpu->alert);		}	if (cpu_enabled)		gkrellm_spacers_show(mon_cpu);	else		gkrellm_spacers_hide(mon_cpu);	}static voidcb_smp_mode(GtkWidget *button, gpointer data)	{	GList		*list;	CpuMon		*cpu;	gint		i = GPOINTER_TO_INT(data);	gboolean	prev_enabled, rebuild_temps = FALSE, rebuild_fans = FALSE;	if (GTK_TOGGLE_BUTTON(button)->active)		smp_mode = i;	for (list = cpu_mon_list; list; list = list->next)		{		cpu = (CpuMon *) list->data;		prev_enabled = cpu->enabled;		if (enable_cpu_visibility(cpu) && cpu->enabled)			gkrellm_reset_and_draw_chart(cpu->chart);		if (prev_enabled && !cpu->enabled)			{			if (cpu->sensor_temp)				{				gkrellm_sensor_reset_location(cpu->sensor_temp);				rebuild_temps |= TRUE;				}			if (cpu->sensor_fan)				{				gkrellm_sensor_reset_location(cpu->sensor_fan);				rebuild_fans |= TRUE;				}			cpu->sensor_temp = NULL;			cpu->sensor_fan = NULL;			fix_panel(cpu);			}		gkrellm_apply_launcher(&cpu->launch_entry, &cpu->tooltip_entry,					cpu->chart->panel, &cpu->launch, gkrellm_launch_button_cb);		}	if (rebuild_temps || rebuild_fans)		gkrellm_sensors_rebuild(rebuild_temps, rebuild_fans, FALSE);	}static voidcb_config_tracking(GtkWidget *button, gpointer data)	{	config_tracking = GTK_TOGGLE_BUTTON(button)->active;	}static voidcb_launch_entry(GtkWidget *widget, CpuMon *cpu)	{	gkrellm_apply_launcher(&cpu->launch_entry, &cpu->tooltip_entry,				cpu->chart->panel, &cpu->launch, gkrellm_launch_button_cb);	}#define	DEFAULT_TEXT_FORMAT	"$T"static gchar	*cpu_info_text[] ={N_("<h>Chart Labels\n"),N_("Substitution variables for the format string for chart labels:\n"),N_("\t$L    the CPU label\n"),N_("\t$T    total CPU time percent usage\n"),N_("\t$s    sys time percent usage\n"),N_("\t$u    user time percent usage\n"),N_("\t$n    nice time percent usage\n"),"\n",N_("Substitution variables may be used in alert commands.\n")};static voidcreate_cpu_tab(GtkWidget *tab_vbox)	{	GtkWidget	*tabs;	GtkWidget	*button;	GtkWidget	*hbox, *hbox1, *vbox, *vbox1;	GtkWidget	*text;	GtkWidget	*table;	GSList		*group;	GList		*list;	CpuMon		*cpu;	gchar		buf[128];	gint		i;	tabs = gtk_notebook_new();	gtk_notebook_set_tab_pos(GTK_NOTEBOOK(tabs), GTK_POS_TOP);	gtk_box_pack_start(GTK_BOX(tab_vbox), tabs, TRUE, TRUE, 0);/* -- Options tab */	vbox = gkrellm_gtk_framed_notebook_page(tabs, _("Options"));	gkrellm_gtk_check_button_connected(vbox, NULL, cpu_enabled,			FALSE, FALSE, 10,			cb_enable, NULL,			_("Enable CPU"));	if (!nice_time_unsupported)		gkrellm_gtk_check_button_connected(vbox, NULL,				omit_nice_mode, FALSE, FALSE, 0,				cb_omit_nice, NULL,		_("Exclude nice CPU time from krell even if nice is shown on chart"));	if (gkrellm_sensors_available())		gkrellm_gtk_check_button_connected(vbox, NULL,					sensor_separate_mode, FALSE, FALSE, 0,					cb_sensor_separate, NULL,		_("Draw fan and temperature values separately (not alternating)."));	if (n_smp_cpus > 0)		{		gkrellm_gtk_check_button_connected(vbox, &button,				config_tracking, FALSE, FALSE, 10,				cb_config_tracking, NULL,		_("Apply any CPU chart config height change to all CPU charts"));		vbox1 = gkrellm_gtk_framed_vbox(vbox, _("SMP Charts Select"),				4, FALSE, 0, 2);		button = gtk_radio_button_new_with_label(NULL, _("Real CPUs."));		gtk_box_pack_start(GTK_BOX(vbox1), button, TRUE, TRUE, 0);		smp_button[0] = button;		group = gtk_radio_button_get_group(GTK_RADIO_BUTTON (button));		button = gtk_radio_button_new_with_label(group, _("Composite CPU."));		gtk_box_pack_start(GTK_BOX(vbox1), button, TRUE, TRUE, 0);		group = gtk_radio_button_get_group(GTK_RADIO_BUTTON (button));		smp_button[1] = button;		button = gtk_radio_button_new_with_label(group,					_("Composite and real"));		gtk_box_pack_start(GTK_BOX(vbox1), button, TRUE, TRUE, 0);		smp_button[2] = button;		button = smp_button[smp_mode];		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE);		for (i = 0; i < 3; ++i)			g_signal_connect(G_OBJECT(smp_button[i]), "toggled",						G_CALLBACK(cb_smp_mode), GINT_TO_POINTER(i));		}/* -- Setup tab */	vbox = gkrellm_gtk_framed_notebook_page(tabs, _("Setup"));	hbox = gtk_hbox_new(FALSE, 0);	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 5);	vbox1 = gkrellm_gtk_framed_vbox(hbox, _("Format String for Chart Labels"),			 4, FALSE, 0, 2);	hbox1 = gtk_hbox_new(FALSE, 0);	gtk_box_pack_start(GTK_BOX(vbox1), hbox1, FALSE, TRUE, 5);	text_format_combo = gtk_combo_new();	gtk_widget_set_size_request (GTK_WIDGET(text_format_combo), 300, -1);	gtk_box_pack_start(GTK_BOX(hbox1), text_format_combo, FALSE, TRUE, 0);	list = NULL;	list = g_list_append(list, text_format);	list = g_list_append(list, DEFAULT_TEXT_FORMAT);	list = g_list_append(list, _("\\fu \\.$u\\n\\fs \\.$s"));	list = g_list_append(list, _("\\ww\\D2\\f\\au\\.$u\\D1\\f\\as\\.$s"));	list = g_list_append(list, _("\\ww\\D3\\f\\au\\.$u\\D0\\f\\as\\.$s"));	if (!nice_time_unsupported)		list = g_list_append(list,			"\\ww\\C\\f$L\\D5\\f\\an\\.$n\\D2\\f\\au\\.$u\\D1\\f\\as\\.$s");	gtk_combo_set_popdown_strings(GTK_COMBO(text_format_combo), list);	gtk_combo_set_case_sensitive(GTK_COMBO(text_format_combo), TRUE);	g_list_free(list);	gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(text_format_combo)->entry),			text_format);	g_signal_connect(G_OBJECT(GTK_COMBO(text_format_combo)->entry), "changed",			G_CALLBACK(cb_text_format), NULL);	vbox1 = gtk_vbox_new(FALSE, 0);	gtk_box_pack_end(GTK_BOX(hbox), vbox1, FALSE, TRUE, 4);	gkrellm_gtk_alert_button(vbox1, NULL, FALSE, FALSE, 4, FALSE,			cb_set_alert, NULL);	vbox1 = gkrellm_gtk_framed_vbox_end(vbox, _("Launch Commands"),				4, TRUE, 0,2);	vbox1 = gkrellm_gtk_scrolled_vbox(vbox1, NULL,				GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);	table = gkrellm_gtk_launcher_table_new(vbox1, n_cpus);	for (i = 0, list = cpu_mon_list; list; list = list->next, ++i)		{		cpu = (CpuMon *) list->data;		snprintf(buf, sizeof(buf), _("%s"), cpu->name);		gkrellm_gtk_config_launcher(table, i,  &cpu->launch_entry,				&cpu->tooltip_entry, buf, &cpu->launch);		g_signal_connect(G_OBJECT(cpu->launch_entry), "changed",				G_CALLBACK(cb_launch_entry), cpu);		g_signal_connect(G_OBJECT(cpu->tooltip_entry), "changed",				G_CALLBACK(cb_launch_entry), cpu);		}/* --Info tab */	vbox = gkrellm_gtk_framed_notebook_page(tabs, _("Info"));	text = gkrellm_gtk_scrolled_text_view(vbox, NULL,				GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);	for (i = 0; i < sizeof(cpu_info_text)/sizeof(gchar *); ++i)		{		if (nice_time_unsupported && strstr(cpu_info_text[i], "nice"))			continue;		gkrellm_gtk_text_view_append(text, _(cpu_info_text[i]));		}	}gchar *gkrellm_cpu_get_sensor_panel_label(gint n)	{	CpuMon	*cpu;	gchar	*s = "cpu?";	cpu = (CpuMon *) g_list_nth_data(cpu_mon_list, n);	if (cpu)		s = cpu->panel_label;	return s;	}GkrellmMonitor *gkrellm_get_cpu_mon(void)	{	return mon_cpu;	}static GkrellmMonitor	monitor_cpu =	{	N_("CPU"),				/* Name, for config tab.	*/	MON_CPU,			/* Id,  0 if a plugin		*/	create_cpu,			/* The create function		*/	update_cpu,			/* The update function		*/	create_cpu_tab,		/* The config tab create function	*/	NULL,				/* Apply the config function		*/	save_cpu_config,	/* Save user conifg			*/	load_cpu_config,	/* Load user config			*/	CPU_CONFIG_KEYWORD,	/* config keyword			*/	NULL,				/* Undef 2	*/	NULL,				/* Undef 1	*/	NULL,				/* Undef 0	*/	0,					/* insert_before_id - place plugin before this mon */	NULL,				/* Handle if a plugin, filled in by GKrellM		*/	NULL				/* path if a plugin, filled in by GKrellM		*/	};GkrellmMonitor *gkrellm_init_cpu_monitor(void)	{	GList	*list;	monitor_cpu.name = _(monitor_cpu.name);	style_id = gkrellm_add_chart_style(&monitor_cpu, CPU_STYLE_NAME);	gkrellm_locale_dup_string(&text_format, DEFAULT_TEXT_FORMAT,				&text_format_locale);	mon_cpu = &monitor_cpu;	if (setup_cpu_interface())		{		for (list = cpu_mon_list; list; list = list->next)			((CpuMon *)(list->data))->extra_info = TRUE;		return &monitor_cpu;		}	return NULL;	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -