Rev 2747 | Rev 2757 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2747 | Rev 2756 | ||
---|---|---|---|
Line 84... | Line 84... | ||
84 | return ((tmpfs_dentry_t *) nodep)->size; |
84 | return ((tmpfs_dentry_t *) nodep)->size; |
85 | } |
85 | } |
86 | 86 | ||
87 | static unsigned tmpfs_lnkcnt_get(void *nodep) |
87 | static unsigned tmpfs_lnkcnt_get(void *nodep) |
88 | { |
88 | { |
89 | return 1; |
89 | return ((tmpfs_dentry_t *) nodep)->lnkcnt; |
90 | } |
90 | } |
91 | 91 | ||
92 | static void *tmpfs_child_get(void *nodep) |
92 | static void *tmpfs_child_get(void *nodep) |
93 | { |
93 | { |
94 | return ((tmpfs_dentry_t *) nodep)->child; |
94 | return ((tmpfs_dentry_t *) nodep)->child; |
Line 173... | Line 173... | ||
173 | dentry->parent = NULL; |
173 | dentry->parent = NULL; |
174 | dentry->sibling = NULL; |
174 | dentry->sibling = NULL; |
175 | dentry->child = NULL; |
175 | dentry->child = NULL; |
176 | dentry->name = NULL; |
176 | dentry->name = NULL; |
177 | dentry->type = TMPFS_NONE; |
177 | dentry->type = TMPFS_NONE; |
- | 178 | dentry->lnkcnt = 0; |
|
178 | dentry->size = 0; |
179 | dentry->size = 0; |
179 | dentry->data = NULL; |
180 | dentry->data = NULL; |
180 | link_initialize(&dentry->dh_link); |
181 | link_initialize(&dentry->dh_link); |
181 | } |
182 | } |
182 | 183 | ||
Line 231... | Line 232... | ||
231 | 232 | ||
232 | size_t len = strlen(nm); |
233 | size_t len = strlen(nm); |
233 | char *name = malloc(len + 1); |
234 | char *name = malloc(len + 1); |
234 | if (!name) |
235 | if (!name) |
235 | return false; |
236 | return false; |
- | 237 | ||
- | 238 | childp->lnkcnt++; |
|
- | 239 | ||
236 | strcpy(name, nm); |
240 | strcpy(name, nm); |
237 | childp->name = name; |
241 | childp->name = name; |
238 | 242 | ||
239 | /* Insert the new node into the namespace. */ |
243 | /* Insert the new node into the namespace. */ |
240 | if (parentp->child) { |
244 | if (parentp->child) { |
Line 273... | Line 277... | ||
273 | dentry->parent = NULL; |
277 | dentry->parent = NULL; |
274 | 278 | ||
275 | free(dentry->name); |
279 | free(dentry->name); |
276 | dentry->name = NULL; |
280 | dentry->name = NULL; |
277 | 281 | ||
- | 282 | dentry->lnkcnt--; |
|
- | 283 | ||
278 | return EOK; |
284 | return EOK; |
279 | } |
285 | } |
280 | 286 | ||
281 | void tmpfs_destroy_node(void *nodep) |
287 | void tmpfs_destroy_node(void *nodep) |
282 | { |
288 | { |
283 | tmpfs_dentry_t *dentry = (tmpfs_dentry_t *) nodep; |
289 | tmpfs_dentry_t *dentry = (tmpfs_dentry_t *) nodep; |
284 | 290 | ||
- | 291 | assert(!dentry->lnkcnt); |
|
285 | assert(!dentry->child); |
292 | assert(!dentry->child); |
286 | assert(!dentry->sibling); |
293 | assert(!dentry->sibling); |
287 | 294 | ||
288 | unsigned long index = dentry->index; |
295 | unsigned long index = dentry->index; |
289 | hash_table_remove(&dentries, &index, 1); |
296 | hash_table_remove(&dentries, &index, 1); |