The Pedigree Project 0.1
mqueue-netlink.h
1/* Copyright (c) 2026, Pedigree Developers. */
2#ifndef POSIX_MQUEUE_NETLINK_H
3#define POSIX_MQUEUE_NETLINK_H
4
5#include "pedigree/kernel/process/ConditionVariable.h"
6
7#include "net-syscalls.h"
8
11 public:
12 MqueueNetlinkSocket(int type, int protocol);
13 ~MqueueNetlinkSocket() override;
14 bool create() override;
15 bool reserveCookie();
16 void deliverCookie(const uint8_t cookie[32], bool removed);
17 void lastDescriptorClosed() override;
18 bool canPoll() const override;
19 ReadyMask queryReady(bool reading, bool writing) override;
21 int connect(const struct sockaddr_storage*, socklen_t) override;
22 ssize_t sendto_msg(const struct msghdr*, const SharedPointer<SocketRights>&) override;
23 ssize_t recvfrom_msg(struct msghdr*, SharedPointer<SocketRights>*) override;
24 int listen(int) override;
25 int bind(const struct sockaddr_storage*, socklen_t) override;
26 int accept(struct sockaddr_storage*, socklen_t*, int, DescriptorLease*) override;
27 int shutdown(int) override;
28 int getpeername(struct sockaddr_storage*, socklen_t*) override;
29 int getsockname(struct sockaddr_storage*, socklen_t*) override;
30 int setsockopt(int, int, const void*, socklen_t) override;
31 int getsockopt(int, int, void*, socklen_t*) override;
32
33 private:
34 Mutex m_Lock;
35 ConditionVariable m_Changed;
36 uint8_t m_Cookies[64][32];
37 size_t m_Head, m_Count, m_Reserved;
38 bool m_Closed;
39 ReadinessGenerations m_Generations;
40};
41
42#endif
void lastDescriptorClosed() override
ReadinessGenerations readinessGenerations() override
bool create() override
ReadyMask queryReady(bool reading, bool writing) override
Definition Mutex.h:56