1 // © 2021 Qualcomm Innovation Center, Inc. All rights reserved.
2 //
3 // SPDX-License-Identifier: BSD-3-Clause
4 
5 // Configure the message queue.
6 // The object's header lock must be held and object state must be
7 // OBJECT_STATE_INIT.
8 error_t
9 msgqueue_configure(msgqueue_t *msgqueue, size_t max_msg_size,
10 		   count_t queue_depth);
11 
12 // Send a message to a message queue
13 // The argument from_kernel, if true, indicates that the message is in a kernel
14 // buffer.
15 bool_result_t
16 msgqueue_send_msg(msgqueue_t *msgqueue, size_t size, kernel_or_gvaddr_t msg,
17 		  bool push, bool from_kernel);
18 
19 // Receive a message from a message queue
20 // The argument to_kernel, if true, indicates that the destination message
21 // buffer is a kernel address.
22 receive_info_result_t
23 msgqueue_receive_msg(msgqueue_t *msgqueue, kernel_or_gvaddr_t buffer,
24 		     size_t max_size, bool to_kernel);
25 
26 void
27 msgqueue_flush_queue(msgqueue_t *msgqueue);
28 
29 error_t
30 msgqueue_bind(msgqueue_t *msgqueue, vic_t *vic, virq_t virq,
31 	      virq_source_t *source, virq_trigger_t trigger);
32 
33 void
34 msgqueue_unbind(virq_source_t *source);
35