The Pedigree Project 0.1
ipc-namespace.h
1/* Copyright (c) 2026, Pedigree Developers. */
2#ifndef POSIX_IPC_NAMESPACE_H
3#define POSIX_IPC_NAMESPACE_H
4
5#include "user-namespace.h"
6
7class Thread;
8
9class EXPORTED_PUBLIC IpcNamespace {
10 public:
11 explicit IpcNamespace(const UserNamespaceRef& owner);
13 uint64_t identity() const {
14 return m_Identity;
15 }
16 const UserNamespaceRef& owner() const {
17 return m_Owner;
18 }
19
20 private:
21 const uint64_t m_Identity;
22 const UserNamespaceRef m_Owner;
23};
24
25SharedPointer<IpcNamespace> posix_ipc_namespace(Thread& task);
26SharedPointer<IpcNamespace> posix_ipc_namespace();
27bool posix_set_ipc_namespace(Thread& task, const SharedPointer<IpcNamespace>& space);
28uint64_t posix_ipc_namespace_id();
29UserNamespaceRef posix_ipc_owner();
30void posix_sem_namespace_exit(uint64_t identity);
31void posix_shm_namespace_exit(uint64_t identity);
32void posix_msg_namespace_exit(uint64_t identity);
33void posix_mqueue_namespace_exit(uint64_t identity);
34
35#endif