Mercurial > dovecot > original-hg > dovecot-1.2
annotate src/lib/aqueue.c @ 9451:9fff30644260 HEAD
istream-concat: Fixed a lot of bugs.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 26 Oct 2009 17:06:57 -0400 |
parents | b9faf4db2a9f |
children | 00cd9aacd03c |
rev | line source |
---|---|
8590
b9faf4db2a9f
Updated copyright notices to include year 2009.
Timo Sirainen <tss@iki.fi>
parents:
7086
diff
changeset
|
1 /* Copyright (c) 2003-2009 Dovecot authors, see the included COPYING file */ |
7079
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
2 |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
3 #include "lib.h" |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
4 #include "array.h" |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
5 #include "aqueue.h" |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
6 |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
7 struct aqueue *aqueue_init(struct array *array) |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
8 { |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
9 struct aqueue *aqueue; |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
10 |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
11 aqueue = i_new(struct aqueue, 1); |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
12 aqueue->arr = array; |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
13 aqueue->area_size = buffer_get_size(aqueue->arr->buffer) / |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
14 aqueue->arr->element_size; |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
15 i_assert(aqueue->area_size > 0); |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
16 return aqueue; |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
17 } |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
18 |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
19 void aqueue_deinit(struct aqueue **_aqueue) |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
20 { |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
21 struct aqueue *aqueue = *_aqueue; |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
22 |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
23 *_aqueue = NULL; |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
24 i_free(aqueue); |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
25 } |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
26 |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
27 static void aqueue_grow(struct aqueue *aqueue) |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
28 { |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
29 unsigned int orig_area_size, count; |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
30 |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
31 i_assert(aqueue->full && aqueue->head == aqueue->tail); |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
32 |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
33 orig_area_size = aqueue->area_size; |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
34 (void)array_append_space_i(aqueue->arr); |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
35 aqueue->area_size = buffer_get_size(aqueue->arr->buffer) / |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
36 aqueue->arr->element_size; |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
37 i_assert(orig_area_size < aqueue->area_size); |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
38 |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
39 count = I_MIN(aqueue->area_size - orig_area_size, aqueue->head); |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
40 array_copy(aqueue->arr, orig_area_size, aqueue->arr, 0, count); |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
41 if (count < aqueue->area_size - orig_area_size) |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
42 aqueue->head = orig_area_size + count; |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
43 else { |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
44 array_copy(aqueue->arr, 0, aqueue->arr, count, |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
45 aqueue->head - count); |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
46 aqueue->head -= count; |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
47 } |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
48 |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
49 i_assert(aqueue->head != aqueue->tail); |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
50 aqueue->full = FALSE; |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
51 } |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
52 |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
53 void aqueue_append(struct aqueue *aqueue, const void *data) |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
54 { |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
55 if (aqueue->full) { |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
56 aqueue_grow(aqueue); |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
57 i_assert(!aqueue->full); |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
58 } |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
59 |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
60 array_idx_set_i(aqueue->arr, aqueue->head, data); |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
61 aqueue->head = (aqueue->head + 1) % aqueue->area_size; |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
62 aqueue->full = aqueue->head == aqueue->tail; |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
63 } |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
64 |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
65 void aqueue_delete(struct aqueue *aqueue, unsigned int n) |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
66 { |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
67 unsigned int idx, count = aqueue_count(aqueue); |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
68 |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
69 i_assert(n < count); |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
70 |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
71 aqueue->full = FALSE; |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
72 if (n == 0) { |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
73 /* optimized deletion from tail */ |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
74 aqueue->tail = (aqueue->tail + 1) % aqueue->area_size; |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
75 return; |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
76 } |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
77 if (n == count-1) { |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
78 /* optimized deletion from head */ |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
79 aqueue->head = (aqueue->head + aqueue->area_size - 1) % |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
80 aqueue->area_size; |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
81 return; |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
82 } |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
83 |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
84 idx = aqueue_idx(aqueue, n); |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
85 if ((n < count/2 || idx > aqueue->head) && idx > aqueue->tail) { |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
86 /* move tail forward. |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
87 ..tail##idx##head.. or ##head..tail##idx## */ |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
88 array_copy(aqueue->arr, aqueue->tail + 1, |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
89 aqueue->arr, aqueue->tail, |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
90 idx - aqueue->tail); |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
91 aqueue->tail++; |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
92 i_assert(aqueue->tail < aqueue->area_size); |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
93 } else { |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
94 /* move head backward. |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
95 ..tail##idx##head.. or ##idx##head..tail## */ |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
96 i_assert(idx < aqueue->head); |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
97 array_copy(aqueue->arr, idx, |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
98 aqueue->arr, idx + 1, |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
99 aqueue->head - idx); |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
100 aqueue->head = (aqueue->head + aqueue->area_size - 1) % |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
101 aqueue->area_size; |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
102 } |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
103 i_assert(aqueue->head < aqueue->area_size && |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
104 aqueue->head != aqueue->tail); |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
105 } |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
106 |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
107 void aqueue_delete_tail(struct aqueue *aqueue) |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
108 { |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
109 aqueue_delete(aqueue, 0); |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
110 } |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
111 |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
112 void aqueue_clear(struct aqueue *aqueue) |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
113 { |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
114 aqueue->head = aqueue->tail = 0; |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
115 aqueue->full = FALSE; |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
116 } |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
117 |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
118 unsigned int aqueue_count(const struct aqueue *aqueue) |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
119 { |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
120 unsigned int area_size = aqueue->area_size; |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
121 |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
122 return aqueue->full ? area_size : |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
123 (area_size - aqueue->tail + aqueue->head) % area_size; |
d45c3058b91a
Renamed queue to aqueue ("array queue") because struct queue already exists
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
124 } |