The Pedigree Project
0.1
src
modules
subsys
posix
signalfd-syscalls.h
1
/* Copyright (c) 2026, Pedigree Developers. */
2
#ifndef POSIX_SIGNALFD_SYSCALLS_H
3
#define POSIX_SIGNALFD_SYSCALLS_H
4
5
#include "pedigree/kernel/process/Readiness.h"
6
7
#include "descriptor-read.h"
8
#include "queued-signal.h"
9
10
class
SignalFdState
;
11
class
SignalFdObserver
;
12
13
class
SignalFdView
final :
public
ReadinessSource
{
14
public
:
15
~SignalFdView
()
override
;
16
ReadyMask queryReady();
17
ReadinessGenerations
readinessGenerations
()
override
;
18
ReadyMask queryCallerReady();
19
ReadinessGenerations
callerReadinessGenerations();
20
21
private
:
22
friend
class
SignalFd
;
23
friend
class
SignalFdObserver
;
24
SignalFdView
(
const
SharedPointer<SignalFdState>
& state,
25
const
SharedPointer<PendingSignalContext>
& context,
26
const
SharedPointer<PendingSignalBinding>
& binding);
27
bool
subscribe();
28
void
changed(
bool
maskChanged);
29
ReadinessGenerations
generationsFor(
const
SharedPointer<PendingSignalBinding>
& binding);
30
SharedPointer<SignalFdState>
m_State;
31
SharedPointer<PendingSignalContext>
m_Context;
32
SharedPointer<PendingSignalBinding>
m_Binding;
33
ReadinessSubscription
m_PendingSubscription;
34
ReadinessSubscription
m_MaskSubscription;
35
Mutex
m_GenerationLock;
36
SharedPointer<PendingSignalBinding>
m_GenerationBinding;
37
uint64_t m_MaskGeneration = 0;
38
uint64_t m_PendingGeneration = 0;
39
uint64_t m_ReadGeneration = 0;
40
};
41
42
class
SignalFd
{
43
public
:
44
explicit
SignalFd
(uint64_t mask);
45
~SignalFd
();
46
ssize_t readToUser(
void
* destination,
size_t
count,
bool
canBlock);
47
ssize_t readWithCopy(
size_t
count,
bool
canBlock, PosixDescriptorReadCopy copy,
void
* context);
48
SharedPointer<SignalFdView>
bindCaller();
49
bool
setMask(uint64_t mask);
50
bool
addDescriptorOwner();
51
void
removeDescriptorOwner();
52
53
private
:
54
SharedPointer<SignalFdState>
m_State;
55
};
56
57
int
posix_signalfd(
int
fd,
const
uint64_t* mask,
size_t
size);
58
int
posix_signalfd4(
int
fd,
const
uint64_t* mask,
size_t
size,
int
flags);
59
#endif
Mutex
Definition
Mutex.h:56
ReadinessSource
Definition
Readiness.h:86
ReadinessSubscription
Definition
Readiness.h:63
SharedPointer
Definition
SharedPointer.h:31
SignalFdObserver
Definition
signalfd-syscalls.cc:120
SignalFdState
Definition
signalfd-syscalls.cc:65
SignalFdView
Definition
signalfd-syscalls.h:13
SignalFdView::readinessGenerations
ReadinessGenerations readinessGenerations() override
Definition
signalfd-syscalls.cc:164
SignalFd
Definition
signalfd-syscalls.h:42
ReadinessGenerations
Definition
Readiness.h:31
Generated on Tue Sep 22 2026 06:05:42 for The Pedigree Project by
1.9.8