Subversion Repositories HelenOS

Rev

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