Patch to convert usb2 to use cdev
Rink Springer
rink at FreeBSD.org
Sun Nov 9 07:47:22 PST 2008
Hi Hans,
On Sun, Nov 09, 2008 at 03:15:25PM +0100, Hans Petter Selasky wrote:
> 1) You don't have to create an alias in "usb2_fifo_attach". The
> alias /dev/usbX.Y.Z.T is mostly for internal usage.
>
> + make_dev_alias(f_sc->dev, buf);
OK, I'll remove it - I assumed it might be used elsewhere, but
appearantly this is not the case.
>
> 2) struct usb2_privdata
>
> I would call the structure "usb2_fs_privdata" so that it is clear that this is
> File-System related private data. There is also a field
> called "xfer->priv_sc" so it might be confusing?
Yeah, after some though that is way too generic - I've renamed it to
'usb2_cdev_privdata' as it's really private cdev data.
> 3) You need to solve the problem about a per-open-call context
> for /dev/ugenX.Y . This device is supposed to be cloneable, that means
> multiple processes are allowed to open it and establish independant
> connections to the USB stack. Here are also some tricky issues with
> permissions, because I allow trunking of multiple endpoints through the same
> file-handle, called USB FS, and you have to verify that the current thread
> has permission to open the endpoint inside an ioctl function.
Well, multiple opens aren't a problem to implement - but I fail the
permissions problem. I think allowing multiple opens is useful for
as you can do ioctl() to them - but why would you ever want to be able
to read/write the same endpoint from multiple processes?
> 4) You need to generate dummy /dev/ugenX.Y.0 ... 15 inclusivly, endpoint
> holders. Typically there are not 15 endpoints, but it is difficult to
> in-advance figure out this number.
OK, will do.
> 5) Given that you use "destroy_dev_sched_cb" it becomes very easy to end up in
> a situation with multiple cdev instances having identical names, because
> the "destroy_dev_sched_cb" does not delete the device until the process which
> has the device opened closes it. Especially when re-attaching an USB device.
Yeah, I agree this is a problem. Robert Watson suggested that maybe a
worker thread that does all make_dev and destroy_dev calls may be a good
idea (appearantly, pccard does this already) - so they can be adequately
serialized to prevent duplicant devices from existing. I'll think about
this some more and talk to pccard people about how they did it.
--
Rink P.W. Springer - http://rink.nu
"Anyway boys, this is America. Just because you get more votes doesn't
mean you win." - Fox Mulder
More information about the freebsd-usb
mailing list