PatchworkOS
Loading...
Searching...
No Matches
pipe.c File Reference
#include <kernel/ipc/pipe.h>
#include <kernel/fs/file.h>
#include <kernel/fs/vfs.h>
#include <kernel/log/log.h>
#include <kernel/log/panic.h>
#include <kernel/mem/pmm.h>
#include <kernel/sched/thread.h>
#include <kernel/sync/lock.h>
#include <kernel/utils/ring.h>
#include <assert.h>
#include <stdlib.h>
#include <sys/io.h>
#include <sys/math.h>

Go to the source code of this file.

Functions

static uint64_t pipe_open (file_t *file)
 
static uint64_t pipe_open2 (file_t *files[2])
 
static void pipe_close (file_t *file)
 
static uint64_t pipe_read (file_t *file, void *buffer, uint64_t count, uint64_t *offset)
 
static uint64_t pipe_write (file_t *file, const void *buffer, uint64_t count, uint64_t *offset)
 
static wait_queue_tpipe_poll (file_t *file, poll_events_t *revents)
 
void pipe_init (void)
 

Variables

static dentry_tpipeDir = NULL
 
static dentry_tnewFile = NULL
 
static file_ops_t fileOps
 

Function Documentation

◆ pipe_close()

static void pipe_close ( file_t file)
static

◆ pipe_open()

static uint64_t pipe_open ( file_t file)
static

◆ pipe_open2()

static uint64_t pipe_open2 ( file_t files[2])
static

◆ pipe_poll()

static wait_queue_t * pipe_poll ( file_t file,
poll_events_t revents 
)
static

Definition at line 180 of file pipe.c.

References file, LOCK_SCOPE, POLLIN, POLLOUT, dentry_t::private, ring_data_length(), and ring_free_length().

◆ pipe_read()

static uint64_t pipe_read ( file_t file,
void *  buffer,
uint64_t  count,
uint64_t offset 
)
static

◆ pipe_write()

static uint64_t pipe_write ( file_t file,
const void *  buffer,
uint64_t  count,
uint64_t offset 
)
static

Variable Documentation

◆ fileOps

file_ops_t fileOps
static
Initial value:
= {
.open = pipe_open,
.open2 = pipe_open2,
.close = pipe_close,
.read = pipe_read,
.write = pipe_write,
.poll = pipe_poll,
}
static uint64_t pipe_open(file_t *file)
Definition pipe.c:20
static void pipe_close(file_t *file)
Definition pipe.c:73
static uint64_t pipe_write(file_t *file, const void *buffer, uint64_t count, uint64_t *offset)
Definition pipe.c:139
static uint64_t pipe_open2(file_t *files[2])
Definition pipe.c:46
static uint64_t pipe_read(file_t *file, void *buffer, uint64_t count, uint64_t *offset)
Definition pipe.c:99
static wait_queue_t * pipe_poll(file_t *file, poll_events_t *revents)
Definition pipe.c:180

Definition at line 197 of file pipe.c.

Referenced by pipe_init().

◆ newFile

dentry_t* newFile = NULL
static

Definition at line 18 of file pipe.c.

Referenced by pipe_init().

◆ pipeDir

dentry_t* pipeDir = NULL
static

Definition at line 17 of file pipe.c.

Referenced by pipe_init().