Lines Matching +full:de +full:- +full:assert

3 /*-
4 * SPDX-License-Identifier: BSD-2-Clause
35 #include <assert.h>
77 df->df_num_entries = 0; in _citrus_db_factory_create()
78 df->df_total_key_size = df->df_total_data_size = 0; in _citrus_db_factory_create()
79 STAILQ_INIT(&df->df_entries); in _citrus_db_factory_create()
80 df->df_hashfunc = hashfunc; in _citrus_db_factory_create()
81 df->df_hashfunc_closure = hashfunc_closure; in _citrus_db_factory_create()
91 struct _citrus_db_factory_entry *de; in _citrus_db_factory_free() local
93 while ((de = STAILQ_FIRST(&df->df_entries)) != NULL) { in _citrus_db_factory_free()
94 STAILQ_REMOVE_HEAD(&df->df_entries, de_entry); in _citrus_db_factory_free()
95 if (de->de_key_free) in _citrus_db_factory_free()
96 free(_region_head(&de->de_key)); in _citrus_db_factory_free()
97 if (de->de_data_free) in _citrus_db_factory_free()
98 free(_region_head(&de->de_data)); in _citrus_db_factory_free()
99 free(de); in _citrus_db_factory_free()
107 return ((sz + DB_ALIGN - 1) & ~(DB_ALIGN - 1)); in ceilto()
114 struct _citrus_db_factory_entry *de; in _citrus_db_factory_add() local
116 de = malloc(sizeof(*de)); in _citrus_db_factory_add()
117 if (de == NULL) in _citrus_db_factory_add()
118 return (-1); in _citrus_db_factory_add()
120 de->de_hashvalue = df->df_hashfunc(key); in _citrus_db_factory_add()
121 de->de_key = *key; in _citrus_db_factory_add()
122 de->de_key_free = keyfree; in _citrus_db_factory_add()
123 de->de_data = *data; in _citrus_db_factory_add()
124 de->de_data_free = datafree; in _citrus_db_factory_add()
125 de->de_idx = -1; in _citrus_db_factory_add()
127 STAILQ_INSERT_TAIL(&df->df_entries, de, de_entry); in _citrus_db_factory_add()
128 df->df_total_key_size += _region_size(key); in _citrus_db_factory_add()
129 df->df_total_data_size += ceilto(_region_size(data)); in _citrus_db_factory_add()
130 df->df_num_entries++; in _citrus_db_factory_add()
215 sz += ceilto(_CITRUS_DB_ENTRY_SIZE * df->df_num_entries); in _citrus_db_factory_calc_size()
216 sz += ceilto(df->df_total_key_size); in _citrus_db_factory_calc_size()
217 sz += df->df_total_data_size; in _citrus_db_factory_calc_size()
244 for (i = ceilto(*rofs) - *rofs; i > 0; i--) in putpad()
263 struct _citrus_db_factory_entry *de, **depp, *det; in _citrus_db_factory_serialize() local
268 if (df->df_num_entries == 0) { in _citrus_db_factory_serialize()
273 depp = calloc(df->df_num_entries, sizeof(*depp)); in _citrus_db_factory_serialize()
275 return (-1); in _citrus_db_factory_serialize()
278 STAILQ_FOREACH(de, &df->df_entries, de_entry) { in _citrus_db_factory_serialize()
279 de->de_hashvalue %= df->df_num_entries; in _citrus_db_factory_serialize()
280 de->de_idx = -1; in _citrus_db_factory_serialize()
281 de->de_next = NULL; in _citrus_db_factory_serialize()
282 if (depp[de->de_hashvalue] == NULL) { in _citrus_db_factory_serialize()
283 depp[de->de_hashvalue] = de; in _citrus_db_factory_serialize()
284 de->de_idx = (int)de->de_hashvalue; in _citrus_db_factory_serialize()
290 STAILQ_FOREACH(de, &df->df_entries, de_entry) { in _citrus_db_factory_serialize()
291 if (de->de_idx == -1) { in _citrus_db_factory_serialize()
292 det = depp[de->de_hashvalue]; in _citrus_db_factory_serialize()
293 while (det->de_next != NULL) in _citrus_db_factory_serialize()
294 det = det->de_next; in _citrus_db_factory_serialize()
295 det->de_next = de; in _citrus_db_factory_serialize()
298 depp[i] = de; in _citrus_db_factory_serialize()
299 de->de_idx = (int)i; in _citrus_db_factory_serialize()
304 ceilto(df->df_num_entries*_CITRUS_DB_ENTRY_SIZE); in _citrus_db_factory_serialize()
305 dataofs = keyofs + ceilto(df->df_total_key_size); in _citrus_db_factory_serialize()
308 dump_header(r, magic, &ofs, df->df_num_entries); in _citrus_db_factory_serialize()
311 for (i = 0; i < df->df_num_entries; i++) { in _citrus_db_factory_serialize()
312 de = depp[i]; in _citrus_db_factory_serialize()
314 if (de->de_next) { in _citrus_db_factory_serialize()
316 de->de_next->de_idx * _CITRUS_DB_ENTRY_SIZE; in _citrus_db_factory_serialize()
318 put32(r, &ofs, de->de_hashvalue); in _citrus_db_factory_serialize()
321 put32(r, &ofs, _region_size(&de->de_key)); in _citrus_db_factory_serialize()
323 put32(r, &ofs, _region_size(&de->de_data)); in _citrus_db_factory_serialize()
325 _region_head(&de->de_key), _region_size(&de->de_key)); in _citrus_db_factory_serialize()
326 keyofs += _region_size(&de->de_key); in _citrus_db_factory_serialize()
328 _region_head(&de->de_data), _region_size(&de->de_data)); in _citrus_db_factory_serialize()
329 dataofs += _region_size(&de->de_data); in _citrus_db_factory_serialize()