Rev 2857 | Rev 2863 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2857 | Rev 2858 | ||
|---|---|---|---|
| Line 73... | Line 73... | ||
| 73 | static void *tmpfs_node_get(dev_handle_t, fs_index_t, fs_index_t); |
73 | static void *tmpfs_node_get(dev_handle_t, fs_index_t, fs_index_t); |
| 74 | static void tmpfs_node_put(void *); |
74 | static void tmpfs_node_put(void *); |
| 75 | static void *tmpfs_create_node(int); |
75 | static void *tmpfs_create_node(int); |
| 76 | static bool tmpfs_link_node(void *, void *, const char *); |
76 | static bool tmpfs_link_node(void *, void *, const char *); |
| 77 | static int tmpfs_unlink_node(void *, void *); |
77 | static int tmpfs_unlink_node(void *, void *); |
| 78 | static bool tmpfs_destroy_node(void *); |
78 | static int tmpfs_destroy_node(void *); |
| 79 | 79 | ||
| 80 | /* Implementation of helper functions. */ |
80 | /* Implementation of helper functions. */ |
| 81 | static fs_index_t tmpfs_index_get(void *nodep) |
81 | static fs_index_t tmpfs_index_get(void *nodep) |
| 82 | { |
82 | { |
| 83 | return ((tmpfs_dentry_t *) nodep)->index; |
83 | return ((tmpfs_dentry_t *) nodep)->index; |
| Line 372... | Line 372... | ||
| 372 | childp->lnkcnt--; |
372 | childp->lnkcnt--; |
| 373 | 373 | ||
| 374 | return EOK; |
374 | return EOK; |
| 375 | } |
375 | } |
| 376 | 376 | ||
| 377 | bool tmpfs_destroy_node(void *nodep) |
377 | int tmpfs_destroy_node(void *nodep) |
| 378 | { |
378 | { |
| 379 | tmpfs_dentry_t *dentry = (tmpfs_dentry_t *) nodep; |
379 | tmpfs_dentry_t *dentry = (tmpfs_dentry_t *) nodep; |
| 380 | 380 | ||
| 381 | assert(!dentry->lnkcnt); |
381 | assert(!dentry->lnkcnt); |
| 382 | assert(!dentry->child); |
382 | assert(!dentry->child); |
| Line 388... | Line 388... | ||
| 388 | hash_table_destroy(&dentry->names); |
388 | hash_table_destroy(&dentry->names); |
| 389 | 389 | ||
| 390 | if (dentry->type == TMPFS_FILE) |
390 | if (dentry->type == TMPFS_FILE) |
| 391 | free(dentry->data); |
391 | free(dentry->data); |
| 392 | free(dentry); |
392 | free(dentry); |
| 393 | return true; |
393 | return EOK; |
| 394 | } |
394 | } |
| 395 | 395 | ||
| 396 | void tmpfs_lookup(ipc_callid_t rid, ipc_call_t *request) |
396 | void tmpfs_lookup(ipc_callid_t rid, ipc_call_t *request) |
| 397 | { |
397 | { |
| 398 | /* Initialize TMPFS. */ |
398 | /* Initialize TMPFS. */ |
| Line 577... | Line 577... | ||
| 577 | 577 | ||
| 578 | void tmpfs_destroy(ipc_callid_t rid, ipc_call_t *request) |
578 | void tmpfs_destroy(ipc_callid_t rid, ipc_call_t *request) |
| 579 | { |
579 | { |
| 580 | dev_handle_t dev_handle = (dev_handle_t)IPC_GET_ARG1(*request); |
580 | dev_handle_t dev_handle = (dev_handle_t)IPC_GET_ARG1(*request); |
| 581 | fs_index_t index = (fs_index_t)IPC_GET_ARG2(*request); |
581 | fs_index_t index = (fs_index_t)IPC_GET_ARG2(*request); |
| - | 582 | int rc; |
|
| 582 | 583 | ||
| 583 | link_t *hlp; |
584 | link_t *hlp; |
| 584 | unsigned long key = index; |
585 | unsigned long key = index; |
| 585 | hlp = hash_table_find(&dentries, &key); |
586 | hlp = hash_table_find(&dentries, &key); |
| 586 | if (!hlp) { |
587 | if (!hlp) { |
| 587 | ipc_answer_0(rid, ENOENT); |
588 | ipc_answer_0(rid, ENOENT); |
| 588 | return; |
589 | return; |
| 589 | } |
590 | } |
| 590 | tmpfs_dentry_t *dentry = hash_table_get_instance(hlp, tmpfs_dentry_t, |
591 | tmpfs_dentry_t *dentry = hash_table_get_instance(hlp, tmpfs_dentry_t, |
| 591 | dh_link); |
592 | dh_link); |
| 592 | tmpfs_destroy_node(dentry); |
593 | rc = tmpfs_destroy_node(dentry); |
| 593 | ipc_answer_0(rid, EOK); |
594 | ipc_answer_0(rid, rc); |
| 594 | } |
595 | } |
| 595 | 596 | ||
| 596 | /** |
597 | /** |
| 597 | * @} |
598 | * @} |
| 598 | */ |
599 | */ |