[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: cups backend/usb ioctl call goes wrong on sparc64



> I've found a problem with the cups usb backend on sparc64 systems. The
> ioctl32 code isn't translating LPIOC_GET_DEVICE_ID ioctl calls
> properly. This means that backend/usb cannot identify which printer is
> actually registered as a particular usb device.
> 
> The giveaway message from the kernel is
> 
> Sep  7 13:22:12 shirehall kernel: ioctl32(usb:1729): Unknown cmd fd(0)
> cmd(44005001){04} arg(efffec48) on /dev/usb/lp0
<snip>
> Now ideally I would say that the way to fix this would be to correct
> the ioctl32 code in the kernel but it seems that the
> LPIOC_GET_DEVICE_ID ioctl number is dependent upon the structure
> passed in.
<snip>
> I'm not sure what the correct way to fix this is. Anyone have any
> suggestions.
I ran into a similar problem trying to get a USB ADSL modem working. 
The driver used usbdevfs and ioctl's to submit URBs to the modem.  It
appears that a section of the code for translating ioctl's from 32 bit
code into 64 bit are unfinished, with some of the USB ioctls not being
translated.  As I understand it the `correct' way to fix it is to
implement these translations.  It shouldn't be too difficult as there
are a number of similar functions already written and all of the data
structures are quite clearly defined - als I haven't had time to attempt
it myself.  If you do think of attempting this I'll see if I can find
the notes on it saying exactly where the code needed to go.

HTH

Cheers,
 - Martin
 
-- 
Martin
inkubus@interalpha.co.uk
"Seasons change, things come to pass"



Reply to: