Rev 4439 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4439 | Rev 4537 | ||
---|---|---|---|
Line 40... | Line 40... | ||
40 | #include <async.h> |
40 | #include <async.h> |
41 | #include <ipc/ipc.h> |
41 | #include <ipc/ipc.h> |
42 | #include <as.h> |
42 | #include <as.h> |
43 | #include <assert.h> |
43 | #include <assert.h> |
44 | #include <dirent.h> |
44 | #include <dirent.h> |
- | 45 | #include <mem.h> |
|
45 | 46 | ||
46 | /** Register file system server. |
47 | /** Register file system server. |
47 | * |
48 | * |
48 | * This function abstracts away the tedious registration protocol from |
49 | * This function abstracts away the tedious registration protocol from |
49 | * file system implementations and lets them to reuse this registration glue |
50 | * file system implementations and lets them to reuse this registration glue |
Line 206... | Line 207... | ||
206 | /** Lookup VFS triplet by name in the file system name space. |
207 | /** Lookup VFS triplet by name in the file system name space. |
207 | * |
208 | * |
208 | * The path passed in the PLB must be in the canonical file system path format |
209 | * The path passed in the PLB must be in the canonical file system path format |
209 | * as returned by the canonify() function. |
210 | * as returned by the canonify() function. |
210 | * |
211 | * |
211 | * @param ops libfs operations structure with function pointers to |
212 | * @param ops libfs operations structure with function pointers to |
212 | * file system implementation |
213 | * file system implementation |
213 | * @param fs_handle File system handle of the file system where to perform |
214 | * @param fs_handle File system handle of the file system where to perform |
214 | * the lookup. |
215 | * the lookup. |
215 | * @param rid Request ID of the VFS_LOOKUP request. |
216 | * @param rid Request ID of the VFS_LOOKUP request. |
216 | * @param request VFS_LOOKUP request data itself. |
217 | * @param request VFS_LOOKUP request data itself. |
- | 218 | * |
|
217 | */ |
219 | */ |
218 | void libfs_lookup(libfs_ops_t *ops, fs_handle_t fs_handle, ipc_callid_t rid, |
220 | void libfs_lookup(libfs_ops_t *ops, fs_handle_t fs_handle, ipc_callid_t rid, |
219 | ipc_call_t *request) |
221 | ipc_call_t *request) |
220 | { |
222 | { |
221 | unsigned first = IPC_GET_ARG1(*request); |
223 | unsigned first = IPC_GET_ARG1(*request); |
Line 424... | Line 426... | ||
424 | ops->node_put(cur); |
426 | ops->node_put(cur); |
425 | if (tmp) |
427 | if (tmp) |
426 | ops->node_put(tmp); |
428 | ops->node_put(tmp); |
427 | } |
429 | } |
428 | 430 | ||
- | 431 | /** Open VFS triplet. |
|
- | 432 | * |
|
- | 433 | * @param ops libfs operations structure with function pointers to |
|
- | 434 | * file system implementation |
|
- | 435 | * @param rid Request ID of the VFS_OPEN_NODE request. |
|
- | 436 | * @param request VFS_OPEN_NODE request data itself. |
|
- | 437 | * |
|
- | 438 | */ |
|
- | 439 | void libfs_open_node(libfs_ops_t *ops, fs_handle_t fs_handle, ipc_callid_t rid, |
|
- | 440 | ipc_call_t *request) |
|
- | 441 | { |
|
- | 442 | dev_handle_t dev_handle = IPC_GET_ARG1(*request); |
|
- | 443 | fs_index_t index = IPC_GET_ARG2(*request); |
|
- | 444 | ||
- | 445 | fs_node_t *node = ops->node_get(dev_handle, index); |
|
- | 446 | ||
- | 447 | if (node == NULL) { |
|
- | 448 | ipc_answer_0(rid, ENOENT); |
|
- | 449 | return; |
|
- | 450 | } |
|
- | 451 | ||
- | 452 | ipc_answer_5(rid, EOK, fs_handle, dev_handle, index, |
|
- | 453 | ops->size_get(node), ops->lnkcnt_get(node)); |
|
- | 454 | ||
- | 455 | ops->node_put(node); |
|
- | 456 | } |
|
- | 457 | ||
429 | /** @} |
458 | /** @} |
430 | */ |
459 | */ |