Lines Matching refs:entry

56 	rw_lock_init(&fLock, "entry cache");
65 EntryCacheEntry* entry = fEntries.Clear(true);
66 while (entry != NULL) {
67 EntryCacheEntry* next = entry->hash_link;
68 free(entry);
69 entry = next;
115 EntryCacheEntry* entry = fEntries.Lookup(key);
116 if (entry != NULL) {
117 entry->node_id = nodeID;
118 entry->missing = missing;
119 if (entry->generation != fCurrentGeneration) {
120 if (entry->index >= 0) {
121 fGenerations[entry->generation].entries[entry->index] = NULL;
122 _AddEntryToCurrentGeneration(entry);
128 entry = (EntryCacheEntry*)malloc(sizeof(EntryCacheEntry) + strlen(name));
129 if (entry == NULL)
132 entry->node_id = nodeID;
133 entry->dir_id = dirID;
134 entry->missing = missing;
135 entry->generation = fCurrentGeneration;
136 entry->index = kEntryNotInArray;
137 strcpy(entry->name, name);
139 fEntries.Insert(entry);
141 _AddEntryToCurrentGeneration(entry);
154 EntryCacheEntry* entry = fEntries.Lookup(key);
155 if (entry == NULL)
158 fEntries.Remove(entry);
160 if (entry->index >= 0) {
161 // remove the entry from its generation and delete it
162 fGenerations[entry->generation].entries[entry->index] = NULL;
163 free(entry);
168 entry->index = kEntryRemoved;
183 EntryCacheEntry* entry = fEntries.Lookup(key);
184 if (entry == NULL)
187 const int32 oldGeneration = atomic_get_and_set(&entry->generation,
189 if (oldGeneration == fCurrentGeneration || entry->index < 0) {
190 // The entry is already in the current generation or is being moved to
192 _nodeID = entry->node_id;
193 _missing = entry->missing;
198 fGenerations[oldGeneration].entries[entry->index] = NULL;
199 entry->index = kEntryNotInArray;
204 fGenerations[fCurrentGeneration].entries[index] = entry;
205 entry->index = index;
206 _nodeID = entry->node_id;
207 _missing = entry->missing;
216 if (entry->index == kEntryRemoved) {
217 // the entry has been removed in the meantime
218 free(entry);
222 _AddEntryToCurrentGeneration(entry);
224 _nodeID = entry->node_id;
225 _missing = entry->missing;
234 EntryCacheEntry* entry = it.Next();) {
235 if (nodeID == entry->node_id && strcmp(entry->name, ".") != 0
236 && strcmp(entry->name, "..") != 0) {
237 _dirID = entry->dir_id;
238 return entry->name;
247 EntryCache::_AddEntryToCurrentGeneration(EntryCacheEntry* entry)
254 fGenerations[fCurrentGeneration].entries[index] = entry;
255 entry->generation = fCurrentGeneration;
256 entry->index = index;
272 // set the new generation and add the entry
274 fGenerations[newGeneration].entries[0] = entry;
276 entry->generation = newGeneration;
277 entry->index = 0;