1// SPDX-License-Identifier: GPL-3.0-or-later
2
3#pragma once
4
5#include "mos/filesystem/vfs_types.hpp"
6#include "mos/types.hpp"
7
8#include <stddef.h>
9
10struct IPCDescriptor;
11struct IPCServer;
12
13extern const file_ops_t ipc_sysfs_file_ops;
14
15void ipc_init(void);
16
17PtrResult<IPCServer> ipc_server_create(mos::string_view name, size_t max_pending_connections);
18
19PtrResult<IPCServer> ipc_get_server(mos::string_view name);
20
21PtrResult<IPCDescriptor> ipc_server_accept(IPCServer *server);
22
23void ipc_server_close(IPCServer *server);
24
25PtrResult<IPCDescriptor> ipc_connect_to_server(mos::string_view name, size_t buffer_size);
26
27size_t ipc_client_read(IPCDescriptor *ipc, void *buffer, size_t size);
28size_t ipc_client_write(IPCDescriptor *ipc, const void *buffer, size_t size);
29size_t ipc_server_read(IPCDescriptor *ipc, void *buffer, size_t size);
30size_t ipc_server_write(IPCDescriptor *ipc, const void *buffer, size_t size);
31
32void ipc_client_close_channel(IPCDescriptor *ipc);
33void ipc_server_close_channel(IPCDescriptor *ipc);
34