version 1.9, 2014/07/20 09:59:42 |
version 1.10, 2014/07/20 10:32:23 |
|
|
ring_clear_mark(ring) |
ring_clear_mark(ring) |
Ring *ring; |
Ring *ring; |
{ |
{ |
ring->mark = 0; |
ring->mark = NULL; |
} |
} |
|
|
/* |
/* |
|
|
|
|
if (ring->mark && |
if (ring->mark && |
(ring_subtract(ring, ring->mark, ring->consume) < count)) { |
(ring_subtract(ring, ring->mark, ring->consume) < count)) { |
ring->mark = 0; |
ring->mark = NULL; |
} |
} |
ring->consume = ring_increment(ring, ring->consume, count); |
ring->consume = ring_increment(ring, ring->consume, count); |
ring->consumetime = ++ring_clock; |
ring->consumetime = ++ring_clock; |
|
|
ring_full_count(ring) |
ring_full_count(ring) |
Ring *ring; |
Ring *ring; |
{ |
{ |
if ((ring->mark == 0) || (ring->mark == ring->consume)) { |
if ((ring->mark == NULL) || (ring->mark == ring->consume)) { |
if (ring_full(ring)) { |
if (ring_full(ring)) { |
return ring->size; /* nothing consumed, but full */ |
return ring->size; /* nothing consumed, but full */ |
} else { |
} else { |
|
|
ring_full_consecutive(ring) |
ring_full_consecutive(ring) |
Ring *ring; |
Ring *ring; |
{ |
{ |
if ((ring->mark == 0) || (ring->mark == ring->consume)) { |
if ((ring->mark == NULL) || (ring->mark == ring->consume)) { |
if ((ring->supply < ring->consume) || ring_full(ring)) { |
if ((ring->supply < ring->consume) || ring_full(ring)) { |
return ring_subtract(ring, ring->top, ring->consume); |
return ring_subtract(ring, ring->top, ring->consume); |
} else { |
} else { |