On Sun, Mar 21, 2010 at 05:37:37PM +0100, Bruno Prémont wrote:
On Sat, 20 March 2010 Dmitry Torokhov [off-list ref] wrote:
quoted
quoted
+ usbhid_submit_report(data->hdev, report, USB_DIR_OUT);
+ complete_all(&data->ready);
+ INIT_COMPLETION(data->ready);
Umm, what does this do, exactly?
It wakes up anyone waiting on the completion and then resets the completion
as otherwise any future attempt to wait on it would succeed immediately.
You realize that if you re-initialize the completion right after
signalling it there is a big chance the waiters will miss it (they do
check completion->done flags that you reset right away.
In general completions are suited for something that happens once (a
single request - allocated - processed - signalled) but not for
repeating use.
Thanks.
--
Dmitry