mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 15:27:35 +00:00
Add primitive FIFO and hook it up to sys$pipe().
It's now possible to do this in bash: cat kernel.map | fgrep List This is very cool! :^)
This commit is contained in:
parent
18e3ddf605
commit
f1404aa948
13 changed files with 305 additions and 22 deletions
31
Kernel/FIFO.h
Normal file
31
Kernel/FIFO.h
Normal file
|
@ -0,0 +1,31 @@
|
|||
#pragma once
|
||||
|
||||
#include <AK/CircularQueue.h>
|
||||
#include <AK/Retainable.h>
|
||||
#include <AK/RetainPtr.h>
|
||||
#include <VirtualFileSystem/UnixTypes.h>
|
||||
|
||||
class FIFO : public Retainable<FIFO> {
|
||||
public:
|
||||
enum Direction {
|
||||
Neither, Reader, Writer
|
||||
};
|
||||
|
||||
static RetainPtr<FIFO> create();
|
||||
|
||||
void open(Direction);
|
||||
void close(Direction);
|
||||
|
||||
Unix::ssize_t write(const byte*, Unix::size_t);
|
||||
Unix::ssize_t read(byte*, Unix::size_t);
|
||||
|
||||
bool can_read() const;
|
||||
bool can_write() const;
|
||||
|
||||
private:
|
||||
FIFO();
|
||||
|
||||
unsigned m_writers { 0 };
|
||||
unsigned m_readers { 0 };
|
||||
CircularQueue<byte, 16> m_queue;
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue