Rev 2529 | Rev 2532 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2529 | Rev 2531 | ||
---|---|---|---|
Line 36... | Line 36... | ||
36 | * @brief FAT file system driver for HelenOS. |
36 | * @brief FAT file system driver for HelenOS. |
37 | */ |
37 | */ |
38 | 38 | ||
39 | #include <ipc/ipc.h> |
39 | #include <ipc/ipc.h> |
40 | #include <ipc/services.h> |
40 | #include <ipc/services.h> |
- | 41 | #include <async.h> |
|
41 | #include <errno.h> |
42 | #include <errno.h> |
42 | #include <unistd.h> |
43 | #include <unistd.h> |
43 | #include "../../vfs/vfs.h" |
44 | #include "../../vfs/vfs.h" |
44 | 45 | ||
45 | vfs_info_t fat_vfs_info = { |
46 | vfs_info_t fat_vfs_info = { |
Line 56... | Line 57... | ||
56 | [IPC_METHOD_TO_VFS_OP(VFS_WRITE)] = VFS_OP_NULL, |
57 | [IPC_METHOD_TO_VFS_OP(VFS_WRITE)] = VFS_OP_NULL, |
57 | [IPC_METHOD_TO_VFS_OP(VFS_SEEK)] = VFS_OP_DEFAULT |
58 | [IPC_METHOD_TO_VFS_OP(VFS_SEEK)] = VFS_OP_DEFAULT |
58 | } |
59 | } |
59 | }; |
60 | }; |
60 | 61 | ||
- | 62 | /* |
|
- | 63 | * This fibril processes request from the VFS server. |
|
- | 64 | */ |
|
- | 65 | void fat_connection(ipc_callid_t iid, ipc_call_t *icall) |
|
- | 66 | { |
|
- | 67 | while (1) { |
|
- | 68 | ipc_callid_t callid; |
|
- | 69 | ipc_call_t call; |
|
- | 70 | ||
- | 71 | callid = async_get_call(&call); |
|
- | 72 | ipc_answer_fast(callid, ENOTSUP, 0, 0); |
|
- | 73 | } |
|
- | 74 | } |
|
- | 75 | ||
61 | int main(int argc, char **argv) |
76 | int main(int argc, char **argv) |
62 | { |
77 | { |
63 | ipcarg_t vfs_phone; |
78 | ipcarg_t vfs_phone; |
64 | 79 | ||
65 | vfs_phone = ipc_connect_me_to(PHONE_NS, SERVICE_VFS, 0); |
80 | vfs_phone = ipc_connect_me_to(PHONE_NS, SERVICE_VFS, 0); |
66 | while (vfs_phone != EOK) { |
81 | while (vfs_phone != EOK) { |
67 | usleep(10000); |
82 | usleep(10000); |
68 | vfs_phone = ipc_connect_me_to(PHONE_NS, SERVICE_VFS, 0); |
83 | vfs_phone = ipc_connect_me_to(PHONE_NS, SERVICE_VFS, 0); |
69 | } |
84 | } |
70 | 85 | ||
- | 86 | /* |
|
71 | /* TODO: start making calls according to the VFS protocol */ |
87 | * Tell VFS that we are here and want to get registered. |
- | 88 | * We use the async framework because VFS will answer the request |
|
- | 89 | * out-of-order, when it knows that the operation succeeded or failed. |
|
- | 90 | */ |
|
- | 91 | ipc_call_t answer; |
|
- | 92 | aid_t req = async_send_2(vfs_phone, VFS_REGISTER, 0, 0, &answer); |
|
- | 93 | ||
- | 94 | /* |
|
- | 95 | * Send our VFS info structure to VFS. |
|
- | 96 | */ |
|
- | 97 | int rc = ipc_data_send(vfs_phone, &fat_vfs_info, sizeof(fat_vfs_info)); |
|
- | 98 | if (rc != EOK) { |
|
- | 99 | async_wait_for(req, NULL); |
|
- | 100 | return rc; |
|
- | 101 | } |
|
- | 102 | ||
- | 103 | /* |
|
- | 104 | * Ask VFS for callback connection. |
|
- | 105 | */ |
|
- | 106 | ipcarg_t phonehash; |
|
- | 107 | ipc_connect_to_me(vfs_phone, 0, 0, &phonehash); |
|
72 | 108 | ||
- | 109 | async_new_connection(phonehash, 0, NULL, fat_connection); |
|
73 | return 0; |
110 | return 0; |
74 | } |
111 | } |
75 | 112 | ||
76 | /** |
113 | /** |
77 | * @} |
114 | * @} |