• Home
  • Raw
  • Download

Lines Matching full:message

3 Message Queues
5 Message queue is a simple low-capacity IPC channel between two virtual machines.
7 message queue is unidirectional and buffered in the hypervisor. A full-duplex
10 The size of the queue and the maximum size of the message that can be passed is
11 fixed at creation of the message queue. Resource manager is presently the only
12 use case for message queues, and creates messages queues between itself and VMs
13 with a fixed maximum message size of 240 bytes. Longer messages require a
14 further protocol on top of the message queue messages themselves. For instance,
18 The diagram below shows how message queue works. A typical configuration
19 involves 2 message queues. Message queue 1 allows VM_A to send messages to VM_B.
20 Message queue 2 allows VM_B to send messages to VM_A.
22 1. VM_A sends a message of up to 240 bytes in length. It makes a hypercall
23 with the message to request the hypervisor to add the message to
24 message queue 1's queue. The hypervisor copies memory into the internal
25 message queue buffer; the memory doesn't need to be shared between
31 a. gunyah_msgq_send() has PUSH flag. This is a typical case when the message
34 c. Message queue has reached a threshold depth. Typically, this threshold
38 3. VM_B calls gunyah_msgq_recv() and Gunyah copies message to requested buffer.
40 4. Gunyah raises the corresponding interrupt for VM_A (Tx vIRQ) when the message
46 For VM_B to send a message to VM_A, the process is identical, except that
47 hypercalls reference message queue 2's capability ID. The IRQ will be different
48 for the second message queue.
58 |gunyah_msgq_send() | Tx vIRQ |Message queue 1 |-------->|gunyah_msgq_recv() |
64 |gunyah_msgq_recv() |<--------|Message queue 2 | Tx vIRQ |gunyah_msgq_send() |