Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 2730 → Rev 2731

/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);
}
 
/**
* @}
*/