Changeset efd4a72 in mainline for uspace/srv/fs/fat/fat.c
- Timestamp:
- 2007-12-16T16:25:26Z (17 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 0c82d28
- Parents:
- 74303b6
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/fs/fat/fat.c
r74303b6 refd4a72 44 44 #include <unistd.h> 45 45 #include <stdio.h> 46 #include < as.h>46 #include <libfs.h> 47 47 #include "../../vfs/vfs.h" 48 48 … … 64 64 }; 65 65 66 uint8_t *plb_ro = NULL; 67 68 int fs_handle = 0; 66 fs_reg_t fat_reg; 69 67 70 68 /** … … 133 131 } 134 132 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); 147 135 if (rc != EOK) { 148 async_wait_for(req, NULL);136 printf("Failed to register the FAT file system (%d)\n", rc); 149 137 return rc; 150 138 } 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);188 139 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); 194 141 195 142 async_manager();
Note:
See TracChangeset
for help on using the changeset viewer.