Changeset 8ff0bd2 in mainline for uspace/srv/vfs/vfs_lookup.c
- Timestamp:
- 2011-09-04T11:30:58Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 03bc76a
- Parents:
- d2c67e7 (diff), deac215e (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/vfs/vfs_lookup.c
rd2c67e7 r8ff0bd2 50 50 51 51 FIBRIL_MUTEX_INITIALIZE(plb_mutex); 52 LIST_INITIALIZE(plb_ head); /**< PLB entry ring buffer. */52 LIST_INITIALIZE(plb_entries); /**< PLB entry ring buffer. */ 53 53 uint8_t *plb = NULL; 54 54 … … 102 102 size_t last; /* the last free index */ 103 103 104 if (list_empty(&plb_ head)) {104 if (list_empty(&plb_entries)) { 105 105 first = 0; 106 106 last = PLB_SIZE - 1; 107 107 } else { 108 plb_entry_t *oldest = list_get_instance( plb_head.next,109 plb_entry_t, plb_link);110 plb_entry_t *newest = list_get_instance( plb_head.prev,111 plb_entry_t, plb_link);108 plb_entry_t *oldest = list_get_instance( 109 list_first(&plb_entries), plb_entry_t, plb_link); 110 plb_entry_t *newest = list_get_instance( 111 list_last(&plb_entries), plb_entry_t, plb_link); 112 112 113 113 first = (newest->index + newest->len) % PLB_SIZE; … … 145 145 * buffer. 146 146 */ 147 list_append(&entry.plb_link, &plb_ head);147 list_append(&entry.plb_link, &plb_entries); 148 148 149 149 fibril_mutex_unlock(&plb_mutex); … … 162 162 aid_t req = async_send_5(exch, VFS_OUT_LOOKUP, (sysarg_t) first, 163 163 (sysarg_t) (first + len - 1) % PLB_SIZE, 164 (sysarg_t) root-> devmap_handle, (sysarg_t) lflag, (sysarg_t) index,164 (sysarg_t) root->service_id, (sysarg_t) lflag, (sysarg_t) index, 165 165 &answer); 166 166 … … 185 185 186 186 result->triplet.fs_handle = (fs_handle_t) rc; 187 result->triplet. devmap_handle = (devmap_handle_t) IPC_GET_ARG1(answer);187 result->triplet.service_id = (service_id_t) IPC_GET_ARG1(answer); 188 188 result->triplet.index = (fs_index_t) IPC_GET_ARG2(answer); 189 189 result->size = … … 201 201 } 202 202 203 /** Perform a node open operation.204 *205 * @return EOK on success or an error code from errno.h.206 *207 */208 int vfs_open_node_internal(vfs_lookup_res_t *result)209 {210 async_exch_t *exch = vfs_exchange_grab(result->triplet.fs_handle);211 212 ipc_call_t answer;213 aid_t req = async_send_2(exch, VFS_OUT_OPEN_NODE,214 (sysarg_t) result->triplet.devmap_handle,215 (sysarg_t) result->triplet.index, &answer);216 217 sysarg_t rc;218 async_wait_for(req, &rc);219 vfs_exchange_release(exch);220 221 if (rc == EOK) {222 result->size =223 MERGE_LOUP32(IPC_GET_ARG1(answer), IPC_GET_ARG2(answer));224 result->lnkcnt = (unsigned int) IPC_GET_ARG3(answer);225 if (IPC_GET_ARG4(answer) & L_FILE)226 result->type = VFS_NODE_FILE;227 else if (IPC_GET_ARG4(answer) & L_DIRECTORY)228 result->type = VFS_NODE_DIRECTORY;229 else230 result->type = VFS_NODE_UNKNOWN;231 }232 233 return rc;234 }235 236 203 /** 237 204 * @}
Note:
See TracChangeset
for help on using the changeset viewer.