Rev 3011 | Rev 4377 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 3011 | Rev 3424 | ||
|---|---|---|---|
| Line 48... | Line 48... | ||
| 48 | #include <unistd.h> |
48 | #include <unistd.h> |
| 49 | #include <stdio.h> |
49 | #include <stdio.h> |
| 50 | #include <libfs.h> |
50 | #include <libfs.h> |
| 51 | #include "../../vfs/vfs.h" |
51 | #include "../../vfs/vfs.h" |
| 52 | 52 | ||
| - | 53 | #define NAME "tmpfs" |
|
| - | 54 | ||
| 53 | 55 | ||
| 54 | vfs_info_t tmpfs_vfs_info = { |
56 | vfs_info_t tmpfs_vfs_info = { |
| 55 | .name = "tmpfs", |
57 | .name = "tmpfs", |
| 56 | .ops = { |
58 | .ops = { |
| 57 | [IPC_METHOD_TO_VFS_OP(VFS_LOOKUP)] = VFS_OP_DEFINED, |
59 | [IPC_METHOD_TO_VFS_OP(VFS_LOOKUP)] = VFS_OP_DEFINED, |
| 58 | [IPC_METHOD_TO_VFS_OP(VFS_READ)] = VFS_OP_DEFINED, |
60 | [IPC_METHOD_TO_VFS_OP(VFS_READ)] = VFS_OP_DEFINED, |
| 59 | [IPC_METHOD_TO_VFS_OP(VFS_WRITE)] = VFS_OP_DEFINED, |
61 | [IPC_METHOD_TO_VFS_OP(VFS_WRITE)] = VFS_OP_DEFINED, |
| 60 | [IPC_METHOD_TO_VFS_OP(VFS_TRUNCATE)] = VFS_OP_DEFINED, |
62 | [IPC_METHOD_TO_VFS_OP(VFS_TRUNCATE)] = VFS_OP_DEFINED, |
| 61 | [IPC_METHOD_TO_VFS_OP(VFS_MOUNT)] = VFS_OP_DEFINED, |
63 | [IPC_METHOD_TO_VFS_OP(VFS_MOUNT)] = VFS_OP_DEFINED, |
| - | 64 | [IPC_METHOD_TO_VFS_OP(VFS_MOUNTED)] = VFS_OP_DEFINED, |
|
| 62 | [IPC_METHOD_TO_VFS_OP(VFS_UNMOUNT)] = VFS_OP_NULL, |
65 | [IPC_METHOD_TO_VFS_OP(VFS_UNMOUNT)] = VFS_OP_NULL, |
| 63 | [IPC_METHOD_TO_VFS_OP(VFS_DESTROY)] = VFS_OP_DEFINED, |
66 | [IPC_METHOD_TO_VFS_OP(VFS_DESTROY)] = VFS_OP_DEFINED, |
| 64 | } |
67 | } |
| 65 | }; |
68 | }; |
| 66 | 69 | ||
| Line 101... | Line 104... | ||
| 101 | ipc_callid_t callid; |
104 | ipc_callid_t callid; |
| 102 | ipc_call_t call; |
105 | ipc_call_t call; |
| 103 | 106 | ||
| 104 | callid = async_get_call(&call); |
107 | callid = async_get_call(&call); |
| 105 | switch (IPC_GET_METHOD(call)) { |
108 | switch (IPC_GET_METHOD(call)) { |
| - | 109 | case VFS_MOUNTED: |
|
| - | 110 | tmpfs_mounted(callid, &call); |
|
| - | 111 | break; |
|
| 106 | case VFS_MOUNT: |
112 | case VFS_MOUNT: |
| 107 | tmpfs_mount(callid, &call); |
113 | tmpfs_mount(callid, &call); |
| 108 | break; |
114 | break; |
| 109 | case VFS_LOOKUP: |
115 | case VFS_LOOKUP: |
| 110 | tmpfs_lookup(callid, &call); |
116 | tmpfs_lookup(callid, &call); |
| Line 130... | Line 136... | ||
| 130 | 136 | ||
| 131 | int main(int argc, char **argv) |
137 | int main(int argc, char **argv) |
| 132 | { |
138 | { |
| 133 | int vfs_phone; |
139 | int vfs_phone; |
| 134 | 140 | ||
| 135 | printf("TMPFS: HelenOS TMPFS file system server.\n"); |
141 | printf(NAME ": HelenOS TMPFS file system server\n"); |
| 136 | 142 | ||
| 137 | vfs_phone = ipc_connect_me_to(PHONE_NS, SERVICE_VFS, 0, 0); |
143 | vfs_phone = ipc_connect_me_to(PHONE_NS, SERVICE_VFS, 0, 0); |
| 138 | while (vfs_phone < EOK) { |
144 | while (vfs_phone < EOK) { |
| 139 | usleep(10000); |
145 | usleep(10000); |
| 140 | vfs_phone = ipc_connect_me_to(PHONE_NS, SERVICE_VFS, 0, 0); |
146 | vfs_phone = ipc_connect_me_to(PHONE_NS, SERVICE_VFS, 0, 0); |
| Line 142... | Line 148... | ||
| 142 | 148 | ||
| 143 | int rc; |
149 | int rc; |
| 144 | rc = fs_register(vfs_phone, &tmpfs_reg, &tmpfs_vfs_info, |
150 | rc = fs_register(vfs_phone, &tmpfs_reg, &tmpfs_vfs_info, |
| 145 | tmpfs_connection); |
151 | tmpfs_connection); |
| 146 | if (rc != EOK) { |
152 | if (rc != EOK) { |
| 147 | printf("Failed to register the TMPFS file system (%d)\n", rc); |
153 | printf(NAME ": Failed to register file system (%d)\n", rc); |
| 148 | return rc; |
154 | return rc; |
| 149 | } |
155 | } |
| 150 | 156 | ||
| 151 | dprintf("TMPFS filesystem registered, fs_handle=%d.\n", |
157 | printf(NAME ": Accepting connections\n"); |
| 152 | tmpfs_reg.fs_handle); |
- | |
| 153 | - | ||
| 154 | async_manager(); |
158 | async_manager(); |
| 155 | /* not reached */ |
159 | /* not reached */ |
| 156 | return 0; |
160 | return 0; |
| 157 | } |
161 | } |
| 158 | 162 | ||