无法编译usbmouse.c:函数“usb_maxpacket”的参数太少

fae0ux8s  于 2022-12-11  发布在  其他
关注(0)|答案(1)|浏览(143)

我正在尝试修改和编译usbmouse.c
在编译的时候,函数usb_maxpackets需要3个参数,但是我从torvald git复制的代码只传递了2个参数给这个函数
代码可在此处找到:
https://github.com/torvalds/linux/blob/master/drivers/hid/usbhid/usbmouse.c
我使用的是debian gnu/linux 10,内核版本为4.19.94-ti-r42

kupeojn6

kupeojn61#

usb_maxpacket()函数的参数数量在Linux内核5.19版本中从3个改为2个。第三个参数指示管道的方向,但该信息是冗余的,因为方向可以从其他两个参数推导出来。
为了与4.19内核兼容,新函数调用maxp = usb_maxpacket(dev, pipe);需要更改为maxp = usb_maxpacket(dev, pipe, usb_pipeout(pipe));。(usb_pipeout(pipe)是管道方向。)
为了使代码与新旧内核兼容,可以根据内核版本有条件地编译代码:
第一个
或者,可以在调用usb_maxpacket的函数之前添加一些兼容性代码:
第一个

相关问题