Changeset efd4a72 in mainline for uspace/srv/fs/fat/fat.c


Ignore:
Timestamp:
2007-12-16T16:25:26Z (17 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
0c82d28
Parents:
74303b6
Message:

VFS work.
Move FS registration code to libfs.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/fs/fat/fat.c

    r74303b6 refd4a72  
    4444#include <unistd.h>
    4545#include <stdio.h>
    46 #include <as.h>
     46#include <libfs.h>
    4747#include "../../vfs/vfs.h"
    4848
     
    6464};
    6565
    66 uint8_t *plb_ro = NULL;
    67 
    68 int fs_handle = 0;
     66fs_reg_t fat_reg;
    6967
    7068/**
     
    133131        }
    134132       
    135         /*
    136          * Tell VFS that we are here and want to get registered.
    137          * We use the async framework because VFS will answer the request
    138          * out-of-order, when it knows that the operation succeeded or failed.
    139          */
    140         ipc_call_t answer;
    141         aid_t req = async_send_2(vfs_phone, VFS_REGISTER, 0, 0, &answer);
    142 
    143         /*
    144          * Send our VFS info structure to VFS.
    145          */
    146         int rc = ipc_data_send(vfs_phone, &fat_vfs_info, sizeof(fat_vfs_info));
     133        int rc;
     134        rc = fs_register(vfs_phone, &fat_reg, &fat_vfs_info, fat_connection);
    147135        if (rc != EOK) {
    148                 async_wait_for(req, NULL);
     136                printf("Failed to register the FAT file system (%d)\n", rc);
    149137                return rc;
    150138        }
    151 
    152         /*
    153          * Ask VFS for callback connection.
    154          */
    155         ipcarg_t phonehash;
    156         ipc_connect_to_me(vfs_phone, 0, 0, 0, &phonehash);
    157 
    158         /*
    159          * Allocate piece of address space for PLB.
    160          */
    161         plb_ro = as_get_mappable_page(PLB_SIZE);
    162         if (!plb_ro) {
    163                 async_wait_for(req, NULL);
    164                 return ENOMEM;
    165         }
    166 
    167         /*
    168          * Request sharing the Path Lookup Buffer with VFS.
    169          */
    170         rc = ipc_call_sync_2_0(vfs_phone, IPC_M_AS_AREA_RECV, (ipcarg_t) plb_ro,
    171             PLB_SIZE);
    172         if (rc) {
    173                 async_wait_for(req, NULL);
    174                 return rc;
    175         }
    176          
    177         /*
    178          * Pick up the answer for the request to the VFS_REQUEST call.
    179          */
    180         async_wait_for(req, NULL);
    181         fs_handle = (int) IPC_GET_ARG1(answer);
    182         dprintf("FAT filesystem registered, fs_handle=%d.\n", fs_handle);
    183 
    184         /*
    185          * Create a connection fibril to handle the callback connection.
    186          */
    187         async_new_connection(phonehash, 0, NULL, fat_connection);
    188139       
    189         /*
    190          * Tell the async framework that other connections are to be handled by
    191          * the same connection fibril as well.
    192          */
    193         async_set_client_connection(fat_connection);
     140        dprintf("FAT filesystem registered, fs_handle=%d.\n", fat_reg.fs_handle);
    194141
    195142        async_manager();
Note: See TracChangeset for help on using the changeset viewer.