18#ifndef __LIBIPC_MEMORYCHANNEL_H
19#define __LIBIPC_MEMORYCHANNEL_H
21#include <FreeNOS/System.h>
88 const bool hardReset =
true);
106 const bool hardReset =
true);
Input/Output operations specific to the ARM architecture.
Unidirectional point-to-point messaging channel.
Unidirectional point-to-point channel using shared memory.
Result setPhysical(const Address data, const Address feedback, const bool hardReset=true)
Set memory pages by physical address.
virtual Result flush()
Flush message buffers.
Result unmap()
Unmap memory pages from virtual address space.
Result flushPage(const Address page) const
Flush memory page.
Arch::IO m_data
The data page.
const Size m_maximumMessages
Maximum number of messages that can be stored.
virtual Result read(void *buffer)
Read a message.
virtual ~MemoryChannel()
Destructor.
bool operator==(const MemoryChannel &ch) const
virtual Result write(const void *buffer)
Write a message.
RingHead m_head
Local RingHead.
struct MemoryChannel::RingHead RingHead
Defines in-memory ring header.
Result reset(const bool hardReset)
Reset to initial state.
Arch::IO m_feedback
The feedback page.
Result setVirtual(const Address data, const Address feedback, const bool hardReset=true)
Set memory pages by virtual address.
bool operator!=(const MemoryChannel &ch) const
unsigned long Address
A memory address.
unsigned int Size
Any sane size indicator cannot go negative.
Defines in-memory ring header.
Size index
Index where the ring buffer starts.