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 | |
10 | struct IPCDescriptor; |
11 | struct IPCServer; |
12 | |
13 | extern const file_ops_t ipc_sysfs_file_ops; |
14 | |
15 | void ipc_init(void); |
16 | |
17 | PtrResult<IPCServer> ipc_server_create(mos::string_view name, size_t max_pending_connections); |
18 | |
19 | PtrResult<IPCServer> ipc_get_server(mos::string_view name); |
20 | |
21 | PtrResult<IPCDescriptor> ipc_server_accept(IPCServer *server); |
22 | |
23 | void ipc_server_close(IPCServer *server); |
24 | |
25 | PtrResult<IPCDescriptor> ipc_connect_to_server(mos::string_view name, size_t buffer_size); |
26 | |
27 | size_t ipc_client_read(IPCDescriptor *ipc, void *buffer, size_t size); |
28 | size_t ipc_client_write(IPCDescriptor *ipc, const void *buffer, size_t size); |
29 | size_t ipc_server_read(IPCDescriptor *ipc, void *buffer, size_t size); |
30 | size_t ipc_server_write(IPCDescriptor *ipc, const void *buffer, size_t size); |
31 | |
32 | void ipc_client_close_channel(IPCDescriptor *ipc); |
33 | void ipc_server_close_channel(IPCDescriptor *ipc); |
34 | |