2020-01-06 20:25:06 +01:00
|
|
|
#include <kernel/fs/vfs.h>
|
|
|
|
#include <kernel/memory.h>
|
2020-02-24 00:05:27 +01:00
|
|
|
#include <kernel/util/string.h>
|
2020-01-06 20:25:06 +01:00
|
|
|
|
2020-01-10 17:21:44 +01:00
|
|
|
/* vfs_dentry_alloc() - Allocate new "empty" dentry */
|
2020-01-06 20:25:06 +01:00
|
|
|
struct dentry *vfs_dentry_alloc(const char *name, mode_t mode)
|
|
|
|
{
|
|
|
|
struct dentry *node;
|
|
|
|
|
|
|
|
// Try to create new dentry
|
|
|
|
node = pm_alloc(sizeof(struct dentry));
|
|
|
|
if (node == NULL)
|
|
|
|
return (NULL);
|
|
|
|
|
|
|
|
// Initialize dentry
|
|
|
|
memset(node->name, 0x00, VFS_DENTRY_NAME_LENGHT);
|
2020-01-10 17:21:44 +01:00
|
|
|
|
|
|
|
// Set the name if possible
|
|
|
|
if (name != NULL)
|
|
|
|
strncpy(node->name, name, VFS_DENTRY_NAME_LENGHT);
|
|
|
|
|
|
|
|
// Set the mode
|
2020-01-06 20:25:06 +01:00
|
|
|
node->mode = mode;
|
2020-01-10 17:21:44 +01:00
|
|
|
|
|
|
|
// Set default value
|
|
|
|
node->inode = NULL;
|
2020-01-06 20:25:06 +01:00
|
|
|
node->parent = NULL;
|
|
|
|
node->child = NULL;
|
|
|
|
node->next = NULL;
|
|
|
|
node->mnt.inode = NULL;
|
|
|
|
node->mnt.file_op = NULL;
|
|
|
|
node->mnt.inode_op = NULL;
|
|
|
|
node->dentry_op.file_op = NULL;
|
|
|
|
node->dentry_op.inode_op = NULL;
|
|
|
|
return (node);
|
|
|
|
}
|