|
Line
Link Here
|
| 0 |
-- src/sysdeps/linux.c |
0 |
++ src/sysdeps/linux.c |
|
Lines 2345-2350
Link Here
|
| 2345 |
#define UNINORTH_INTERFACE 7 |
2345 |
#define UNINORTH_INTERFACE 7 |
| 2346 |
#define WINDFARM_INTERFACE 8 |
2346 |
#define WINDFARM_INTERFACE 8 |
| 2347 |
#define SYS_THERMAL_INTERFACE 9 |
2347 |
#define SYS_THERMAL_INTERFACE 9 |
|
|
2348 |
#define ATICONFIG_INTERFACE 10 |
| 2348 |
|
2349 |
|
| 2349 |
#define IBM_ACPI_FAN_FILE "/proc/acpi/ibm/fan" |
2350 |
#define IBM_ACPI_FAN_FILE "/proc/acpi/ibm/fan" |
| 2350 |
#define IBM_ACPI_THERMAL "/proc/acpi/ibm/thermal" |
2351 |
#define IBM_ACPI_THERMAL "/proc/acpi/ibm/thermal" |
|
Lines 3092-3097
gkrellm_sys_sensors_get_temperature(gchar *sensor_path, gint id,
Link Here
|
| 3092 |
return FALSE; |
3093 |
return FALSE; |
| 3093 |
} |
3094 |
} |
| 3094 |
|
3095 |
|
|
|
3096 |
if (interface == ATICONFIG_INTERFACE) |
| 3097 |
{ |
| 3098 |
#if GLIB_CHECK_VERSION(2,0,0) |
| 3099 |
gchar *args[] = { "aticonfig", "--odgt", "--adapter", sensor_path, NULL }; |
| 3100 |
gchar *output = NULL; |
| 3101 |
gchar *s = NULL; |
| 3102 |
|
| 3103 |
result = g_spawn_sync(NULL, args, NULL, |
| 3104 |
G_SPAWN_SEARCH_PATH | G_SPAWN_STDERR_TO_DEV_NULL, |
| 3105 |
NULL, NULL, &output, NULL, NULL, NULL); |
| 3106 |
|
| 3107 |
if(result && output) |
| 3108 |
{ |
| 3109 |
gfloat dummy; |
| 3110 |
|
| 3111 |
if(!temp) |
| 3112 |
temp = &dummy; |
| 3113 |
s = strstr(output, "Sensor"); |
| 3114 |
if (s) |
| 3115 |
result = (sscanf(s,"Sensor %*s Temperature - %f", temp) == 1); |
| 3116 |
else |
| 3117 |
result = FALSE; |
| 3118 |
} |
| 3119 |
|
| 3120 |
g_free(output); |
| 3121 |
return result; |
| 3122 |
#else |
| 3123 |
return FALSE; |
| 3124 |
#endif |
| 3125 |
} |
| 3095 |
#ifdef HAVE_LIBSENSORS |
3126 |
#ifdef HAVE_LIBSENSORS |
| 3096 |
if (interface == LIBSENSORS_INTERFACE) |
3127 |
if (interface == LIBSENSORS_INTERFACE) |
| 3097 |
return libsensors_get_value(sensor_path, id, iodev, temp); |
3128 |
return libsensors_get_value(sensor_path, id, iodev, temp); |
|
Lines 3525-3530
sensors_nvclock_ngpus(void)
Link Here
|
| 3525 |
return n; |
3556 |
return n; |
| 3526 |
} |
3557 |
} |
| 3527 |
|
3558 |
|
|
|
3559 |
static gint |
| 3560 |
sensors_aticonfig_ngpus(void) |
| 3561 |
{ |
| 3562 |
gint n = 0, s = 0; |
| 3563 |
#if GLIB_CHECK_VERSION(2,0,0) |
| 3564 |
gchar *args[] = { "aticonfig", "--list-adapters", NULL }; |
| 3565 |
gchar *output = NULL; |
| 3566 |
gboolean result; |
| 3567 |
|
| 3568 |
result = g_spawn_sync(NULL, args, NULL, |
| 3569 |
G_SPAWN_SEARCH_PATH | G_SPAWN_STDERR_TO_DEV_NULL, |
| 3570 |
NULL, NULL, &output, NULL, NULL, NULL); |
| 3571 |
|
| 3572 |
if(result && output) |
| 3573 |
n = sscanf(output, "* %d.", &s); |
| 3574 |
g_free(output); |
| 3575 |
#endif |
| 3576 |
if (_GK.debug_level & DEBUG_SENSORS) |
| 3577 |
printf("aticonfig gpus = %d\n", n); |
| 3578 |
return n; |
| 3579 |
} |
| 3580 |
|
| 3528 |
static void |
3581 |
static void |
| 3529 |
sensors_nvclock_init(gboolean enable) |
3582 |
sensors_nvclock_init(gboolean enable) |
| 3530 |
{ |
3583 |
{ |
|
Lines 3698-3704
gkrellm_sys_sensors_init(void)
Link Here
|
| 3698 |
fclose(f); |
3751 |
fclose(f); |
| 3699 |
} |
3752 |
} |
| 3700 |
|
3753 |
|
| 3701 |
/* nvidia-settings GPU core & ambient temperatues |
3754 |
/* nvidia-settings/aticonfig GPU core & ambient temperatures |
| 3702 |
*/ |
3755 |
*/ |
| 3703 |
cnt = sensors_nvidia_settings_ngpus(); |
3756 |
cnt = sensors_nvidia_settings_ngpus(); |
| 3704 |
ngpus_added = 0; |
3757 |
ngpus_added = 0; |
|
Lines 3744-3750
gkrellm_sys_sensors_init(void)
Link Here
|
| 3744 |
gkrellm_sensors_sysdep_option("use_nvclock", |
3797 |
gkrellm_sensors_sysdep_option("use_nvclock", |
| 3745 |
_("Use nvclock for NVIDIA GPU temperatures"), |
3798 |
_("Use nvclock for NVIDIA GPU temperatures"), |
| 3746 |
sensors_nvclock_init); |
3799 |
sensors_nvclock_init); |
| 3747 |
|
|
|
| 3748 |
id = 0; |
3800 |
id = 0; |
| 3749 |
/* Try for ambient only for gpu:0 for now */ |
3801 |
/* Try for ambient only for gpu:0 for now */ |
| 3750 |
if (gkrellm_sys_sensors_get_temperature("GPUAmbientTemp", id, 0, |
3802 |
if (gkrellm_sys_sensors_get_temperature("GPUAmbientTemp", id, 0, |
|
Lines 3756-3761
gkrellm_sys_sensors_init(void)
Link Here
|
| 3756 |
1.0, 0.0, NULL, "GPU A"); |
3808 |
1.0, 0.0, NULL, "GPU A"); |
| 3757 |
} |
3809 |
} |
| 3758 |
|
3810 |
|
|
|
3811 |
/* aticonfig temperature display - |
| 3812 |
| it's very simular to nvidia case |
| 3813 |
*/ |
| 3814 |
cnt = sensors_aticonfig_ngpus(); |
| 3815 |
ngpus_added = 0; |
| 3816 |
if (cnt < 2) |
| 3817 |
{ |
| 3818 |
if (gkrellm_sys_sensors_get_temperature("0", id, 0, |
| 3819 |
ATICONFIG_INTERFACE, NULL)) |
| 3820 |
{ |
| 3821 |
gkrellm_sensors_add_sensor(SENSOR_TEMPERATURE, |
| 3822 |
"0", "ATI/AMD GPU Core", |
| 3823 |
id, 0, ATICONFIG_INTERFACE, |
| 3824 |
1.0, 0.0, NULL, "GPU C"); |
| 3825 |
++ngpus_added; |
| 3826 |
} |
| 3827 |
} |
| 3828 |
else |
| 3829 |
{ |
| 3830 |
for (id = 0; id < cnt; ++id) |
| 3831 |
{ |
| 3832 |
sensor_path = g_strdup_printf("%d", id); |
| 3833 |
if (gkrellm_sys_sensors_get_temperature(sensor_path, id, 0, |
| 3834 |
ATICONFIG_INTERFACE, NULL)) |
| 3835 |
{ |
| 3836 |
snprintf(id_name, sizeof(id_name), "ATI/AMD GPU:%d Core", id); |
| 3837 |
default_label = g_strdup_printf("GPU:%d", id); |
| 3838 |
gkrellm_sensors_add_sensor(SENSOR_TEMPERATURE, |
| 3839 |
sensor_path, id_name, |
| 3840 |
id, 0, ATICONFIG_INTERFACE, |
| 3841 |
1.0, 0.0, NULL, default_label); |
| 3842 |
g_free(default_label); |
| 3843 |
++ngpus_added; |
| 3844 |
} |
| 3845 |
g_free(sensor_path); |
| 3846 |
} |
| 3847 |
} |
| 3759 |
|
3848 |
|
| 3760 |
/* UNINORTH sensors |
3849 |
/* UNINORTH sensors |
| 3761 |
*/ |
3850 |
*/ |