greybus: define gb_operation_status_map()

Define a common function that maps an operation status value to a
Linux negative errno.

Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
This commit is contained in:
Alex Elder 2014-11-19 17:55:04 -06:00 committed by Greg Kroah-Hartman
parent d30df426ff
commit bc717fcbf6
2 changed files with 31 additions and 0 deletions

View File

@ -287,6 +287,35 @@ static void gb_operation_message_exit(struct gb_message *message)
message->buffer_size = 0;
}
/*
* Map an enum gb_operation_status value (which is represted in a
* message as a single back a single byte) to an appropriate Linux
* negative errno.
*/
int gb_operation_status_map(u8 status)
{
switch (status) {
case GB_OP_SUCCESS:
return 0;
case GB_OP_INVALID:
return -EINVAL;
case GB_OP_NO_MEMORY:
return -ENOMEM;
case GB_OP_INTERRUPTED:
return -EINTR;
case GB_OP_RETRY:
return -EAGAIN;
case GB_OP_PROTOCOL_BAD:
return -EPROTONOSUPPORT;
case GB_OP_OVERFLOW:
return -E2BIG;
case GB_OP_TIMEOUT:
return -ETIMEDOUT;
default:
return -EIO;
}
}
/*
* Create a Greybus operation to be sent over the given connection.
* The request buffer will big enough for a payload of the given

View File

@ -101,6 +101,8 @@ int gb_operation_response_send(struct gb_operation *operation);
void gb_operation_cancel(struct gb_operation *operation);
int gb_operation_wait(struct gb_operation *operation);
int gb_operation_status_map(u8 status);
int gb_operation_init(void);
void gb_operation_exit(void);