Subversion Repositories HelenOS

Rev

Rev 2731 | Rev 3497 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2731 Rev 3110
Line 53... Line 53...
53
        [IPC_METHOD_TO_VFS_OP(VFS_LOOKUP)] = VFS_OP_DEFINED,
53
        [IPC_METHOD_TO_VFS_OP(VFS_LOOKUP)] = VFS_OP_DEFINED,
54
        [IPC_METHOD_TO_VFS_OP(VFS_READ)] = VFS_OP_DEFINED,
54
        [IPC_METHOD_TO_VFS_OP(VFS_READ)] = VFS_OP_DEFINED,
55
        [IPC_METHOD_TO_VFS_OP(VFS_WRITE)] = VFS_OP_NULL,
55
        [IPC_METHOD_TO_VFS_OP(VFS_WRITE)] = VFS_OP_NULL,
56
        [IPC_METHOD_TO_VFS_OP(VFS_TRUNCATE)] = VFS_OP_NULL,
56
        [IPC_METHOD_TO_VFS_OP(VFS_TRUNCATE)] = VFS_OP_NULL,
57
        [IPC_METHOD_TO_VFS_OP(VFS_MOUNT)] = VFS_OP_NULL,
57
        [IPC_METHOD_TO_VFS_OP(VFS_MOUNT)] = VFS_OP_NULL,
-
 
58
        [IPC_METHOD_TO_VFS_OP(VFS_MOUNTED)] = VFS_OP_DEFINED,
58
        [IPC_METHOD_TO_VFS_OP(VFS_UNMOUNT)] = VFS_OP_NULL,
59
        [IPC_METHOD_TO_VFS_OP(VFS_UNMOUNT)] = VFS_OP_NULL,
59
    }
60
    }
60
};
61
};
61
 
62
 
62
fs_reg_t fat_reg;
63
fs_reg_t fat_reg;
Line 95... Line 96...
95
        ipc_callid_t callid;
96
        ipc_callid_t callid;
96
        ipc_call_t call;
97
        ipc_call_t call;
97
   
98
   
98
        callid = async_get_call(&call);
99
        callid = async_get_call(&call);
99
        switch  (IPC_GET_METHOD(call)) {
100
        switch  (IPC_GET_METHOD(call)) {
-
 
101
        case VFS_MOUNTED:
-
 
102
            fat_mounted(callid, &call);
-
 
103
            break;
-
 
104
        case VFS_MOUNT:
-
 
105
            fat_mount(callid, &call);
-
 
106
            break;
100
        case VFS_LOOKUP:
107
        case VFS_LOOKUP:
101
            fat_lookup(callid, &call);
108
            fat_lookup(callid, &call);
102
            break;
109
            break;
103
        default:
110
        default:
104
            ipc_answer_0(callid, ENOTSUP);
111
            ipc_answer_0(callid, ENOTSUP);
Line 108... Line 115...
108
}
115
}
109
 
116
 
110
int main(int argc, char **argv)
117
int main(int argc, char **argv)
111
{
118
{
112
    int vfs_phone;
119
    int vfs_phone;
-
 
120
    int rc;
113
 
121
 
114
    printf("FAT: HelenOS FAT file system server.\n");
122
    printf("FAT: HelenOS FAT file system server.\n");
115
 
123
 
-
 
124
    rc = fat_idx_init();
-
 
125
    if (rc != EOK)
-
 
126
        goto err;
-
 
127
 
116
    vfs_phone = ipc_connect_me_to(PHONE_NS, SERVICE_VFS, 0, 0);
128
    vfs_phone = ipc_connect_me_to(PHONE_NS, SERVICE_VFS, 0, 0);
117
    while (vfs_phone < EOK) {
129
    while (vfs_phone < EOK) {
118
        usleep(10000);
130
        usleep(10000);
119
        vfs_phone = ipc_connect_me_to(PHONE_NS, SERVICE_VFS, 0, 0);
131
        vfs_phone = ipc_connect_me_to(PHONE_NS, SERVICE_VFS, 0, 0);
120
    }
132
    }
121
   
133
   
122
    int rc;
-
 
123
    rc = fs_register(vfs_phone, &fat_reg, &fat_vfs_info, fat_connection);
134
    rc = fs_register(vfs_phone, &fat_reg, &fat_vfs_info, fat_connection);
124
    if (rc != EOK) {
135
    if (rc != EOK) {
125
        printf("Failed to register the FAT file system (%d)\n", rc);
136
        fat_idx_fini();
126
        return rc;
137
        goto err;
127
    }
138
    }
128
   
139
   
129
    dprintf("FAT filesystem registered, fs_handle=%d.\n",
140
    dprintf("FAT filesystem registered, fs_handle=%d.\n",
130
        fat_reg.fs_handle);
141
        fat_reg.fs_handle);
131
 
142
 
132
    async_manager();
143
    async_manager();
133
    /* not reached */
144
    /* not reached */
134
    return 0;
145
    return 0;
-
 
146
 
-
 
147
err:
-
 
148
    printf("Failed to register the FAT file system (%d)\n", rc);
-
 
149
    return rc;
135
}
150
}
136
 
151
 
137
/**
152
/**
138
 * @}
153
 * @}
139
 */
154
 */