1
0
Fork 0

greybus: kill gb_operation_wait()

When a caller wants an operation to complete synchronously, there is
generally no need for any other threads to wait for the operation's
completion.  So here's no need for gb_operation_wait() to be
available for synchronous requests.  At the moment, all operations
are done synchronously.

Knowing that, get rid of the public gb_operation_wait() function,
and open-code it in gb_operation_request_send().  The public wait
function can be re-implemented when it's really needed.

With that function gone, the only waiter for the completion of an
operation is the submitter itself, and only then if it's
synchronous.  So rather than complete_all(), we can simply use
complete() to signal the submitter.

Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
hifive-unleashed-5.1
Alex Elder 2014-11-21 19:29:19 -06:00 committed by Greg Kroah-Hartman
parent 7035833f08
commit 2cf72a233a
1 changed files with 7 additions and 17 deletions

View File

@ -156,25 +156,10 @@ static void gb_operation_complete(struct gb_operation *operation)
if (operation->callback)
operation->callback(operation);
else
complete_all(&operation->completion);
complete(&operation->completion);
gb_operation_put(operation);
}
/*
* Wait for a submitted operation to complete. Returns the result
* of the operation; this will be -EINTR if the wait was interrupted.
*/
static int gb_operation_wait(struct gb_operation *operation)
{
int ret;
ret = wait_for_completion_interruptible(&operation->completion);
if (ret < 0)
gb_operation_cancel(operation, -EINTR);
return operation->errno;
}
#if 0
static void gb_operation_request_handle(struct gb_operation *operation)
{
@ -478,7 +463,12 @@ int gb_operation_request_send(struct gb_operation *operation,
if (ret || callback)
return ret;
return gb_operation_wait(operation);
/* Cancel the operation if interrupted */
ret = wait_for_completion_interruptible(&operation->completion);
if (ret < 0)
gb_operation_cancel(operation, -EINTR);
return operation->errno;
}
/*