Lines Matching refs:db

121 	struct icdb *db;  in icdb_new()  local
130 if (!(db = calloc(1, sizeof(*db)))) in icdb_new()
133 free(db); in icdb_new()
136 db->info = info; in icdb_new()
137 db->fd = -1; in icdb_new()
141 if ((db->entries = reallocarray(NULL, nentries, entrysize))) in icdb_new()
142 db->allocated = nentries; in icdb_new()
149 return db; in icdb_new()
156 struct icdb *db = NULL; in icdb_open() local
179 if (!(db = calloc(1, sizeof(*db)))) in icdb_open()
181 db->info = info; in icdb_open()
189 db->idxdata[i] = ptr + sizeof(*info) + i * idxlen; in icdb_open()
190 db->entries = ptr + baseoff; in icdb_open()
191 db->maplen = sb.st_size; in icdb_open()
192 db->fd = fd; in icdb_open()
193 return db; in icdb_open()
201 free(db); in icdb_open()
208 icdb_get(struct icdb *db, void *entry, uint32_t idx) in icdb_get() argument
210 uint32_t entrysize = db->info->entrysize; in icdb_get()
212 memcpy(entry, (uint8_t *)db->entries + idx * entrysize, entrysize); in icdb_get()
218 icdb_lookup(struct icdb *db, int keynum, const void *key, void *entry, in icdb_lookup() argument
221 struct icdbinfo *info = db->info; in icdb_lookup()
231 idxdata = db->idxdata[keynum]; in icdb_lookup()
235 if (icdb_get(db, entry, offset) != 0) { in icdb_lookup()
252 icdb_nentries(struct icdb *db) in icdb_nentries() argument
254 return db->info->nentries; in icdb_nentries()
259 icdb_entries(struct icdb *db) in icdb_entries() argument
261 return db->entries; in icdb_entries()
266 icdb_update(struct icdb *db, const void *entry, int offset) in icdb_update() argument
268 struct icdbinfo *info = db->info; in icdb_update()
278 memcpy((uint8_t *)db->entries + offset * entrysize, entry, entrysize); in icdb_update()
279 if (db->fd != -1) { in icdb_update()
280 msync((uint8_t *)db->entries + offset * entrysize, entrysize, in icdb_update()
288 icdb_add(struct icdb *db, const void *entry) in icdb_add() argument
290 struct icdbinfo *info = db->info; in icdb_add()
293 if (db->allocated == info->nentries) { in icdb_add()
295 size_t amt = db->allocated ? db->allocated * 2 : 63; in icdb_add()
296 if (!(p = reallocarray(db->entries, amt, entrysize))) in icdb_add()
298 db->allocated = amt; in icdb_add()
299 db->entries = p; in icdb_add()
301 memcpy((uint8_t *)db->entries + info->nentries * entrysize, in icdb_add()
309 icdb_rehash(struct icdb *db) in icdb_rehash() argument
311 struct icdbinfo *info = db->info; in icdb_rehash()
323 uint32_t *idxdata = reallocarray(db->idxdata[i], in icdb_rehash()
328 db->idxdata[i] = idxdata; in icdb_rehash()
332 uint32_t *idxdata = db->idxdata[i]; in icdb_rehash()
334 (uint8_t *)db->entries + j * entrysize + in icdb_rehash()
346 icdb_save(struct icdb *db, int fd) in icdb_save() argument
348 struct icdbinfo *info = db->info; in icdb_save()
353 if (icdb_rehash(db) != 0) in icdb_save()
364 if (write(fd, db->idxdata[i], idxlen) != idxlen) in icdb_save()
367 if (write(fd, db->entries, info->nentries * entrysize) != in icdb_save()
375 icdb_close(struct icdb *db) in icdb_close() argument
379 if (db->fd == -1) { in icdb_close()
380 for (i = 0; i < db->info->nkeys; i++) in icdb_close()
381 free(db->idxdata[i]); in icdb_close()
382 free(db->entries); in icdb_close()
383 free(db->info); in icdb_close()
385 munmap(db->info, db->maplen); in icdb_close()
386 close(db->fd); in icdb_close()
388 free(db); in icdb_close()