/trunk/uspace/srv/fs/tmpfs/tmpfs.h |
---|
64,6 → 64,7 |
extern void tmpfs_read(ipc_callid_t, ipc_call_t *); |
extern void tmpfs_write(ipc_callid_t, ipc_call_t *); |
extern void tmpfs_truncate(ipc_callid_t, ipc_call_t *); |
extern void tmpfs_free(ipc_callid_t, ipc_call_t *); |
#endif |
/trunk/uspace/srv/fs/tmpfs/tmpfs.c |
---|
55,18 → 55,12 |
.name = "tmpfs", |
.ops = { |
[IPC_METHOD_TO_VFS_OP(VFS_LOOKUP)] = VFS_OP_DEFINED, |
[IPC_METHOD_TO_VFS_OP(VFS_OPEN)] = VFS_OP_DEFINED, |
[IPC_METHOD_TO_VFS_OP(VFS_CLOSE)] = VFS_OP_DEFINED, |
[IPC_METHOD_TO_VFS_OP(VFS_READ)] = VFS_OP_DEFINED, |
[IPC_METHOD_TO_VFS_OP(VFS_WRITE)] = VFS_OP_DEFINED, |
[IPC_METHOD_TO_VFS_OP(VFS_TRUNCATE)] = VFS_OP_NULL, |
[IPC_METHOD_TO_VFS_OP(VFS_RENAME)] = VFS_OP_NULL, |
[IPC_METHOD_TO_VFS_OP(VFS_OPENDIR)] = VFS_OP_NULL, |
[IPC_METHOD_TO_VFS_OP(VFS_READDIR)] = VFS_OP_NULL, |
[IPC_METHOD_TO_VFS_OP(VFS_CLOSEDIR)] = VFS_OP_NULL, |
[IPC_METHOD_TO_VFS_OP(VFS_UNLINK)] = VFS_OP_NULL, |
[IPC_METHOD_TO_VFS_OP(VFS_TRUNCATE)] = VFS_OP_DEFINED, |
[IPC_METHOD_TO_VFS_OP(VFS_MOUNT)] = VFS_OP_NULL, |
[IPC_METHOD_TO_VFS_OP(VFS_UNMOUNT)] = VFS_OP_NULL, |
[IPC_METHOD_TO_VFS_OP(VFS_FREE)] = VFS_OP_DEFINED, |
} |
}; |
118,6 → 112,12 |
case VFS_WRITE: |
tmpfs_write(callid, &call); |
break; |
case VFS_TRUNCATE: |
tmpfs_truncate(callid, &call); |
break; |
case VFS_FREE: |
tmpfs_free(callid, &call); |
break; |
default: |
ipc_answer_0(callid, ENOTSUP); |
break; |
/trunk/uspace/srv/fs/tmpfs/tmpfs_ops.c |
---|
496,6 → 496,32 |
ipc_answer_0(rid, EOK); |
} |
void tmpfs_free(ipc_callid_t rid, ipc_call_t *request) |
{ |
int dev_handle = IPC_GET_ARG1(*request); |
unsigned long index = IPC_GET_ARG2(*request); |
link_t *hlp; |
hlp = hash_table_find(&dentries, &index); |
if (!hlp) { |
ipc_answer_0(rid, ENOENT); |
return; |
} |
tmpfs_dentry_t *dentry = hash_table_get_instance(hlp, tmpfs_dentry_t, |
dh_link); |
assert(!dentry->parent); |
assert(!dentry->child); |
assert(!dentry->sibling); |
if (dentry->type == TMPFS_FILE) |
free(dentry->data); |
free(dentry->name); |
free(dentry); |
ipc_answer_0(rid, EOK); |
} |
/** |
* @} |
*/ |
/trunk/uspace/srv/fs/fat/fat.c |
---|
51,16 → 51,9 |
.name = "fat", |
.ops = { |
[IPC_METHOD_TO_VFS_OP(VFS_LOOKUP)] = VFS_OP_DEFINED, |
[IPC_METHOD_TO_VFS_OP(VFS_OPEN)] = VFS_OP_DEFINED, |
[IPC_METHOD_TO_VFS_OP(VFS_CLOSE)] = VFS_OP_DEFINED, |
[IPC_METHOD_TO_VFS_OP(VFS_READ)] = VFS_OP_DEFINED, |
[IPC_METHOD_TO_VFS_OP(VFS_WRITE)] = VFS_OP_NULL, |
[IPC_METHOD_TO_VFS_OP(VFS_TRUNCATE)] = VFS_OP_NULL, |
[IPC_METHOD_TO_VFS_OP(VFS_RENAME)] = VFS_OP_NULL, |
[IPC_METHOD_TO_VFS_OP(VFS_OPENDIR)] = VFS_OP_NULL, |
[IPC_METHOD_TO_VFS_OP(VFS_READDIR)] = VFS_OP_NULL, |
[IPC_METHOD_TO_VFS_OP(VFS_CLOSEDIR)] = VFS_OP_NULL, |
[IPC_METHOD_TO_VFS_OP(VFS_UNLINK)] = VFS_OP_NULL, |
[IPC_METHOD_TO_VFS_OP(VFS_MOUNT)] = VFS_OP_NULL, |
[IPC_METHOD_TO_VFS_OP(VFS_UNMOUNT)] = VFS_OP_NULL, |
} |