The Pedigree Project
0.1
src
system
kernel
core
process
RelayEvent.cc
1
/*
2
* Copyright (c) 2026, Pedigree Developers
3
*
4
* Permission to use, copy, modify, and distribute this software for any
5
* purpose with or without fee is hereby granted.
6
*/
7
8
#include "pedigree/kernel/process/RelayEvent.h"
9
#include "pedigree/kernel/process/Thread.h"
10
#include "pedigree/kernel/processor/Processor.h"
11
#include "pedigree/kernel/processor/ProcessorInformation.h"
12
#include "pedigree/kernel/utilities/lib.h"
13
14
RelayEvent::RelayEvent(Callback callback,
size_t
number)
15
:
Event
(reinterpret_cast<uintptr_t>(&
RelayEvent
::dispatch), false),
16
m_Callback(callback),
17
m_Number(number) {}
18
19
size_t
RelayEvent::serialize
(uint8_t* buffer) {
20
MemoryCopy(buffer, &m_Callback,
sizeof
(m_Callback));
21
return
sizeof
(m_Callback);
22
}
23
24
size_t
RelayEvent::getNumber
() {
25
return
m_Number;
26
}
27
28
void
RelayEvent::dispatch(
size_t
buffer) {
29
Callback callback =
nullptr
;
30
MemoryCopy(&callback,
reinterpret_cast<
void
*
>
(buffer),
sizeof
(callback));
31
Thread
* thread =
Processor::information
().getCurrentThread();
32
if
(callback && thread) {
33
callback(thread);
34
}
35
}
Event
Definition
Event.h:49
ProcessorBase::information
static ProcessorInformation & information()
Definition
x64/Processor.h:30
RelayEvent
Definition
RelayEvent.h:21
RelayEvent::serialize
size_t serialize(uint8_t *buffer) override
Definition
RelayEvent.cc:19
RelayEvent::getNumber
size_t getNumber() override
Definition
RelayEvent.cc:24
Thread
Definition
Thread.h:75
Generated on Tue Sep 22 2026 06:05:50 for The Pedigree Project by
1.9.8