Iros
 
Loading...
Searching...
No Matches
iris::GlobalState Struct Reference

#include <iris/core/global_state.h>

Public Member Functions

 GlobalState ()=default
 
 ~GlobalState ()=default
 

Public Attributes

Readonly fields

Read-only after after kernel initialization. Ideally would be marked const.

mm::PhysicalAddress allocated_physical_page_base { 0 }
 
mm::PhysicalAddress max_physical_address { 0 }
 
mm::VirtualAddress virtual_to_physical_offset { 0 }
 
mm::VirtualAddress heap_start { 0 }
 
di::Span< byte const > initrd
 
ProcessorInfo processor_info
 
test::TestManager unit_test_manager
 
arch::FpuState initial_fpu_state
 
di::Optional< acpi::AcpiInformationacpi_info
 
Processor boot_processor
 
di::LinkedList< Processoralernate_processors
 
di::TreeMap< u32, Processor * > processor_map
 
arch::ReadonlyGlobalState arch_readonly_state
 
di::Arc< TNodeinitrd_root
 
di::LinkedList< di::Synchronized< IrqController > > irq_controllers
 
di::LinkedList< di::Synchronized< Timer > > timers
 
di::Synchronized< Timer > * scheduler_timer { nullptr }
 
di::Synchronized< Timer > * calibration_timer { nullptr }
 
bool current_processor_available { false }
 
Mutable fields

Mutable global state. These fields have internal synchronization, and so are safe to access concurrently. Typically, calling code must call .lock() or use .with_lock() to mutate or even read these fields.

mm::AddressSpace kernel_address_space
 
mm::VirtualAddress heap_end { 0 }
 
di::Array< mm::Region, 6 > inital_kernel_regions
 
di::Array< mm::BackingObject, 5 > inital_kernel_backing_objects
 
TaskNamespace task_namespace
 
di::Queue< byte, di::StaticRing< byte, di::Constexpr< 128ZU > > > input_data_queue
 
WaitQueue input_wait_queue
 
di::Queue< TaskFinalizationRequest, di::StaticRing< TaskFinalizationRequest, di::Constexpr< 128ZU > > > task_finalization_data_queue
 
WaitQueue task_finalization_wait_queue
 
di::Synchronized< di::Array< di::StaticVector< IrqHandler, di::Constexpr< 8ZU > >, 256 > > irq_handlers
 
arch::MutableGlobalState arch_mutable_state
 
di::Atomic< bool > all_aps_booted { false }
 
Spinlock debug_output_lock
 
di::Synchronized< ObjectPool< IpiMessage > > ipi_message_pool
 
di::Atomic< u32next_processor_to_schedule_on { 0 }
 

Constructor & Destructor Documentation

◆ GlobalState()

iris::GlobalState::GlobalState ( )
default

◆ ~GlobalState()

iris::GlobalState::~GlobalState ( )
default

Member Data Documentation

◆ acpi_info

di::Optional<acpi::AcpiInformation> iris::GlobalState::acpi_info

◆ alernate_processors

di::LinkedList<Processor> iris::GlobalState::alernate_processors

◆ all_aps_booted

di::Atomic<bool> iris::GlobalState::all_aps_booted { false }
mutable

◆ allocated_physical_page_base

mm::PhysicalAddress iris::GlobalState::allocated_physical_page_base { 0 }

◆ arch_mutable_state

arch::MutableGlobalState iris::GlobalState::arch_mutable_state
mutable

◆ arch_readonly_state

arch::ReadonlyGlobalState iris::GlobalState::arch_readonly_state

◆ boot_processor

Processor iris::GlobalState::boot_processor

◆ calibration_timer

di::Synchronized<Timer>* iris::GlobalState::calibration_timer { nullptr }
mutable

◆ current_processor_available

bool iris::GlobalState::current_processor_available { false }

◆ debug_output_lock

Spinlock iris::GlobalState::debug_output_lock
mutable

◆ heap_end

mm::VirtualAddress iris::GlobalState::heap_end { 0 }
mutable

◆ heap_start

mm::VirtualAddress iris::GlobalState::heap_start { 0 }

◆ inital_kernel_backing_objects

di::Array<mm::BackingObject, 5> iris::GlobalState::inital_kernel_backing_objects
mutable

◆ inital_kernel_regions

di::Array<mm::Region, 6> iris::GlobalState::inital_kernel_regions
mutable

◆ initial_fpu_state

arch::FpuState iris::GlobalState::initial_fpu_state

◆ initrd

di::Span<byte const> iris::GlobalState::initrd

◆ initrd_root

di::Arc<TNode> iris::GlobalState::initrd_root

◆ input_data_queue

di::Queue<byte, di::StaticRing<byte, di::Constexpr<128ZU> > > iris::GlobalState::input_data_queue
mutable

◆ input_wait_queue

WaitQueue iris::GlobalState::input_wait_queue
mutable

◆ ipi_message_pool

di::Synchronized<ObjectPool<IpiMessage> > iris::GlobalState::ipi_message_pool
mutable

◆ irq_controllers

di::LinkedList<di::Synchronized<IrqController> > iris::GlobalState::irq_controllers
mutable

◆ irq_handlers

di::Synchronized<di::Array<di::StaticVector<IrqHandler, di::Constexpr<8ZU> >, 256> > iris::GlobalState::irq_handlers
mutable

◆ kernel_address_space

mm::AddressSpace iris::GlobalState::kernel_address_space
mutable

◆ max_physical_address

mm::PhysicalAddress iris::GlobalState::max_physical_address { 0 }

◆ next_processor_to_schedule_on

di::Atomic<u32> iris::GlobalState::next_processor_to_schedule_on { 0 }
mutable

◆ processor_info

ProcessorInfo iris::GlobalState::processor_info

◆ processor_map

di::TreeMap<u32, Processor*> iris::GlobalState::processor_map

◆ scheduler_timer

di::Synchronized<Timer>* iris::GlobalState::scheduler_timer { nullptr }
mutable

◆ task_finalization_data_queue

di::Queue<TaskFinalizationRequest, di::StaticRing<TaskFinalizationRequest, di::Constexpr<128ZU> > > iris::GlobalState::task_finalization_data_queue
mutable

◆ task_finalization_wait_queue

WaitQueue iris::GlobalState::task_finalization_wait_queue
mutable

◆ task_namespace

TaskNamespace iris::GlobalState::task_namespace
mutable

◆ timers

di::LinkedList<di::Synchronized<Timer> > iris::GlobalState::timers
mutable

◆ unit_test_manager

test::TestManager iris::GlobalState::unit_test_manager

◆ virtual_to_physical_offset

mm::VirtualAddress iris::GlobalState::virtual_to_physical_offset { 0 }

The documentation for this struct was generated from the following file: