Changeset 8b655705 in mainline for uspace/srv/vfs/vfs.c


Ignore:
Timestamp:
2011-04-15T19:38:07Z (13 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
9dd730d1
Parents:
6b9e85b (diff), b2fb47f (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.
Message:

Merge mainline changes.

File:
1 edited

Legend:

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

    r6b9e85b r8b655705  
    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.