URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 5690
[ Назад ]

Исходное сообщение
"Опять USB-драйвер"

Отправлено Doomer , 06-Сен-06 13:41 
Возникла следующая проблема при чтении данных с устройства
Следующая функция возвращает ошибку -EOVERFLOW (-75) при попытке чтения с устройства 16кб данных.


static ssize_t mydev_read(struct file *file, char *buffer, size_t count, loff_t *ppos)
{
    struct usb_skel *dev;
    int retval = 0;

    dev = (struct usb_skel *)file->private_data;
    
    /* do a blocking bulk read to get data from the device */
    retval = usb_bulk_msg(dev->udev,
                  usb_rcvbulkpipe(dev->udev, 5),
                  dev->bulk_in_buffer,
                  min(dev->bulk_in_size, count),
                  &count, HZ*10);

    /* if the read was successful, copy the data to userspace */
    if (!retval) {
        
        if (copy_to_user(buffer, dev->bulk_in_buffer, count))
            retval = -EFAULT;
        else
            retval = count;
    } else info("read error %d",retval);

    return retval;
}

Кто-нибудь может подсказать что может быть этому причиной?
Система - Fedora Сore 4.

Заранее благодарен


Содержание

Сообщения в этом обсуждении
"Опять USB-драйвер"
Отправлено Doomer , 08-Сен-06 16:45 
>Возникла следующая проблема при чтении данных с устройства
>Следующая функция возвращает ошибку -EOVERFLOW (-75) при попытке чтения с устройства 16кб
>данных.
>
>
>static ssize_t mydev_read(struct file *file, char *buffer, size_t count, loff_t *ppos)
>{
> struct usb_skel *dev;
> int retval = 0;
>
>    dev = (struct usb_skel *)file->private_data;
>
> /* do a blocking bulk read to get data from the
>device */
>    retval = usb_bulk_msg(dev->udev,
>                  usb_rcvbulkpipe(dev->udev, 5),
>                  dev->bulk_in_buffer,
>                  min(dev->bulk_in_size, count),
>         &count, HZ*10);
>
> /* if the read was successful, copy the data to userspace
>*/
> if (!retval) {
>
>        if (copy_to_user(buffer, dev->bulk_in_buffer, count))
>   retval = -EFAULT;
>  else
>   retval = count;
> } else info("read error %d",retval);
>
> return retval;
>}
>
>Кто-нибудь может подсказать что может быть этому причиной?
>Система - Fedora Сore 4.
>
>Заранее благодарен


Что-то никто не отвечает... Мож я как-то не так вопрос задал?