Ignore:
File:
1 edited

Legend:

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

    r79ae36dd r6639ae1  
    4545#include "vfs.h"
    4646
    47 #define VFS_DATA        ((vfs_client_data_t *) async_get_client_data())
     47#define VFS_DATA        ((vfs_client_data_t *) async_client_data_get())
    4848#define FILES           (VFS_DATA->files)
    4949
     
    7979        for (i = 0; i < MAX_OPEN_FILES; i++) {
    8080                if (FILES[i]) {
     81                        (void) vfs_close_internal(FILES[i]);
    8182                        (void) vfs_fd_free(i);
    8283                }
     
    107108}
    108109
    109 /** Close the file in the endpoint FS server. */
    110 static int vfs_file_close_remote(vfs_file_t *file)
    111 {
    112         assert(!file->refcnt);
    113        
    114         async_exch_t *exch = vfs_exchange_grab(file->node->fs_handle);
    115        
    116         ipc_call_t answer;
    117         aid_t msg = async_send_2(exch, VFS_OUT_CLOSE, file->node->devmap_handle,
    118             file->node->index, &answer);
    119        
    120         vfs_exchange_release(exch);
    121        
    122         sysarg_t rc;
    123         async_wait_for(msg, &rc);
    124        
    125         return IPC_GET_ARG1(answer);
    126 }
    127 
    128110/** Increment reference count of VFS file structure.
    129111 *
     
    143125 *                      decremented.
    144126 */
    145 static int vfs_file_delref(vfs_file_t *file)
    146 {
    147         int rc = EOK;
    148 
     127static void vfs_file_delref(vfs_file_t *file)
     128{
    149129        assert(fibril_mutex_is_locked(&VFS_DATA->lock));
    150130
    151131        if (file->refcnt-- == 1) {
    152132                /*
    153                  * Lost the last reference to a file, need to close it in the
    154                  * endpoint FS and drop our reference to the underlying VFS node.
     133                 * Lost the last reference to a file, need to drop our reference
     134                 * to the underlying VFS node.
    155135                 */
    156                 rc = vfs_file_close_remote(file);
    157136                vfs_node_delref(file->node);
    158137                free(file);
    159138        }
    160 
    161         return rc;
    162139}
    163140
     
    224201int vfs_fd_free(int fd)
    225202{
    226         int rc;
    227 
    228203        if (!vfs_files_init())
    229204                return ENOMEM;
     
    235210        }
    236211       
    237         rc = vfs_file_delref(FILES[fd]);
     212        vfs_file_delref(FILES[fd]);
    238213        FILES[fd] = NULL;
    239214        fibril_mutex_unlock(&VFS_DATA->lock);
    240215       
    241         return rc;
     216        return EOK;
    242217}
    243218
Note: See TracChangeset for help on using the changeset viewer.