static int kernel_read_line(struct file *file, char *buf, long long *pos)
{
char character;
int offset = 0;
int len = 0;
do
{
#if 1
len = kernel_read(file, &character, 1, pos);//内核不同该函数参数可能不同
#else
len = kernel_read(file, pos[0], &character, pos);
pos[0] = pos[0] + len;
#endif
if (!len)
{
break;
}
buf[off_set] = character;
off_set += len;
} while (character != '\n');
return off_set;
}
int cpu_info_get(char *buf)
{
const char *path = "/proc/cpuinfo";
struct file* fp = NULL;
long long off_set = 0;
int len = 0;
int line = 0;
fp = filp_open(path, O_RDONLY);
if (IS_ERR(fp))
{
return 0;
}
do
{
len = kernel_read_line(fp, buf, &offset);
if (len <= 0)
{
break;
}
line++;
} while (!strstr(buf, "model name") && line <50);
filp_close(fp, NULL);
return 0;
}
内核编程 C语言获取CPU型号
最新推荐文章于 2024-02-24 19:29:53 发布
该代码段展示了如何在Linux内核中读取CPU信息。通过`filp_open`打开/proc/cpuinfo文件,然后使用`kernel_read_line`函数逐行读取,直到找到modelname行或达到最大尝试次数。`kernel_read`函数用于从文件中读取单个字符。
摘要由CSDN通过智能技术生成