Lines Matching refs:cs
220 struct string *cs, *tmp; in alloc_string() local
224 list_for_each_entry(cs, free_list, list) { in alloc_string()
225 if (cs->size < size) in alloc_string()
227 if (cs->size > size + sizeof(struct string)) { in alloc_string()
228 char *endaddr = (char *) (cs + 1) + cs->size; in alloc_string()
231 cs->size -= size + sizeof(struct string); in alloc_string()
232 cs = tmp; in alloc_string()
234 list_del(&cs->list); in alloc_string()
235 cs->len = len; in alloc_string()
236 INIT_LIST_HEAD(&cs->list); in alloc_string()
237 INIT_LIST_HEAD(&cs->update); in alloc_string()
238 return cs; in alloc_string()
244 free_string(struct list_head *free_list, struct string *cs) in free_string() argument
252 if (list_entry(p, struct string, list) > cs) in free_string()
259 if ((char *) (cs + 1) + cs->size == (char *) tmp) { in free_string()
261 cs->size += tmp->size + sizeof(struct string); in free_string()
267 if ((char *) (tmp + 1) + tmp->size == (char *) cs) { in free_string()
268 tmp->size += cs->size + sizeof(struct string); in free_string()
272 __list_add(&cs->list, left, left->next); in free_string()
273 return cs->size; in free_string()
279 struct string *cs; in add_string_memory() local
281 cs = (struct string *) mem; in add_string_memory()
282 cs->size = size - sizeof(struct string); in add_string_memory()
283 free_string(free_list, cs); in add_string_memory()