Lines Matching +full:4 +full:- +full:ring
2 * Argo : Hypervisor-Mediated data eXchange
7 * Copyright (c) 2018-2019, BAE Systems
36 /* The maximum size of an Argo ring is defined to be: 16MB (0x1000000 bytes). */
39 /* Fixed-width type for "argo port" number. Nothing to do with evtchns. */
42 /* gfn type: 64-bit fixed-width on all architectures */
81 * Header space reserved for later use. Align the start of the ring to a
85 uint8_t ring[XEN_FLEX_ARRAY_DIM]; member
103 /* Messages on the ring are padded to a multiple of this size. */
109 /* Ring exists */
111 /* Ring is shared, not unicast */
113 /* Ring is empty */
117 /* Insufficient ring size for space_required bytes */
118 #define XEN_ARGO_RING_EMSGSIZE (1U << 4)
119 /* Too many domains waiting for available space signals for this ring */
124 xen_argo_addr_t ring; member
153 * Register a ring using the guest-supplied memory pages.
154 * Also used to reregister an existing ring (eg. after resume from hibernate).
156 * The first argument struct indicates the port number for the ring to register
157 * and the partner domain, if any, that is to be allowed to send to the ring.
160 * any domain (XSM notwithstanding) to send to the ring.
163 * indicates the size of the array. This operation only supports 4K-sized pages.
168 * arg4: unsigned long flags (32-bit value)
175 * If set, reject attempts to (re)register an existing established ring.
176 * If clear, reregistration occurs if the ring exists, with the new ring
189 * Unregister a previously-registered ring, ending communication.
204 * for the message being sent, which are used to find the destination ring:
205 * Xen first looks for a most-specific match with a registered ring with
210 * For each iov entry, send iov_len bytes from iov_base to the destination ring.
211 * If insufficient space exists in the destination ring, it will return -EAGAIN
214 * The message type is a 32-bit data field available to communicate message
215 * context data (eg. kernel-to-kernel, rather than application layer).
220 * arg4: unsigned long message type (32-bit value)
229 * ent->ring is the xen_argo_addr_t of the ring you want information on.
230 * Uses the same ring matching rules as XEN_ARGO_OP_sendv.
232 * ent->space_required : if this field is not null then Xen will check
233 * that there is space in the destination ring for this many bytes of payload.
234 * If the ring is too small for the requested space_required, it will set the
237 * and CANCEL any pending notification for that ent->ring; otherwise it
241 * XEN_ARGO_RING_EXISTS ring exists
242 * XEN_ARGO_RING_SHARED ring is registered for wildcard partner
243 * XEN_ARGO_RING_EMPTY ring is empty
245 * XEN_ARGO_RING_EMSGSIZE space_required is too large for the ring size
253 #define XEN_ARGO_OP_notify 4