Lines Matching +full:short +full:- +full:descriptor
1 // SPDX-License-Identifier: GPL-2.0-only
6 * Simple descriptor-based ring. virtio 0.9 compatible event index is used for
15 /* Next - Where next entry will be written.
16 * Prev - "Next" value when event triggered previously.
17 * Event - Peer requested event after writing this entry.
19 static inline bool need_event(unsigned short event, in need_event()
20 unsigned short next, in need_event()
21 unsigned short prev) in need_event()
23 return (unsigned short)(next - event - 1) < (unsigned short)(next - prev); in need_event()
34 unsigned short flags;
35 unsigned short index;
45 unsigned short kick_index;
46 unsigned char reserved0[HOST_GUEST_PADDING - 2];
47 unsigned short call_index;
48 unsigned char reserved1[HOST_GUEST_PADDING - 2];
52 void *buf; /* descriptor is writeable, we can't get buf from there */
64 unsigned char reserved[HOST_GUEST_PADDING - 12];
73 unsigned char reserved[HOST_GUEST_PADDING - 4];
93 guest.kicked_avail_idx = -1; in alloc_ring()
96 host.called_used_idx = -1; in alloc_ring()
117 return -1; in add_inbuf()
119 guest.num_free--; in add_inbuf()
120 head = (ring_size - 1) & (guest.avail_idx++); in add_inbuf()
123 * avoid a shared state with consumer that is polling this descriptor. in add_inbuf()
145 unsigned head = (ring_size - 1) & guest.last_used_idx; in get_buf()
154 index = ring[head].index & (ring_size - 1); in get_buf()
166 unsigned head = (ring_size - 1) & guest.last_used_idx; in used_empty()
180 event->call_index = guest.last_used_idx; in enable_call()
194 need = need_event(event->kick_index, in kick_available()
213 event->kick_index = host.used_idx; in enable_kick()
221 unsigned head = (ring_size - 1) & host.used_idx; in avail_empty()
228 unsigned head = (ring_size - 1) & host.used_idx; in use_buf()
237 /* simple in-order completion: we don't need in use_buf()
239 * can just modify the descriptor in-place. in use_buf()
241 ring[head].len--; in use_buf()
243 * Note: alternative is to write len and flags in one access - in use_buf()
262 need = need_event(event->call_index, in call_used()