Ignore:
File:
1 edited

Legend:

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

    r9d12059 r228e490  
    3939#include <ipc/services.h>
    4040#include <async.h>
     41#include <async_rel.h>
    4142#include <fibril.h>
    4243#include <fibril_synch.h>
     
    110111void vfs_register(ipc_callid_t rid, ipc_call_t *request)
    111112{
    112         int phone;
    113        
    114113        dprintf("Processing VFS_REGISTER request received from %p.\n",
    115114            request->in_phone_hash);
     
    137136       
    138137        link_initialize(&fs_info->fs_link);
     138        fibril_mutex_initialize(&fs_info->phone_lock);
    139139        fs_info->vfs_info = *vfs_info;
    140140        free(vfs_info);
     
    186186                return;
    187187        }
    188        
    189         phone = IPC_GET_ARG5(call);
    190         async_session_create(&fs_info->session, phone, 0);
     188        fs_info->phone = IPC_GET_ARG5(call);
    191189        ipc_answer_0(callid, EOK);
    192190       
     
    202200                list_remove(&fs_info->fs_link);
    203201                fibril_mutex_unlock(&fs_head_lock);
    204                 async_session_destroy(&fs_info->session);
    205                 ipc_hangup(phone);
     202                ipc_hangup(fs_info->phone);
    206203                free(fs_info);
    207204                ipc_answer_0(callid, EINVAL);
     
    217214                list_remove(&fs_info->fs_link);
    218215                fibril_mutex_unlock(&fs_head_lock);
    219                 async_session_destroy(&fs_info->session);
    220                 ipc_hangup(phone);
     216                ipc_hangup(fs_info->phone);
    221217                free(fs_info);
    222218                ipc_answer_0(callid, EINVAL);
     
    273269                if (fs->fs_handle == handle) {
    274270                        fibril_mutex_unlock(&fs_head_lock);
    275                         phone = async_exchange_begin(&fs->session);
     271                        fibril_mutex_lock(&fs->phone_lock);
     272                        phone = async_relation_create(fs->phone);
     273                        fibril_mutex_unlock(&fs->phone_lock);
    276274
    277275                        assert(phone > 0);
     
    297295                if (fs->fs_handle == handle) {
    298296                        fibril_mutex_unlock(&fs_head_lock);
    299                         async_exchange_end(&fs->session, phone);
     297                        fibril_mutex_lock(&fs->phone_lock);
     298                        async_relation_destroy(fs->phone, phone);
     299                        fibril_mutex_unlock(&fs->phone_lock);
    300300                        return;
    301301                }
Note: See TracChangeset for help on using the changeset viewer.