Ubuntu(linux)24.04编译CH340驱动报错

首选根据永久解决Linux(Ubuntu)下安装CH340驱动问题_ch340 linux驱动安装make报错-CSDN博客

这篇帖子我增加了#include <linux/sched/signal.h>这个头文件,但编译还是出错

在ch341.c的第1462行.write = ch341_tty_write,

根据提示error: initialization of ‘ssize_t (*)(struct tty_struct *, const u8 *, size_t)’ {aka ‘long int (*)(struct tty_struct *, const unsigned char *, long unsigned int)’} from incompatible pointer type ‘ssize_t (*)(struct tty_struct *, const unsigned char *, int)’ {aka ‘long int (*)(struct tty_struct *, const unsigned char *, int)’} [-Werror=incompatible-pointer-types]
 1462 |         .write = ch341_tty_write,
      |                  ^~~~~~~~~~~~~~~

发现类型出现错误。

查看手册

可以看到write的类型应当为ssize_t,修改代码

static ssize_t ch341_tty_write(struct tty_struct *tty, const unsigned char *buf, size_t count)
{
	struct ch341 *ch341 = tty->driver_data;
	int stat;
	unsigned long flags;
	int wbn;
	struct ch341_wb *wb;

	if (!count)
		return 0;

	spin_lock_irqsave(&ch341->write_lock, flags);
	wbn = ch341_wb_alloc(ch341);
	if (wbn < 0) {
		spin_unlock_irqrestore(&ch341->write_lock, flags);
		return 0;
	}
	wb = &ch341->wb[wbn];

	if (!ch341->dev) {
		wb->use = 0;
		spin_unlock_irqrestore(&ch341->write_lock, flags);
		return -ENODEV;
	}

	count = (count > ch341->writesize) ? ch341->writesize : count;
	memcpy(wb->buf, buf, count);
	wb->len = count;

	stat = usb_autopm_get_interface_async(ch341->data);
	if (stat) {
		wb->use = 0;
		spin_unlock_irqrestore(&ch341->write_lock, flags);
		return stat;
	}

	if (ch341->susp_count) {
		usb_anchor_urb(wb->urb, &ch341->delayed);
		spin_unlock_irqrestore(&ch341->write_lock, flags);
		return count;
	}

	stat = ch341_start_wb(ch341, wb);
	spin_unlock_irqrestore(&ch341->write_lock, flags);

	if (stat < 0)
		return stat;
	return count;
}

由于count是返回值,他的类型也需要修改,更改之后编译成功

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ailong0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值