FreeNOS
Public Member Functions | Static Private Member Functions | Private Attributes
RaspberryKernel Class Reference

Represents the Raspberry Pi kernel implementation. More...

#include <RaspberryKernel.h>

Inheritance diagram for RaspberryKernel:
ARMKernel ARM64Kernel Kernel Kernel WeakSingleton< Kernel > WeakSingleton< Kernel >

Public Member Functions

 RaspberryKernel (CoreInfo *info)
 Constructor function.
 
 RaspberryKernel (CoreInfo *info)
 Constructor function.
 
- Public Member Functions inherited from ARMKernel
 ARMKernel (CoreInfo *info)
 Constructor function.
 
- Public Member Functions inherited from Kernel
 Kernel (CoreInfo *info)
 Constructor function.
 
SplitAllocatorgetAllocator ()
 Get physical memory allocator.
 
ProcessManagergetProcessManager ()
 Get process manager.
 
APIgetAPI ()
 Get API.
 
MemoryContextgetMemoryContext ()
 Get the current MMU context.
 
CoreInfogetCoreInfo ()
 Get CoreInfo.
 
TimergetTimer ()
 Get Timer.
 
int run ()
 Execute the kernel.
 
virtual void enableIRQ (u32 irq, bool enabled)
 Enable or disable an hardware interrupt (IRQ).
 
virtual Result sendIRQ (const uint coreId, const uint irq)
 Send a inter-processor-interrupt (IPI) to another core.
 
virtual void hookIntVector (u32 vec, InterruptHandler h, ulong p)
 Hooks a function to an hardware interrupt.
 
virtual void executeIntVector (u32 vec, CPUState *state)
 Execute an interrupt handler.
 
virtual Result loadBootImage ()
 Loads the boot image.
 
- Public Member Functions inherited from WeakSingleton< Kernel >
 WeakSingleton (Kernel *obj)
 Constructor.
 
- Public Member Functions inherited from ARM64Kernel
 ARM64Kernel (CoreInfo *info)
 Constructor function.
 

Static Private Member Functions

static void interrupt (CPUState state)
 Interrupt handler routine.
 
static void interrupt (CPUState state)
 Interrupt handler routine.
 

Private Attributes

BroadcomInterrupt m_bcmIntr
 Broadcom specific interrupt controller.
 
BroadcomTimer m_bcmTimer
 Broadcom specific timer module.
 
u8 m_timerIrq
 Interrupt number for the timer.
 
Broadcom2836 m_bcm
 Broadcom specific registers.
 
ARM64Timer m_armTimer
 ARM generic timer.
 

Additional Inherited Members

- Public Types inherited from Kernel
enum  Result { Success , InvalidBootImage , ProcessError , IOError }
 Result codes. More...
 
- Static Public Member Functions inherited from Kernel
static Error initializeHeap ()
 Initialize heap.
 
- Static Public Member Functions inherited from WeakSingleton< Kernel >
static Kernelinstance ()
 Retrieve the instance.
 
- Protected Attributes inherited from ARMKernel
ARMException m_exception
 ARM exception handling subsystem.
 
- Protected Attributes inherited from Kernel
SplitAllocatorm_alloc
 Physical memory allocator.
 
ProcessManagerm_procs
 Process Manager.
 
APIm_api
 API handlers object.
 
CoreInfom_coreInfo
 CoreInfo object for this core.
 
Vector< List< InterruptHook * > * > m_interrupts
 Interrupt handlers.
 
IntControllerm_intControl
 Interrupt Controller.
 
Timerm_timer
 Timer device.
 
- Protected Attributes inherited from ARM64Kernel
ARM64Exception m_exception
 ARM64 exception handling subsystem.
 

Detailed Description

Represents the Raspberry Pi kernel implementation.

Definition at line 40 of file RaspberryKernel.h.

Constructor & Destructor Documentation

◆ RaspberryKernel() [1/2]

RaspberryKernel::RaspberryKernel ( CoreInfo info)

◆ RaspberryKernel() [2/2]

RaspberryKernel::RaspberryKernel ( CoreInfo info)

Constructor function.

Parameters
infoContains processor core specific information

Member Function Documentation

◆ interrupt() [1/2]

void RaspberryKernel::interrupt ( CPUState  state)
staticprivate

◆ interrupt() [2/2]

static void RaspberryKernel::interrupt ( CPUState  state)
staticprivate

Interrupt handler routine.

Parameters
stateSaved CPU register state

Field Documentation

◆ m_armTimer

ARM64Timer RaspberryKernel::m_armTimer
private

ARM generic timer.

Only used for QEMU

Definition at line 66 of file RaspberryKernel.h.

Referenced by interrupt(), and RaspberryKernel().

◆ m_bcm

Broadcom2836 RaspberryKernel::m_bcm
private

Broadcom specific registers.

Definition at line 64 of file RaspberryKernel.h.

Referenced by interrupt(), and RaspberryKernel().

◆ m_bcmIntr

BroadcomInterrupt RaspberryKernel::m_bcmIntr
private

Broadcom specific interrupt controller.

Definition at line 63 of file RaspberryKernel.h.

Referenced by RaspberryKernel().

◆ m_bcmTimer

BroadcomTimer RaspberryKernel::m_bcmTimer
private

Broadcom specific timer module.

Definition at line 74 of file RaspberryKernel.h.

Referenced by RaspberryKernel().

◆ m_timerIrq

u8 RaspberryKernel::m_timerIrq
private

Interrupt number for the timer.

Definition at line 77 of file RaspberryKernel.h.

Referenced by interrupt(), and RaspberryKernel().


The documentation for this class was generated from the following files: