您尚未登录。

#1 2019-09-13 04:04:04

zzz
会员
注册时间: 2019-09-13
帖子: 1

Linux 内核编程小白问题

各位大神好, 我刚刚接触 Linux 编程,我现在尝试在一个内核文件中使用 bcm2875_thermal.c (一个树莓派的芯片驱动来获得芯片温度, 驱动连接https://github.com/raspberrypi/linux/bl … _thermal.c ),下面是我想调用的函数, 但我不太懂怎么传这个参数, 第二个temp明白就是读取的温度, 但不太懂第一个 void *d 参数是什么, 请问我应该如果定义这个参数? 先谢谢大家啦

static int bcm2835_thermal_get_temp(void *d, int *temp)
{
	struct bcm2835_thermal_data *data = d;
	u32 val = readl(data->regs + BCM2835_TS_TSENSSTAT);

	if (!(val & BCM2835_TS_TSENSSTAT_VALID))
		return -EIO;

	val &= BCM2835_TS_TSENSSTAT_DATA_MASK;

	*temp = bcm2835_thermal_adc2temp(
		val,
		thermal_zone_get_offset(data->tz),
		thermal_zone_get_slope(data->tz));

	return 0;
}

离线

#2 2019-09-13 22:08:33

yw662
大会员
所在地: localhost
注册时间: 2018-10-10
帖子: 424

Re: Linux 内核编程小白问题

struct bcm2835_thermal_data *data = d;
这行告诉你类型了


ecmascript是世界上最好的语言

离线

#3 2019-10-15 08:49:33

matrikslee
会员
注册时间: 2017-04-21
帖子: 451
个人网站

Re: Linux 内核编程小白问题

void *是无类型指针,用之前得转成别的指针,一般用于通用接口传递参数

离线

页脚