Rev 4484 | Rev 4586 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4484 | Rev 4584 | ||
---|---|---|---|
Line 67... | Line 67... | ||
67 | * Tell VFS that we are here and want to get registered. |
67 | * Tell VFS that we are here and want to get registered. |
68 | * We use the async framework because VFS will answer the request |
68 | * We use the async framework because VFS will answer the request |
69 | * out-of-order, when it knows that the operation succeeded or failed. |
69 | * out-of-order, when it knows that the operation succeeded or failed. |
70 | */ |
70 | */ |
71 | ipc_call_t answer; |
71 | ipc_call_t answer; |
72 | aid_t req = async_send_0(vfs_phone, VFS_REGISTER, &answer); |
72 | aid_t req = async_send_0(vfs_phone, VFS_IN_REGISTER, &answer); |
73 | 73 | ||
74 | /* |
74 | /* |
75 | * Send our VFS info structure to VFS. |
75 | * Send our VFS info structure to VFS. |
76 | */ |
76 | */ |
77 | int rc = ipc_data_write_start(vfs_phone, info, sizeof(*info)); |
77 | int rc = ipc_data_write_start(vfs_phone, info, sizeof(*info)); |
Line 102... | Line 102... | ||
102 | async_wait_for(req, NULL); |
102 | async_wait_for(req, NULL); |
103 | return rc; |
103 | return rc; |
104 | } |
104 | } |
105 | 105 | ||
106 | /* |
106 | /* |
107 | * Pick up the answer for the request to the VFS_REQUEST call. |
107 | * Pick up the answer for the request to the VFS_IN_REQUEST call. |
108 | */ |
108 | */ |
109 | async_wait_for(req, NULL); |
109 | async_wait_for(req, NULL); |
110 | reg->fs_handle = (int) IPC_GET_ARG1(answer); |
110 | reg->fs_handle = (int) IPC_GET_ARG1(answer); |
111 | 111 | ||
112 | /* |
112 | /* |
Line 184... | Line 184... | ||
184 | ipc_answer_0(rid, rc); |
184 | ipc_answer_0(rid, rc); |
185 | return; |
185 | return; |
186 | } |
186 | } |
187 | 187 | ||
188 | ipc_call_t answer; |
188 | ipc_call_t answer; |
189 | aid_t msg = async_send_1(mountee_phone, VFS_MOUNTED, mr_dev_handle, |
189 | aid_t msg = async_send_1(mountee_phone, VFS_OUT_MOUNTED, mr_dev_handle, |
190 | &answer); |
190 | &answer); |
191 | ipc_forward_fast(callid, mountee_phone, 0, 0, 0, IPC_FF_ROUTE_FROM_ME); |
191 | ipc_forward_fast(callid, mountee_phone, 0, 0, 0, IPC_FF_ROUTE_FROM_ME); |
192 | async_wait_for(msg, &rc); |
192 | async_wait_for(msg, &rc); |
193 | 193 | ||
194 | if (rc == EOK) { |
194 | if (rc == EOK) { |
Line 211... | Line 211... | ||
211 | * |
211 | * |
212 | * @param ops libfs operations structure with function pointers to |
212 | * @param ops libfs operations structure with function pointers to |
213 | * file system implementation |
213 | * file system implementation |
214 | * @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 |
215 | * the lookup. |
215 | * the lookup. |
216 | * @param rid Request ID of the VFS_LOOKUP request. |
216 | * @param rid Request ID of the VFS_OUT_LOOKUP request. |
217 | * @param request VFS_LOOKUP request data itself. |
217 | * @param request VFS_OUT_LOOKUP request data itself. |
218 | * |
218 | * |
219 | */ |
219 | */ |
220 | 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, |
221 | ipc_call_t *request) |
221 | ipc_call_t *request) |
222 | { |
222 | { |
Line 235... | Line 235... | ||
235 | fs_node_t *par = NULL; |
235 | fs_node_t *par = NULL; |
236 | fs_node_t *cur = ops->root_get(dev_handle); |
236 | fs_node_t *cur = ops->root_get(dev_handle); |
237 | fs_node_t *tmp = NULL; |
237 | fs_node_t *tmp = NULL; |
238 | 238 | ||
239 | if (cur->mp_data.mp_active) { |
239 | if (cur->mp_data.mp_active) { |
240 | ipc_forward_slow(rid, cur->mp_data.phone, VFS_LOOKUP, |
240 | ipc_forward_slow(rid, cur->mp_data.phone, VFS_OUT_LOOKUP, |
241 | next, last, cur->mp_data.dev_handle, lflag, index, |
241 | next, last, cur->mp_data.dev_handle, lflag, index, |
242 | IPC_FF_ROUTE_FROM_ME); |
242 | IPC_FF_ROUTE_FROM_ME); |
243 | ops->node_put(cur); |
243 | ops->node_put(cur); |
244 | return; |
244 | return; |
245 | } |
245 | } |
Line 270... | Line 270... | ||
270 | if (next > last) |
270 | if (next > last) |
271 | next = last = first; |
271 | next = last = first; |
272 | else |
272 | else |
273 | next--; |
273 | next--; |
274 | 274 | ||
275 | ipc_forward_slow(rid, tmp->mp_data.phone, VFS_LOOKUP, |
275 | ipc_forward_slow(rid, tmp->mp_data.phone, |
276 | next, last, tmp->mp_data.dev_handle, lflag, index, |
276 | VFS_OUT_LOOKUP, next, last, tmp->mp_data.dev_handle, |
277 | IPC_FF_ROUTE_FROM_ME); |
277 | lflag, index, IPC_FF_ROUTE_FROM_ME); |
278 | ops->node_put(cur); |
278 | ops->node_put(cur); |
279 | ops->node_put(tmp); |
279 | ops->node_put(tmp); |
280 | if (par) |
280 | if (par) |
281 | ops->node_put(par); |
281 | ops->node_put(par); |
282 | return; |
282 | return; |
Line 430... | Line 430... | ||
430 | 430 | ||
431 | /** Open VFS triplet. |
431 | /** Open VFS triplet. |
432 | * |
432 | * |
433 | * @param ops libfs operations structure with function pointers to |
433 | * @param ops libfs operations structure with function pointers to |
434 | * file system implementation |
434 | * file system implementation |
435 | * @param rid Request ID of the VFS_OPEN_NODE request. |
435 | * @param rid Request ID of the VFS_OUT_OPEN_NODE request. |
436 | * @param request VFS_OPEN_NODE request data itself. |
436 | * @param request VFS_OUT_OPEN_NODE request data itself. |
437 | * |
437 | * |
438 | */ |
438 | */ |
439 | void libfs_open_node(libfs_ops_t *ops, fs_handle_t fs_handle, ipc_callid_t rid, |
439 | void libfs_open_node(libfs_ops_t *ops, fs_handle_t fs_handle, ipc_callid_t rid, |
440 | ipc_call_t *request) |
440 | ipc_call_t *request) |
441 | { |
441 | { |