Lines Matching defs:eb

64 static int ebuf_head_extend(struct ebuf *eb, size_t size);
65 static int ebuf_tail_extend(struct ebuf *eb, size_t size);
70 struct ebuf *eb;
73 eb = malloc(sizeof(*eb));
74 if (eb == NULL)
77 eb->eb_start = malloc(size);
78 if (eb->eb_start == NULL) {
80 free(eb);
84 eb->eb_end = eb->eb_start + size;
89 eb->eb_used = eb->eb_start + PAGE_SIZE / 4;
90 eb->eb_size = 0;
91 eb->eb_magic = EBUF_MAGIC;
93 return (eb);
97 ebuf_free(struct ebuf *eb)
100 PJDLOG_ASSERT(eb != NULL && eb->eb_magic == EBUF_MAGIC);
102 eb->eb_magic = 0;
104 free(eb->eb_start);
105 free(eb);
109 ebuf_add_head(struct ebuf *eb, const void *data, size_t size)
112 PJDLOG_ASSERT(eb != NULL && eb->eb_magic == EBUF_MAGIC);
114 if (size > (size_t)(eb->eb_used - eb->eb_start)) {
119 if (ebuf_head_extend(eb, size) == -1)
122 PJDLOG_ASSERT(size <= (size_t)(eb->eb_used - eb->eb_start));
124 eb->eb_size += size;
125 eb->eb_used -= size;
130 bcopy(data, eb->eb_used, size);
136 ebuf_add_tail(struct ebuf *eb, const void *data, size_t size)
139 PJDLOG_ASSERT(eb != NULL && eb->eb_magic == EBUF_MAGIC);
141 if (size > (size_t)(eb->eb_end - (eb->eb_used + eb->eb_size))) {
146 if (ebuf_tail_extend(eb, size) == -1)
150 (size_t)(eb->eb_end - (eb->eb_used + eb->eb_size)));
156 bcopy(data, eb->eb_used + eb->eb_size, size);
157 eb->eb_size += size;
163 ebuf_del_head(struct ebuf *eb, size_t size)
166 PJDLOG_ASSERT(eb != NULL && eb->eb_magic == EBUF_MAGIC);
167 PJDLOG_ASSERT(size <= eb->eb_size);
169 eb->eb_used += size;
170 eb->eb_size -= size;
174 ebuf_del_tail(struct ebuf *eb, size_t size)
177 PJDLOG_ASSERT(eb != NULL && eb->eb_magic == EBUF_MAGIC);
178 PJDLOG_ASSERT(size <= eb->eb_size);
180 eb->eb_size -= size;
187 ebuf_data(struct ebuf *eb, size_t *sizep)
190 PJDLOG_ASSERT(eb != NULL && eb->eb_magic == EBUF_MAGIC);
193 *sizep = eb->eb_size;
194 return (eb->eb_size > 0 ? eb->eb_used : NULL);
201 ebuf_size(struct ebuf *eb)
204 PJDLOG_ASSERT(eb != NULL && eb->eb_magic == EBUF_MAGIC);
206 return (eb->eb_size);
213 ebuf_head_extend(struct ebuf *eb, size_t size)
218 PJDLOG_ASSERT(eb != NULL && eb->eb_magic == EBUF_MAGIC);
220 newsize = eb->eb_end - eb->eb_start + (PAGE_SIZE / 4) + size;
226 newstart + (PAGE_SIZE / 4) + size + (eb->eb_used - eb->eb_start);
228 bcopy(eb->eb_used, newused, eb->eb_size);
230 eb->eb_start = newstart;
231 eb->eb_used = newused;
232 eb->eb_end = newstart + newsize;
241 ebuf_tail_extend(struct ebuf *eb, size_t size)
246 PJDLOG_ASSERT(eb != NULL && eb->eb_magic == EBUF_MAGIC);
248 newsize = eb->eb_end - eb->eb_start + size + ((3 * PAGE_SIZE) / 4);
250 newstart = realloc(eb->eb_start, newsize);
254 eb->eb_used = newstart + (eb->eb_used - eb->eb_start);
255 eb->eb_start = newstart;
256 eb->eb_end = newstart + newsize;