Rev 2787 | Rev 3425 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2787 | Rev 3424 | ||
|---|---|---|---|
| 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 | */ |