您不需要从用户空间调用此函数来获取该值 - 它已经通过 sysfs 导出给您。
您可以使用 grep 来查找它是哪个 hwmon 设备:
grep -rl "lm70" /sys/class/hwmon/*/name /sys/class/hwmon/*/*/name
然后你可以从你的用户空间程序中读取温度输入,例如:
#include <stdio.h>
#include <fcntl.h>
#define SENSOR_FILE "/sys/class/hwmon/hwmon0/temp1_input"
int readSensor(void)
{
int fd, val = -1;
char buf[32];
fd = open(SENSOR_FILE, O_RDONLY);
if (fd < 0) {
printf("Failed to open %s\n", SENSOR_FILE);
return val;
}
if (read(fd, &buf, sizeof(buf)) > 0) {
val = atoi(buf);
printf("Sensor value = %d\n", val);
} else {
printf("Failed to read %s\n", SENSOR_FILE);
}
close(fd);
return val;
}
正如其他人已经说过的那样 - 你不能从用户空间调用内核代码,他们的休息时间。