内核编程 C语言获取CPU型号

该代码段展示了如何在Linux内核中读取CPU信息。通过`filp_open`打开/proc/cpuinfo文件,然后使用`kernel_read_line`函数逐行读取,直到找到modelname行或达到最大尝试次数。`kernel_read`函数用于从文件中读取单个字符。
摘要由CSDN通过智能技术生成
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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值