Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/vfs/vfs_lookup.c

    rb33ec43 rb72efe8  
    201201}
    202202
     203/** Perform a node open operation.
     204 *
     205 * @return EOK on success or an error code from errno.h.
     206 *
     207 */
     208int 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                else
     230                        result->type = VFS_NODE_UNKNOWN;
     231        }
     232       
     233        return rc;
     234}
     235
    203236/**
    204237 * @}
Note: See TracChangeset for help on using the changeset viewer.