MOS Source Code
Loading...
Searching...
No Matches
pipe.cpp File Reference
#include <limits.h>
#include "mos/ipc/pipe.hpp"
#include "mos/platform/platform.hpp"
#include "mos/syslog/printk.hpp"
#include "mos/tasks/schedule.hpp"
#include "mos/tasks/signal.hpp"
#include "mos/tasks/wait.hpp"
#include <mos/lib/sync/spinlock.hpp>
#include <mos_stdlib.hpp>
+ Include dependency graph for pipe.cpp:

Go to the source code of this file.

Macros

#define pr_fmt(fmt)
 
#define PIPE_MAGIC   MOS_FOURCC('P', 'I', 'P', 'E')
 
#define advance_buffer(buffer, bytes)
 

Functions

size_t pipe_write (pipe_t *pipe, const void *buf, size_t size)
 
size_t pipe_read (pipe_t *pipe, void *buf, size_t size)
 
bool pipe_close_one_end (pipe_t *pipe)
 Close one end of the pipe, so that the other end will get EOF.
 
PtrResult< pipe_tpipe_create (size_t bufsize)
 
static size_t pipeio_io_read (io_t *io, void *buf, size_t size)
 
static size_t pipeio_io_write (io_t *io, const void *buf, size_t size)
 
static void pipeio_io_close (io_t *io)
 
pipeio_tpipeio_create (pipe_t *pipe)
 

Variables

static const io_op_t pipe_io_ops
 

Macro Definition Documentation

◆ pr_fmt

#define pr_fmt ( fmt)
Value:
"pipe: " fmt

Definition at line 6 of file pipe.cpp.

◆ PIPE_MAGIC

#define PIPE_MAGIC   MOS_FOURCC('P', 'I', 'P', 'E')

Definition at line 18 of file pipe.cpp.

Referenced by pipe_close_one_end(), pipe_create(), pipe_read(), and pipe_write().

◆ advance_buffer

#define advance_buffer ( buffer,
bytes )
Value:
((buffer) = (void *) ((char *) (buffer) + (bytes)))
static char buffer[2048]

Definition at line 20 of file pipe.cpp.

Referenced by pipe_read(), and pipe_write().

Function Documentation

◆ pipe_write()

size_t pipe_write ( pipe_t * pipe,
const void * buf,
size_t size )

Definition at line 22 of file pipe.cpp.

Referenced by ipc_client_write(), ipc_server_write(), and pipeio_io_write().

+ Here is the call graph for this function:

◆ pipe_read()

size_t pipe_read ( pipe_t * pipe,
void * buf,
size_t size )

Definition at line 82 of file pipe.cpp.

Referenced by ipc_client_read(), ipc_server_read(), and pipeio_io_read().

+ Here is the call graph for this function:

◆ pipe_close_one_end()

bool pipe_close_one_end ( pipe_t * pipe)

Close one end of the pipe, so that the other end will get EOF.

Note
The other end should also call this function to get the pipe correctly freed.
Parameters
pipeThe pipe to close one end of.
Returns
true if the pipe was fully closed, false if the other end is still open.

Definition at line 136 of file pipe.cpp.

Referenced by ipc_client_close_channel(), ipc_server_close_channel(), and pipeio_io_close().

+ Here is the call graph for this function:

◆ pipe_create()

PtrResult< pipe_t > pipe_create ( size_t bufsize)

Definition at line 167 of file pipe.cpp.

Referenced by ipc_server_accept(), and MOS_STATIC_ASSERT().

+ Here is the call graph for this function:

◆ pipeio_io_read()

static size_t pipeio_io_read ( io_t * io,
void * buf,
size_t size )
static

Definition at line 179 of file pipe.cpp.

+ Here is the call graph for this function:

◆ pipeio_io_write()

static size_t pipeio_io_write ( io_t * io,
const void * buf,
size_t size )
static

Definition at line 186 of file pipe.cpp.

+ Here is the call graph for this function:

◆ pipeio_io_close()

static void pipeio_io_close ( io_t * io)
static

Definition at line 193 of file pipe.cpp.

+ Here is the call graph for this function:

◆ pipeio_create()

pipeio_t * pipeio_create ( pipe_t * pipe)

Definition at line 221 of file pipe.cpp.

Referenced by MOS_STATIC_ASSERT().

+ Here is the call graph for this function:

Variable Documentation

◆ pipe_io_ops

const io_op_t pipe_io_ops
static
Initial value:
= {
.read = pipeio_io_read,
.write = pipeio_io_write,
.close = pipeio_io_close,
}
static void pipeio_io_close(io_t *io)
Definition pipe.cpp:193
static size_t pipeio_io_write(io_t *io, const void *buf, size_t size)
Definition pipe.cpp:186
static size_t pipeio_io_read(io_t *io, void *buf, size_t size)
Definition pipe.cpp:179

Definition at line 215 of file pipe.cpp.

Referenced by pipeio_create().