2 * Copyright (C) 2016 The Android Open Source Project
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #define FILE_DB_HASHSIZE 8192
22 struct files_db_s *next;
24 int global_filename_ix;
27 /* Lifted from Wikipedia Jenkins Hash function page */
28 static inline u_int32_t
29 jenkins_one_at_a_time_hash(char *key, size_t len)
33 for(hash = i = 0; i < len; ++i) {
45 files_db_update_size(void *node, u_int64_t new_size)
47 struct files_db_s *db_node = (struct files_db_s *)node;
49 if (db_node->size < new_size)
50 db_node->size = new_size;
54 files_db_add_to_size(void *node, u_int64_t size_incr)
56 ((struct files_db_s *)node)->size += size_incr;
60 files_db_get_fileno(void *node)
62 return (((struct files_db_s *)node)->fileno);
66 files_db_get_filename(void *node)
68 return (((struct files_db_s *)node)->filename);
72 void *files_db_create_handle(void);
73 void files_db_write_objects(FILE *fp);
74 void *files_db_add(char *filename);
75 void *files_db_lookup(char *filename);
76 int files_db_get_total_obj(void);
77 void init_filename_cache(void);
78 void store_filename_cache(void);