691 size_t size;
692 size_t bytes_copied = 0;
693 struct usb_request *req;
694
695 DBG(dev, "printer_write trying to send %d bytes\n", (int)len);
696
697 if (len == 0)
698 return -EINVAL;
699
700 spin_lock(&dev->lock_printer_io);
701 spin_lock_irqsave(&dev->lock, flags);
702
703
704 dev->reset_printer = 0;
705
706
707 if (likely(list_empty(&dev->tx_reqs))) {
708
709 spin_unlock_irqrestore(&dev->lock, flags);
710
711
712
713
714
715 if (fd->f_flags & (O_NONBLOCK|O_NDELAY)) {
716 spin_unlock(&dev->lock_printer_io);
717 return -EAGAIN;
718 }
719
720
721 wait_event_interruptible(dev->tx_wait,
722 (likely(!list_empty(&dev->tx_reqs))));
723 spin_lock_irqsave(&dev->lock, flags);
724 }
725
726 while (likely(!list_empty(&dev->tx_reqs)) && len) {
727
728 if (len > USB_BUFSIZE)
729 size = USB_BUFSIZE;
730 else
731 size = len;