Rev 3022 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3022 | Rev 4055 | ||
---|---|---|---|
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 = { |
- | |
57 | [IPC_METHOD_TO_VFS_OP(VFS_LOOKUP)] = VFS_OP_DEFINED, |
- | |
58 | [IPC_METHOD_TO_VFS_OP(VFS_READ)] = VFS_OP_DEFINED, |
- | |
59 | [IPC_METHOD_TO_VFS_OP(VFS_WRITE)] = VFS_OP_DEFINED, |
- | |
60 | [IPC_METHOD_TO_VFS_OP(VFS_TRUNCATE)] = VFS_OP_DEFINED, |
- | |
61 | [IPC_METHOD_TO_VFS_OP(VFS_MOUNT)] = VFS_OP_DEFINED, |
- | |
62 | [IPC_METHOD_TO_VFS_OP(VFS_UNMOUNT)] = VFS_OP_NULL, |
- | |
63 | [IPC_METHOD_TO_VFS_OP(VFS_DESTROY)] = VFS_OP_DEFINED, |
- | |
64 | } |
- | |
65 | }; |
58 | }; |
66 | 59 | ||
67 | fs_reg_t tmpfs_reg; |
60 | fs_reg_t tmpfs_reg; |
68 | 61 | ||
69 | /** |
62 | /** |
Line 101... | Line 94... | ||
101 | ipc_callid_t callid; |
94 | ipc_callid_t callid; |
102 | ipc_call_t call; |
95 | ipc_call_t call; |
103 | 96 | ||
104 | callid = async_get_call(&call); |
97 | callid = async_get_call(&call); |
105 | switch (IPC_GET_METHOD(call)) { |
98 | switch (IPC_GET_METHOD(call)) { |
- | 99 | case VFS_MOUNTED: |
|
- | 100 | tmpfs_mounted(callid, &call); |
|
- | 101 | break; |
|
106 | case VFS_MOUNT: |
102 | case VFS_MOUNT: |
107 | tmpfs_mount(callid, &call); |
103 | tmpfs_mount(callid, &call); |
108 | break; |
104 | break; |
109 | case VFS_LOOKUP: |
105 | case VFS_LOOKUP: |
110 | tmpfs_lookup(callid, &call); |
106 | tmpfs_lookup(callid, &call); |
Line 128... | Line 124... | ||
128 | } |
124 | } |
129 | } |
125 | } |
130 | 126 | ||
131 | int main(int argc, char **argv) |
127 | int main(int argc, char **argv) |
132 | { |
128 | { |
133 | int vfs_phone; |
- | |
134 | - | ||
135 | printf("TMPFS: HelenOS TMPFS file system server.\n"); |
129 | printf(NAME ": HelenOS TMPFS file system server\n"); |
136 | 130 | ||
137 | vfs_phone = ipc_connect_me_to(PHONE_NS, SERVICE_VFS, 0, 0); |
131 | int vfs_phone = ipc_connect_me_to_blocking(PHONE_NS, SERVICE_VFS, 0, 0); |
138 | while (vfs_phone < EOK) { |
132 | if (vfs_phone < EOK) { |
- | 133 | printf(NAME ": Unable to connect to VFS\n"); |
|
139 | usleep(10000); |
134 | return -1; |
140 | vfs_phone = ipc_connect_me_to(PHONE_NS, SERVICE_VFS, 0, 0); |
- | |
141 | } |
135 | } |
142 | 136 | ||
143 | int rc; |
- | |
144 | rc = fs_register(vfs_phone, &tmpfs_reg, &tmpfs_vfs_info, |
137 | int rc = fs_register(vfs_phone, &tmpfs_reg, &tmpfs_vfs_info, |
145 | tmpfs_connection); |
138 | tmpfs_connection); |
146 | if (rc != EOK) { |
139 | if (rc != EOK) { |
147 | printf("Failed to register the TMPFS file system (%d)\n", rc); |
140 | printf(NAME ": Failed to register file system (%d)\n", rc); |
148 | return rc; |
141 | return rc; |
149 | } |
142 | } |
150 | 143 | ||
151 | dprintf("TMPFS filesystem registered, fs_handle=%d.\n", |
144 | printf(NAME ": Accepting connections\n"); |
152 | tmpfs_reg.fs_handle); |
- | |
153 | - | ||
154 | async_manager(); |
145 | async_manager(); |
155 | /* not reached */ |
146 | /* not reached */ |
156 | return 0; |
147 | return 0; |
157 | } |
148 | } |
158 | 149 |