Hi,

> -----Original Message-----
> From: Mike Nazarewicz [mailto:m...@google.com] On Behalf Of Michal
> Nazarewicz
> Sent: Tuesday, October 07, 2014 10:08 PM
> To: Alan Stern; Felipe Balbi
> Cc: Krzysztof Opasiak; 'Robert Baldyga';
> gre...@linuxfoundation.org; linux-usb@vger.kernel.org; linux-
> ker...@vger.kernel.org; andrze...@samsung.com
> Subject: Re: [PATCH] usb: gadget: f_fs: add "zombie" mode
> 
> > On Tue, 7 Oct 2014, Felipe Balbi wrote:
> >> Right, but if we allow this, I can already see folks abusing to
> >> connect to the host early and only when necessary do some
> trickery to
> >> e.g. start adbd (not saying Android will do this, just using it
> as an
> >> easy example).
> 
> I don't really see that happening.  For the gadget to start all
> descriptors need to be known.  Functionfs  will know the
> descriptors
> only once the user space daemon provides them.  Therefore, with the
> current features (or even with addition of Robert's feature) there
> is no
> way to let the gadget start without having the daemon running.

Well, to be honest we do some lazy daemon startup in gadgetd. The idea is to 
provide functionality quite similar to inet. So we have divided functionfs 
services into two parts:
- Descriptors - provided in configuration file
- function implementation - provided in binary

Now user can create ffs function using gadgetd without worrying about mounting 
the file system, running daemon and many other stuff. Gadgetd is system-wide 
usb gadget manager which provides abstraction layer for kernel functions and 
ffs-based functions.

Example:
User would like to create gadget which contains MTP in first configuration and 
ADB in second. When gadgetd receives such request via DBUS it creates suitable 
functions on configfs, find suitable configuration files, mount two instances 
of ffs, write descriptors from config files and run poll() on both ep0. Please 
notice here that any other daemon has not been run but the whole gadget can be 
bound to UDC.

When usb device is connected to host then host will select one of available 
configurations. All functions in that configuration receive ENABLE event. When 
gadgetd receives such event from one of ep0 then fork() is executed and desired 
service is being run with all file descriptors opened and ready to use. Please 
also notice here that if  host select first configuration, only one of those 
daemon is going to be run.

(...)

-- 
Krzysztof Opasiak
Samsung R&D Institute Poland
Samsung Electronics
k.opas...@samsung.com




--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to