Lines Matching refs:ring
23 skc_extent_ring_init(struct skc_extent_ring * const ring, in skc_extent_ring_init() argument
28 ring->head = NULL; in skc_extent_ring_init()
29 ring->last = NULL; in skc_extent_ring_init()
31 ring->outer.rw = (skc_uint2){ 0 }; in skc_extent_ring_init()
32 ring->inner.rw = (skc_uint2){ 0 }; in skc_extent_ring_init()
36 ring->size.pow2 = size_pow2; in skc_extent_ring_init()
37 ring->size.mask = size_pow2 - 1; in skc_extent_ring_init()
38 ring->size.snap = size_snap; in skc_extent_ring_init()
39 ring->size.elem = size_elem; in skc_extent_ring_init()
47 skc_extent_ring_rem(struct skc_extent_ring const * const ring) in skc_extent_ring_rem() argument
49 return ring->size.pow2 - (ring->outer.writes - ring->outer.reads); in skc_extent_ring_rem()
53 skc_extent_ring_is_full(struct skc_extent_ring const * const ring) in skc_extent_ring_is_full() argument
55 return (ring->outer.writes - ring->outer.reads) == ring->size.pow2; in skc_extent_ring_is_full()
59 skc_extent_ring_wip_count(struct skc_extent_ring const * const ring) in skc_extent_ring_wip_count() argument
61 return ring->outer.writes - ring->inner.reads; in skc_extent_ring_wip_count()
65 skc_extent_ring_wip_rem(struct skc_extent_ring const * const ring) in skc_extent_ring_wip_rem() argument
67 return SKC_MIN_MACRO(skc_extent_ring_rem(ring),ring->size.snap) - skc_extent_ring_wip_count(ring); in skc_extent_ring_wip_rem()
71 skc_extent_ring_wip_is_full(struct skc_extent_ring const * const ring) in skc_extent_ring_wip_is_full() argument
73 …return skc_extent_ring_wip_count(ring) == SKC_MIN_MACRO(skc_extent_ring_rem(ring),ring->size.snap); in skc_extent_ring_wip_is_full()
77 skc_extent_ring_wip_index_inc(struct skc_extent_ring * const ring) in skc_extent_ring_wip_index_inc() argument
79 return ring->outer.writes++ & ring->size.mask; in skc_extent_ring_wip_index_inc()
87 skc_extent_ring_checkpoint(struct skc_extent_ring * const ring) in skc_extent_ring_checkpoint() argument
89 ring->inner.writes = ring->outer.writes; in skc_extent_ring_checkpoint()
98 struct skc_extent_ring * const ring) in skc_extent_ring_snap_alloc() argument
110 snap->ring = ring; in skc_extent_ring_snap_alloc()
114 snap->reads = ring->inner.reads; in skc_extent_ring_snap_alloc()
115 snap->writes = ring->inner.reads = ring->inner.writes; in skc_extent_ring_snap_alloc()
121 if (ring->head == NULL) in skc_extent_ring_snap_alloc()
123 ring->head = snap; in skc_extent_ring_snap_alloc()
124 ring->last = snap; in skc_extent_ring_snap_alloc()
128 ring->last->next = snap; in skc_extent_ring_snap_alloc()
129 ring->last = snap; in skc_extent_ring_snap_alloc()
150 struct skc_extent_ring * const ring = snap->ring; in skc_extent_ring_snap_free() local
151 struct skc_extent_ring_snap * curr = ring->head; in skc_extent_ring_snap_free()
158 ring->outer.reads = curr->writes; in skc_extent_ring_snap_free()
169 ring->last = NULL; in skc_extent_ring_snap_free()
177 ring->head = curr; in skc_extent_ring_snap_free()
193 return snap->reads & snap->ring->size.mask; in skc_extent_ring_snap_from()
199 return snap->writes & snap->ring->size.mask; in skc_extent_ring_snap_to()