Rev 3011 | 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 |