Changes in uspace/srv/vfs/vfs.c [228e490:ffa2c8ef] in mainline


Ignore:
File:
1 edited

Legend:

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

    r228e490 rffa2c8ef  
    3636 */
    3737
    38 #include <ipc/ipc.h>
    3938#include <ipc/services.h>
     39#include <ipc/ns.h>
    4040#include <async.h>
    4141#include <errno.h>
     
    4747#include "vfs.h"
    4848
    49 #define NAME "vfs"
     49#define NAME  "vfs"
    5050
    5151static void vfs_connection(ipc_callid_t iid, ipc_call_t *icall)
     
    5757         * This call needs to be answered.
    5858         */
    59         ipc_answer_0(iid, EOK);
     59        async_answer_0(iid, EOK);
    6060       
    61         /*
    62          * Here we enter the main connection fibril loop.
    63          * The logic behind this loop and the protocol is that we'd like to keep
    64          * each connection open until the client hangs up. When the client hangs
    65          * up, we will free its VFS state. The act of hanging up the connection
    66          * by the client is equivalent to client termination because we cannot
    67          * distinguish one from the other. On the other hand, the client can
    68          * hang up arbitrarily if it has no open files and reestablish the
    69          * connection later.
    70          */
    7161        while (keep_on_going) {
    7262                ipc_call_t call;
     
    129119                        vfs_dup(callid, &call);
    130120                default:
    131                         ipc_answer_0(callid, ENOTSUP);
     121                        async_answer_0(callid, ENOTSUP);
    132122                        break;
    133123                }
    134124        }
    135        
    136         vfs_files_done();
     125
     126        /*
     127         * Open files for this client will be cleaned up when its last
     128         * connection fibril terminates.
     129         */
    137130}
    138131
     
    166159       
    167160        /*
     161         * Set client data constructor and destructor.
     162         */
     163        async_set_client_data_constructor(vfs_client_data_create);
     164        async_set_client_data_destructor(vfs_client_data_destroy);
     165
     166        /*
    168167         * Set a connection handling function/fibril.
    169168         */
     
    173172         * Register at the naming service.
    174173         */
    175         sysarg_t phonead;
    176         ipc_connect_to_me(PHONE_NS, SERVICE_VFS, 0, 0, &phonead);
     174        if (service_register(SERVICE_VFS) != EOK) {
     175                printf("%s: Cannot register VFS service\n", NAME);
     176                return EINVAL;
     177        }
    177178       
    178179        /*
Note: See TracChangeset for help on using the changeset viewer.