Kernel: Allow creating FIFOs in tmpfs
This commit is contained in:
@@ -408,7 +408,32 @@ namespace Kernel
|
||||
return {};
|
||||
}
|
||||
|
||||
/* FIFO INODE */
|
||||
|
||||
BAN::ErrorOr<BAN::RefPtr<TmpFIFOInode>> TmpFIFOInode::create_new(TmpFileSystem& fs, mode_t mode, uid_t uid, gid_t gid)
|
||||
{
|
||||
auto info = create_inode_info(Mode::IFIFO | mode, uid, gid);
|
||||
ino_t ino = TRY(fs.allocate_inode(info));
|
||||
|
||||
auto* inode_ptr = new TmpFIFOInode(fs, ino, info);
|
||||
if (inode_ptr == nullptr)
|
||||
return BAN::Error::from_errno(ENOMEM);
|
||||
|
||||
return BAN::RefPtr<TmpFIFOInode>::adopt(inode_ptr);
|
||||
}
|
||||
|
||||
TmpFIFOInode::TmpFIFOInode(TmpFileSystem& fs, ino_t ino, const TmpInodeInfo& info)
|
||||
: TmpInode(fs, ino, info)
|
||||
{
|
||||
ASSERT(mode().ififo());
|
||||
}
|
||||
|
||||
TmpFIFOInode::~TmpFIFOInode()
|
||||
{
|
||||
}
|
||||
|
||||
/* SOCKET INODE */
|
||||
|
||||
BAN::ErrorOr<BAN::RefPtr<TmpSocketInode>> TmpSocketInode::create_new(TmpFileSystem& fs, mode_t mode, uid_t uid, gid_t gid)
|
||||
{
|
||||
auto info = create_inode_info(Mode::IFSOCK | mode, uid, gid);
|
||||
@@ -679,6 +704,9 @@ namespace Kernel
|
||||
case Mode::IFLNK:
|
||||
new_inode = TRY(TmpSymlinkInode::create_new(m_fs, mode, uid, gid, ""_sv));
|
||||
break;
|
||||
case Mode::IFIFO:
|
||||
new_inode = TRY(TmpFIFOInode::create_new(m_fs, mode, uid, gid));
|
||||
break;
|
||||
case Mode::IFSOCK:
|
||||
new_inode = TRY(TmpSocketInode::create_new(m_fs, mode, uid, gid));
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user