Kernel: Rewrite pipes using the new ring buffer
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
#include <BAN/Array.h>
|
||||
#include <kernel/FS/Inode.h>
|
||||
#include <kernel/Memory/ByteRingBuffer.h>
|
||||
#include <kernel/ThreadBlocker.h>
|
||||
|
||||
namespace Kernel
|
||||
@@ -38,7 +39,7 @@ namespace Kernel
|
||||
virtual BAN::ErrorOr<size_t> write_impl(off_t, BAN::ConstByteSpan) override;
|
||||
virtual BAN::ErrorOr<void> fsync_impl() final override { return {}; }
|
||||
|
||||
virtual bool can_read_impl() const override { return m_buffer_size > 0; }
|
||||
virtual bool can_read_impl() const override { return !m_buffer->empty(); }
|
||||
virtual bool can_write_impl() const override { return true; }
|
||||
virtual bool has_error_impl() const override { return m_reading_count == 0; }
|
||||
virtual bool has_hungup_impl() const override { return m_writing_count == 0; }
|
||||
@@ -54,9 +55,7 @@ namespace Kernel
|
||||
timespec m_ctime {};
|
||||
ThreadBlocker m_thread_blocker;
|
||||
|
||||
BAN::Array<uint8_t, PAGE_SIZE> m_buffer;
|
||||
BAN::Atomic<size_t> m_buffer_size { 0 };
|
||||
size_t m_buffer_tail { 0 };
|
||||
BAN::UniqPtr<ByteRingBuffer> m_buffer;
|
||||
|
||||
BAN::Atomic<uint32_t> m_writing_count { 1 };
|
||||
BAN::Atomic<uint32_t> m_reading_count { 1 };
|
||||
|
||||
Reference in New Issue
Block a user