9#include IRIS_ARCH_INCLUDE(core/processor.h)
25 auto id() const ->
u16 {
return m_id; }
29 auto is_initialized() const ->
bool {
return m_is_initialized.load(di::MemoryOrder::Acquire); }
32 auto is_booted() const ->
bool {
return m_is_booted.load(di::MemoryOrder::Acquire); }
35 auto is_online() const ->
bool {
return m_is_online.load(di::MemoryOrder::Relaxed); }
51 di::Atomic<bool> m_is_online {
false };
52 di::Synchronized<di::Queue<IpiMessage*, di::StaticRing<IpiMessage*, di::Constexpr<32ZU>>>> m_ipi_message_queue;
54 arch::ArchProcessor m_arch_processor;
Definition function_ref.h:116
Definition guarded_reference.h:8
Definition preemption.h:9
Definition processor.h:19
auto is_online() const -> bool
Definition processor.h:35
void broadcast_ipi(di::FunctionRef< void(IpiMessage &)> factory)
Definition local_apic.cpp:69
void flush_tlb_local()
Definition processor.cpp:66
auto id() const -> u16
Definition processor.h:25
void mark_as_initialized()
Definition processor.h:28
Processor(u16 id)
Definition processor.h:23
void handle_pending_ipi_messages()
Definition local_apic.cpp:20
void mark_as_online()
Definition processor.h:34
auto arch_processor() -> arch::ArchProcessor &
Definition processor.h:37
auto is_initialized() const -> bool
Definition processor.h:29
void mark_as_booted()
Definition processor.h:31
auto scheduler() -> Scheduler &
Definition processor.h:26
void send_ipi(u32 target_processor_id, di::FunctionRef< void(IpiMessage &)> factory)
Definition local_apic.cpp:44
auto is_booted() const -> bool
Definition processor.h:32
Definition processor.h:12
size_t usize
Definition integers.h:33
__UINT32_TYPE__ u32
Definition integers.h:11
__UINT16_TYPE__ u16
Definition integers.h:10
di::StrongInt< VirtualAddressTag > VirtualAddress
Definition virtual_address.h:25
Definition cxx_init.cpp:12
auto current_processor_unsafe() -> Processor &
Get the current processor.
Definition processor.h:55
auto current_processor()
Definition processor.h:68
void set_current_processor(Processor &processor)
Sets the current processor address.
Definition gdt.cpp:12
auto current_scheduler()
Definition processor.h:75
void setup_current_processor_access()
Setups access to the current processor.
Definition gdt.cpp:8
Definition self_pointer.h:5
Definition processor.h:12
usize tlb_flush_size
Definition processor.h:15
Task * task_to_schedule
Definition processor.h:16
mm::VirtualAddress tlb_flush_base
Definition processor.h:14
di::Atomic< u32 > times_processed
Definition processor.h:13