mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-05-01 20:17:13 +02:00
Kernel: Implement FIFOs/named pipes
This commit is contained in:
committed by
Andreas Kling
parent
76e34968fa
commit
d01eba6fa3
Notes:
sideshowbarker
2024-07-19 04:43:02 +09:00
Author: https://github.com/petelliott Commit: https://github.com/SerenityOS/serenity/commit/d01eba6fa3e Pull-request: https://github.com/SerenityOS/serenity/pull/2829 Issue: https://github.com/SerenityOS/serenity/issues/203 Reviewed-by: https://github.com/bugaevc
@@ -292,6 +292,23 @@ KResultOr<NonnullRefPtr<FileDescription>> VFS::open(StringView path, int options
|
||||
if (auto preopen_fd = inode.preopen_fd())
|
||||
return *preopen_fd;
|
||||
|
||||
if (metadata.is_fifo()) {
|
||||
if (options & O_WRONLY) {
|
||||
auto description = inode.fifo().open_direction_blocking(FIFO::Direction::Writer);
|
||||
description->set_rw_mode(options);
|
||||
description->set_file_flags(options);
|
||||
description->set_original_inode({}, inode);
|
||||
return description;
|
||||
} else if (options & O_RDONLY) {
|
||||
auto description = inode.fifo().open_direction_blocking(FIFO::Direction::Reader);
|
||||
description->set_rw_mode(options);
|
||||
description->set_file_flags(options);
|
||||
description->set_original_inode({}, inode);
|
||||
return description;
|
||||
}
|
||||
return KResult(-EINVAL);
|
||||
}
|
||||
|
||||
if (metadata.is_device()) {
|
||||
if (custody.mount_flags() & MS_NODEV)
|
||||
return KResult(-EACCES);
|
||||
|
||||
Reference in New Issue
Block a user