• Home
  • Raw
  • Download

Lines Matching full:data

32 static __inline odb_descr_t * odb_to_descr(odb_data_t * data)  in odb_to_descr()  argument
34 return (odb_descr_t *)(((char*)data->base_memory) + data->sizeof_header); in odb_to_descr()
38 static __inline odb_node_t * odb_to_node_base(odb_data_t * data) in odb_to_node_base() argument
40 return (odb_node_t *)(((char *)data->base_memory) + data->offset_node); in odb_to_node_base()
44 static __inline odb_index_t * odb_to_hash_base(odb_data_t * data) in odb_to_hash_base() argument
46 return (odb_index_t *)(((char *)data->base_memory) + in odb_to_hash_base()
47 data->offset_node + in odb_to_hash_base()
48 (data->descr->size * sizeof(odb_node_t))); in odb_to_hash_base()
55 static unsigned int tables_size(odb_data_t const * data, odb_node_nr_t node_nr) in tables_size() argument
61 size += data->offset_node; in tables_size()
67 int odb_grow_hashtable(odb_data_t * data) in odb_grow_hashtable() argument
74 old_file_size = tables_size(data, data->descr->size); in odb_grow_hashtable()
75 new_file_size = tables_size(data, data->descr->size * 2); in odb_grow_hashtable()
77 if (ftruncate(data->fd, new_file_size)) in odb_grow_hashtable()
82 MAP_SHARED, data->fd, 0); in odb_grow_hashtable()
84 new_map = mremap(data->base_memory, in odb_grow_hashtable()
92 munmap(data->base_memory, old_file_size); in odb_grow_hashtable()
95 data->base_memory = new_map; in odb_grow_hashtable()
96 data->descr = odb_to_descr(data); in odb_grow_hashtable()
97 data->descr->size *= 2; in odb_grow_hashtable()
98 data->node_base = odb_to_node_base(data); in odb_grow_hashtable()
99 data->hash_base = odb_to_hash_base(data); in odb_grow_hashtable()
100 data->hash_mask = (data->descr->size * BUCKET_FACTOR) - 1; in odb_grow_hashtable()
118 for (pos = 0 ; pos < data->descr->size*BUCKET_FACTOR ; ++pos) in odb_grow_hashtable()
119 data->hash_base[pos] = 0; in odb_grow_hashtable()
122 for (pos = 1; pos < data->descr->current_size; ++pos) { in odb_grow_hashtable()
123 odb_node_t * node = &data->node_base[pos]; in odb_grow_hashtable()
124 size_t index = odb_do_hash(data, node->key); in odb_grow_hashtable()
125 node->next = data->hash_base[index]; in odb_grow_hashtable()
126 data->hash_base[index] = pos; in odb_grow_hashtable()
135 odb->data = NULL; in odb_init()
180 odb_data_t * data; in odb_open() local
188 data = find_samples_data(hash, filename); in odb_open()
189 if (data) { in odb_open()
190 odb->data = data; in odb_open()
191 data->ref_count++; in odb_open()
195 data = xmalloc(sizeof(odb_data_t)); in odb_open()
196 memset(data, '\0', sizeof(odb_data_t)); in odb_open()
197 list_init(&data->list); in odb_open()
198 data->offset_node = sizeof_header + sizeof(odb_descr_t); in odb_open()
199 data->sizeof_header = sizeof_header; in odb_open()
200 data->ref_count = 1; in odb_open()
201 data->filename = xstrdup(filename); in odb_open()
203 data->fd = open(filename, flags, 0644); in odb_open()
204 if (data->fd < 0) { in odb_open()
209 if (fstat(data->fd, &stat_buf)) { in odb_open()
222 nr_node = DEFAULT_NODE_NR(data->offset_node); in odb_open()
224 file_size = tables_size(data, nr_node); in odb_open()
225 if (ftruncate(data->fd, file_size)) { in odb_open()
231 nr_node = (stat_buf.st_size - data->offset_node) / in odb_open()
235 data->base_memory = mmap(0, tables_size(data, nr_node), mmflags, in odb_open()
236 MAP_SHARED, data->fd, 0); in odb_open()
238 if (data->base_memory == MAP_FAILED) { in odb_open()
243 data->descr = odb_to_descr(data); in odb_open()
246 data->descr->size = nr_node; in odb_open()
248 data->descr->current_size = 1; in odb_open()
251 if (nr_node != data->descr->size) { in odb_open()
257 data->hash_base = odb_to_hash_base(data); in odb_open()
258 data->node_base = odb_to_node_base(data); in odb_open()
259 data->hash_mask = (data->descr->size * BUCKET_FACTOR) - 1; in odb_open()
261 list_add(&data->list, &files_hash[hash]); in odb_open()
262 odb->data = data; in odb_open()
266 munmap(data->base_memory, tables_size(data, nr_node)); in odb_open()
268 close(data->fd); in odb_open()
269 free(data->filename); in odb_open()
270 free(data); in odb_open()
271 odb->data = NULL; in odb_open()
278 odb_data_t * data = odb->data; in odb_close() local
280 if (data) { in odb_close()
281 data->ref_count--; in odb_close()
282 if (data->ref_count == 0) { in odb_close()
283 size_t size = tables_size(data, data->descr->size); in odb_close()
284 list_del(&data->list); in odb_close()
285 munmap(data->base_memory, size); in odb_close()
286 if (data->fd >= 0) in odb_close()
287 close(data->fd); in odb_close()
288 free(data->filename); in odb_close()
289 free(data); in odb_close()
290 odb->data = NULL; in odb_close()
298 if (!odb->data) in odb_open_count()
300 return odb->data->ref_count; in odb_open_count()
306 return odb->data->base_memory; in odb_get_data()
312 odb_data_t * data = odb->data; in odb_sync() local
315 if (!data) in odb_sync()
318 size = tables_size(data, data->descr->size); in odb_sync()
319 msync(data->base_memory, size, MS_ASYNC); in odb_sync()