staging: vc04_services: Add vchi_queue_kernel_message function
The vchi_msg_queue function which is used by other drivers to queue a message is difficult to understand and overly generic. Add a new function which is a wrapper on top of vchi_msg_queue that is specifically for queuing a message located in kernel address space. int vchi_queue_kernel_message(VCHI_SERVICE_HANDLE_T handle, void *data, unsigned int size) Signed-off-by: Michael Zoran <mzoran@crowfest.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
0cec463e39
commit
fbcaed9e32
|
@ -227,6 +227,12 @@ extern int32_t
|
|||
void *context,
|
||||
uint32_t data_size);
|
||||
|
||||
/* Routine to send a message from kernel memory across a service */
|
||||
extern int
|
||||
vchi_queue_kernel_message(VCHI_SERVICE_HANDLE_T handle,
|
||||
void *data,
|
||||
unsigned int size);
|
||||
|
||||
// Routine to receive a msg from a service
|
||||
// Dequeue is equivalent to hold, copy into client buffer, release
|
||||
extern int32_t vchi_msg_dequeue( VCHI_SERVICE_HANDLE_T handle,
|
||||
|
|
|
@ -188,6 +188,28 @@ int32_t vchi_msg_queue(VCHI_SERVICE_HANDLE_T handle,
|
|||
}
|
||||
EXPORT_SYMBOL(vchi_msg_queue);
|
||||
|
||||
static ssize_t
|
||||
vchi_queue_kernel_message_callback(void *context,
|
||||
void *dest,
|
||||
size_t offset,
|
||||
size_t maxsize)
|
||||
{
|
||||
memcpy(dest, context + offset, maxsize);
|
||||
return maxsize;
|
||||
}
|
||||
|
||||
int
|
||||
vchi_queue_kernel_message(VCHI_SERVICE_HANDLE_T handle,
|
||||
void *data,
|
||||
unsigned int size)
|
||||
{
|
||||
return vchi_msg_queue(handle,
|
||||
vchi_queue_kernel_message_callback,
|
||||
data,
|
||||
size);
|
||||
}
|
||||
EXPORT_SYMBOL(vchi_queue_kernel_message);
|
||||
|
||||
/***********************************************************
|
||||
* Name: vchi_bulk_queue_receive
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue