Linux kernel usb_bulk_msg无法阻止

Linux kernel usb_bulk_msg无法阻止,linux-kernel,usb,linux-device-driver,embedded-linux,Linux Kernel,Usb,Linux Device Driver,Embedded Linux,场景:我正在尝试使用USB_Bulk_msg读取在端点4中路由到USB Bulk的数据包。我的代码如下所示: static ssize_t bky_read(struct file *f, char __user *buf, size_t cnt, loff_t *off) { int retval; int read_cnt; /* Read the data from the bulk endpoint */ retval = usb_bulk_msg(device, bky_dev.in

场景:我正在尝试使用USB_Bulk_msg读取在端点4中路由到USB Bulk的数据包。我的代码如下所示:

static ssize_t bky_read(struct file *f, char __user *buf, size_t cnt, loff_t *off)
{
int retval;
int read_cnt;

/* Read the data from the bulk endpoint */
retval = usb_bulk_msg(device, bky_dev.in, bky_dev.bulk_in_buffer, MAX_PKT_SIZE, &read_cnt,5000);
if (retval)
{
    printk(KERN_ERR "Bulk message returned %d\n", retval);
    return retval;
}
if (copy_to_user(buf, bky_dev.bulk_in_buffer, MIN(cnt, read_cnt)))
{
    return -EFAULT;
}

    return MIN(cnt, read_cnt);
}
其中bky_dev.in=usb_rcvbulkpipe设备,in->desc.bEndpointAddress&usb_ENDPOINT_NUMBER_MASK; 这是在探测调用中完成的。 我打印了in->desc.bEndpointAddress和USB_ENDPOINT_NUMBER_MASK的值,得到了正确的0x4。现在,当我从用户空间应用程序发出读取调用时,我可以调用bky_read,但是如果数据在EP4上不可用,usb_bulk_msg不会阻塞5秒钟

查询:为什么usb_block_msg无法阻止指定的秒数在我的情况下为5秒


PS:dmesg每次调用read时都打印返回的批量消息-71。

-71是-EPROTO;见,谢谢。我怀疑硬件和文件是一个合适的证据。再次感谢。问题已解决: