9#ifndef MAXOS_PROCESSES_IPC_H
10#define MAXOS_PROCESSES_IPC_H
23namespace MaxOS::processes {
32 uintptr_t m_physical_address;
41 void open(
size_t flags)
final;
42 void close(
size_t flags)
final;
44 int read(
void* buffer,
size_t size,
size_t flags)
final;
47 [[nodiscard]]
size_t size()
const;
64 int read(
void* buffer,
size_t size,
size_t flags)
final;
65 int write(
const void* buffer,
size_t size,
size_t flags)
final;
Defines a Buffer class for safe memory operations.
Stores the left, top, width and height of a rectangle.
Enables a resource to be used by only one instance at a time through locking and unlocking.
Represents a generic resource that can be opened, closed, read from and written to.
string name()
Gets the name of this resource.
resource_type_t type()
Gets the type of this resource.
A block memory that is mapped into multiple processes.
size_t size() const
Gets the size of the shared memory block.
int read(void *buffer, size_t size, size_t flags) final
Get the address that the current process has this shared memory mapped to.
void close(size_t flags) final
Frees the page containing the shared memory.
uintptr_t physical_address() const
Gets the physical address of the shared memory block.
void open(size_t flags) final
Map the shared memory into the address space of the owning process.
A endpoint that allows processes to queue messages on.
int write(const void *buffer, size_t size, size_t flags) final
Handles writing to the message endpoint resource by writing the buffer as a message.
int read(void *buffer, size_t size, size_t flags) final
Reads the first message from the endpoint or will yield until a message has been written.
~SharedMessageEndpoint() final
Destroys the shared message endpoint and frees all messages.
Defines classes for memory input and output operations of various bit widths (8, 16,...
Defines a PhysicalMemoryManager class for managing physical memory allocation and deallocation of pag...
Defines classes for managing process resources such as files and devices.
::syscore::ResourceType resource_type_t
Alias to make the libsyscore ResourceType accessible here.
Defines Spinlock and BlockingLock classes for thread synchronization.
Defines a String class for dynamically sized strings with various operations.
Defines a Vector class for dynamically storing an array of elements.