The Pedigree Project  0.1
Modules | Classes | Macros | Typedefs | Enumerations | Functions | Variables
kernel

The kernel. More...

+ Collaboration diagram for kernel:

Modules

 utilities
 Utilities.
 
 processor-specifc kernel
 processor-specific kernel interface
 
 machine-specifc kernel
 machine-specific kernel interface
 
 debugger
 the kernel debugger
 
 linker
 the kernel linker
 

Classes

class  Atomic< T, bAllow >
 
class  Atomic< T, true >
 
class  Atomic< bool, true >
 
struct  BootstrapStruct_t
 Bootstrap structure passed to the kernel entry point. More...
 
class  LockGuard< T >
 
class  RecursingLockGuard< T >
 
class  Log
 the kernel's log More...
 

Macros

#define DEPRECATED   __attribute__((deprecated))
 
#define NORETURN   __attribute__((noreturn))
 
#define PURE   __attribute__((pure))
 
#define CONST   __attribute__((const))
 
#define ALWAYS_INLINE   __attribute__((always_inline))
 
#define NEVER_INLINE   __attribute__((noinline))
 
#define ALIGN(x)   __attribute__((aligned(x)))
 
#define PACKED   __attribute__((packed))
 
#define MAY_ALIAS   __attribute__((may_alias))
 
#define LIKELY(exp)   __builtin_expect(!!(exp), 1)
 
#define UNLIKELY(exp)   __builtin_expect(!!(exp), 0)
 
#define UNREACHABLE   __builtin_unreachable()
 
#define FORMAT(type, idx, first)   __attribute__((format(type, idx, first)))
 
#define IS_CONSTANT(x)   __builtin_constant_p(x)
 
#define SECTION(x)   __attribute__((__section__(x)))
 
#define MUST_USE_RESULT   __attribute__((warn_unused_result))
 
#define USED   __attribute__((used))
 
#define WEAK   __attribute__((weak))
 
#define EXPORTED_PUBLIC   __attribute__((visibility("default")))
 
#define __has_builtin(x)   0
 
#define __has_feature(x)   0
 
#define ASSUME_ALIGNMENT(b, sz)   __builtin_assume_aligned((b), sz)
 
#define INITIALISATION_ONLY   SECTION(".init.text")
 
#define INITIALISATION_ONLY_DATA   SECTION(".init.data")
 
#define HAS_ADDRESS_SANITIZER   0
 
#define HAS_THREAD_SANITIZER   0
 
#define BARRIER()   __asm__ __volatile__("" ::: "memory")
 
#define FENCE()   __sync_synchronize()
 
#define SHOW_FILE_IN_LOGS   0
 
#define FILE_LOG(entry, level)
 
#define LOG_AT_LEVEL(level, text, lock)
 
#define DEBUG_LOG(text)
 
#define DEBUG_LOG_NOLOCK(text)
 
#define NOTICE(text)   LOG_AT_LEVEL(Log::Notice, text, 1)
 
#define NOTICE_NOLOCK(text)   LOG_AT_LEVEL(Log::Notice, text, 0)
 
#define WARNING(text)   LOG_AT_LEVEL(Log::Warning, text, 1)
 
#define WARNING_NOLOCK(text)   LOG_AT_LEVEL(Log::Warning, text, 0)
 
#define ERROR(text)   LOG_AT_LEVEL(Log::Error, text, 1)
 
#define ERROR_NOLOCK(text)   LOG_AT_LEVEL(Log::Error, text, 0)
 
#define FATAL(text)
 
#define FATAL_NOLOCK(text)
 
#define LOG_LENGTH   128
 
#define LOG_ENTRIES   ((1 << 16) / sizeof(LogEntry))
 
#define LOG_CALLBACK_COUNT   16
 
#define assert(x)
 
#define assert_heap_ptr_valid(x)
 
#define bool   char
 

Typedefs

typedef StaticCord< 8 > LogCord
 
typedef void(* BootProgressUpdateFn) (const char *)
 

Enumerations

enum  NumberType { Hex, Dec, Oct }
 
enum  Modifier { Flush }
 

Functions

void installSerialLogger ()
 
void EXPORTED_PUBLIC panic (const char *msg) NORETURN
 
void EXPORTED_PUBLIC _assert (bool b, const char *file, int line, const char *func)
 
bool _assert_ptr_valid (uintptr_t x)
 

Variables

class BootstrapStruct_t *g_pBootstrapInfo EXPORTED_PUBLIC
 
size_t g_BootProgressCurrent
 
size_t g_BootProgressTotal
 
BootProgressUpdateFn g_BootProgressUpdate
 

Detailed Description

The kernel.

Classes, functions, defines belonging to the kernel

Macro Definition Documentation

#define ALIGN (   x)    __attribute__((aligned(x)))

Specific alignment for a type/variable

Definition at line 46 of file system/include/pedigree/kernel/compiler.h.

Referenced by AtaDisk::doRead().

#define ALWAYS_INLINE   __attribute__((always_inline))

Functions that should always be inlined

Definition at line 42 of file system/include/pedigree/kernel/compiler.h.

#define assert (   x)
Value:
do \
{ \
bool __pedigree_assert_chk = (x); \
if (UNLIKELY(!__pedigree_assert_chk)) \
__pedigree_assert_chk, __FILE__, __LINE__, \
__PRETTY_FUNCTION__); \
} while (0)
void EXPORTED_PUBLIC _assert(bool b, const char *file, int line, const char *func)
Definition: assert.cc:24

If the passed argument resolves to a Boolean false value, execution will be halted and a message displayed.

Definition at line 37 of file assert.h.

Referenced by Semaphore::acquireWithResult(), FileDisk::align(), ScsiDisk::align(), SlamCache::allocate(), SlamAllocator::allocate(), MemoryPool::allocateDoer(), String::assign(), Ext2Directory::cacheDirectoryContents(), PosixSubsystem::copyDescriptors(), AtaDisk::doRead(), Ext2Node::ensureLargeEnough(), Filesystem::find(), PosixSubsystem::findFile(), Ext2Filesystem::findFreeInode(), SlamCache::free(), PosixSubsystem::freeMultipleFds(), RequestQueue::getNextRequest(), Scheduler::getProcess(), Ext2Filesystem::initialise(), SlamCache::initialise(), UsbDevice::initialise(), IoEvent::IoEvent(), Elf::loadModule(), HostedVirtualAddressSpace::map(), PollEvent::PollEvent(), String::prevCharacter(), CdiDisk::read(), File::readBlock(), SlamCache::recovery(), Semaphore::release(), Cache::release(), Ext2Filesystem::releaseInode(), Semaphore::Semaphore(), File::setCachedPage(), Time::Stopwatch::stop(), StringView::substring(), RoundRobin::threadStatusChanged(), AnonymousMemoryMap::trap(), CdiDisk::write(), List< T, nodePoolSize >::~List(), PosixSubsystem::~PosixSubsystem(), Semaphore::~Semaphore(), UnixSocket::~UnixSocket(), and UsbDevice::~UsbDevice().

#define assert_heap_ptr_valid (   x)
Value:
_assert_ptr_valid(reinterpret_cast<uintptr_t>(x)), __FILE__, __LINE__, \
__PRETTY_FUNCTION__)
void EXPORTED_PUBLIC _assert(bool b, const char *file, int line, const char *func)
Definition: assert.cc:24

Definition at line 48 of file assert.h.

#define CONST   __attribute__((const))

Function does not have a side-effect and does only depend on its arguments

Definition at line 40 of file system/include/pedigree/kernel/compiler.h.

#define DEBUG_LOG (   text)
#define DEPRECATED   __attribute__((deprecated))

Deprecated function/variable/type

Definition at line 33 of file system/include/pedigree/kernel/compiler.h.

#define ERROR (   text)    LOG_AT_LEVEL(Log::Error, text, 1)

Add a error message to the log

Definition at line 82 of file Log.h.

Referenced by VirtualTerminalManager::activate(), BusMasterIde::add(), RequestQueue::addAsyncRequest(), Directory::addDirectoryEntry(), Ext2Directory::addEntry(), Uhci::addInterruptInHandler(), Ehci::addInterruptInHandler(), Ohci::addInterruptInHandler(), Uhci::addTransferToTransaction(), Ehci::addTransferToTransaction(), Ohci::addTransferToTransaction(), SlamAllocator::allocate(), Elf::allocate(), X86CommonPhysicalMemoryManager::allocateRegion(), MIPS32VirtualAddressSpace::allocateStack(), Elf::applyRelocation(), Archive::Archive(), Ext2Directory::cacheDirectoryContents(), Iso9660Directory::cacheDirectoryContents(), PedigreeCSyscallManager::call(), PosixSyscallManager::call(), NativeSyscallManager::call(), StreamingScreenLogger::callback(), FramebufferFile::command(), X64VirtualAddressSpace::conditionalTableEntryAllocation(), UsbDevice::controlRequest(), Elf::create(), Elf::createNeededOnly(), Ext2Filesystem::createNode(), Uhci::createTransaction(), Ehci::createTransaction(), Ohci::createTransaction(), Pipe::decreaseRefCount(), Thread::detach(), UsbHub::deviceConnected(), UsbHub::deviceDisconnected(), Uhci::doAsync(), Ehci::doAsync(), Ohci::doAsync(), ArmV7VirtualAddressSpace::doMap(), AtaDisk::doRead(), ScsiDisk::doRead(), DwarfState::DwarfState(), Ext2Node::ensureLargeEnough(), Event::Event(), DwarfCfiAutomaton::executeInstruction(), Bios::executeInterrupt(), CacheManager::executeRequest(), VirtualAddressSpace::expandHeap(), VbeDisplay::fillRectangle(), Ext2Filesystem::findFreeBlocks(), ScsiDisk::flush(), X86Keyboard::getChar(), SerialIO::getChar(), X86Keyboard::getCharNonBlock(), FatFilesystem::getClusterEntry(), File::getFullPath(), Thread::getNextEvent(), MIPS32VirtualAddressSpace::getPageTableChunk(), PPC32StackFrame::getParameter(), Config::Result::getStr(), VbeFramebuffer::hwRedraw(), UsbUlpi::initialise(), PciBus::initialise(), CdiDisk::initialise(), Ext2Filesystem::initialise(), FatFilesystem::initialise(), Heathrow::initialise(), AtaDisk::initialise(), OpenPic::initialise(), ScsiDisk::initialise(), BusMasterIde::initialise(), KernelElf::initialise(), UsbDevice::initialise(), Ehci::initialiseController(), Mac::initialiseDeviceTree(), FtdiSerialDevice::initialiseDriver(), UsbHumanInterfaceDevice::initialiseDriver(), UsbMassStorageDevice::initialiseDriver(), Dm9601::initialiseDriver(), DynamicLinker::initPlt(), Cache::insert(), NetworkFilter::installCallback(), NMFaultHandler::interrupt(), X64InterruptManager::interrupt(), Pic::interrupt(), MemoryMappedFile::invalidate(), Ipc::IpcMessage::IpcMessage(), Nic3C90x::irq(), Ps2Controller::irq(), Ohci::irq(), Processor::jumpUser(), PosixSubsystem::kill(), PosixSubsystem::loadElf(), KernelElf::loadModule(), Elf::loadModule(), DynamicLinker::loadObject(), DynamicLinker::loadProgram(), Device::Address::map(), VbeDisplay::newBuffer(), Nic3C90x::Nic3C90x(), page_align(), PciAtaController::PciAtaController(), PointerGuard< T >::PointerGuard(), Thread::pokeState(), Thread::popState(), String::prevCharacter(), Thread::pushState(), SerialIO::putChar(), DiskImage::read(), File::read(), ScsiDisk::read(), FramebufferFile::readBlock(), File::readBlock(), File::readIntoCache(), NetworkStack::receive(), SlamCache::recovery(), Framebuffer::redraw(), Ext2Filesystem::releaseBlock(), FatFilesystem::remove(), Ohci::removeED(), FatDirectory::removeEntry(), DynamicLinker::resolvePltSymbol(), AsidManager::returnAsid(), Processor::saveState(), Prcm::SelectClockCORE(), Prcm::SelectClockPER(), Prcm::SelectClockPLL(), Rtl8139::send(), Loopback::send(), Ne2k::send(), AtaDisk::sendCommand(), PosixSubsystem::sendSignal(), Prcm::SetClockPLL(), FatFilesystem::setClusterEntry(), Prcm::SetFuncClockCORE(), Prcm::SetFuncClockPER(), Prcm::SetIfaceClockCORE(), Prcm::SetIfaceClockPER(), X86Keyboard::setLedState(), MemoryMappedFile::setPermissions(), VbeDisplay::setScreenMode(), Display::setScreenMode(), Processor::setSingleStep(), VirtualTerminalManager::setTerminalMode(), Thread::shutdown(), UnixSocketSyscalls::shutdown(), AnonymousMemoryMap::split(), MemoryMappedFile::split(), StringView::substring(), Processor::switchAddressSpace(), MemoryMappedFile::sync(), PedigreeCSyscallManager::syscall(), PosixSyscallManager::syscall(), NativeSyscallManager::syscall(), KernelCoreSyscallManager::syscall(), WaitCleanup::terminated(), Subsystem::threadException(), PosixSubsystem::threadException(), Cache::timer(), DynamicLinker::trap(), AnonymousMemoryMap::trap(), MemoryMappedFile::trap(), MemoryMapManager::trap(), KernelElf::unloadModule(), X86CommonPhysicalMemoryManager::unmapRegion(), Event::unserialize(), KeymapManager::useCompiledKeymap(), KeymapManager::useKeymap(), UserManager::UserManager(), Prcm::WaitCoreIdleStatus(), Prcm::WaitPllIdleStatus(), ScsiDisk::write(), File::write(), UnixSocket::writeBytewise(), TextIO::writeStr(), Ext2Node::~Ext2Node(), and Thread::~Thread().

#define EXPORTED_PUBLIC   __attribute__((visibility("default")))

This function or variable is to be exposed to other objects. This is needed for anything that the kernel will expose to kernel modules.

Definition at line 78 of file system/include/pedigree/kernel/compiler.h.

Referenced by Ps2Controller::dump(), Ps2Mouse::getName(), BootIO::initialise(), CdiIrqHandler::irq(), CdiNet::setStationInfo(), and WaitCleanup::terminated().

#define FATAL (   text)
Value:
do \
{ \
LOG_AT_LEVEL(Log::Fatal, text, 1); \
while (1) \
; \
} while (0)

Add a fatal message to the log Breaks into debugger and panics if the debugger isn't around, or the user exits it.

Definition at line 89 of file Log.h.

Referenced by BusMasterIde::add(), HashedPageTable::addMapping(), PerProcessorScheduler::addThread(), BusMasterIde::begin(), TimeoutGuard::cancel(), Ext2Directory::convertToFile(), Ext2Filesystem::createNode(), ArmV7VirtualAddressSpace::doMap(), AtaDisk::doRead(), ScsiDisk::doRead(), AtaDisk::doWrite(), Ext2Node::ensureLargeEnough(), Event::Event(), PosixSubsystem::exit(), VirtualAddressSpace::expandHeap(), FatFilesystem::findFreeCluster(), ArmV7PhysicalMemoryManager::freePageUnlocked(), HostedPhysicalMemoryManager::freePageUnlocked(), X86CommonPhysicalMemoryManager::freePageUnlocked(), Symlink::fromFile(), Pipe::fromFile(), Directory::fromFile(), FatFilesystem::getClusterEntry(), KernelElf::getDependingModule(), Thread::getKernelStack(), Process::getThread(), UserManager::initialise(), X86CommonPhysicalMemoryManager::initialise64(), X86IsaDma::initTransfer(), Cache::insert(), RadixTree< T >::insert(), PPC32InterruptManager::interrupt(), Ipc::IpcMessage::IpcMessage(), Process::kill(), PerProcessorScheduler::killCurrentThread(), KernelElf::loadModule(), X86CommonPhysicalMemoryManager::PageStack::maybeMap(), page_align(), PerProcessorScheduler::processorAddThread(), FileDisk::read(), File::readBytewise(), NetworkStack::registerDevice(), Ext2Filesystem::releaseBlock(), LockManager::released(), Filesystem::remove(), PerProcessorScheduler::schedule(), IoEvent::serialize(), PollEvent::serialize(), FatFilesystem::setClusterEntry(), X86Keyboard::setLedState(), Thread::setStatus(), WaitCleanup::terminated(), Thread::Thread(), RequestQueue::RequestQueueOverrunChecker::timer(), MemoryMapManager::unmapAllUnlocked(), HostedPhysicalMemoryManager::unmapRegion(), SlamAllocator::wipe(), File::writeBytewise(), TextIO::writeStr(), and X86VirtualAddressSpace::X86VirtualAddressSpace().

#define FATAL_NOLOCK (   text)
Value:
do \
{ \
LOG_AT_LEVEL(Log::Fatal, text, 0); \
while (1) \
; \
} while (0)

Definition at line 96 of file Log.h.

#define FORMAT (   type,
  idx,
  first 
)    __attribute__((format(type, idx, first)))

This function handles a format string.

Definition at line 58 of file system/include/pedigree/kernel/compiler.h.

Referenced by String::operator StringView().

#define INITIALISATION_ONLY   SECTION(".init.text")
#define IS_CONSTANT (   x)    __builtin_constant_p(x)

True if the expression is constant at compile time, false otherwise.

Definition at line 60 of file system/include/pedigree/kernel/compiler.h.

#define LIKELY (   exp)    __builtin_expect(!!(exp), 1)
#define LOG_AT_LEVEL (   level,
  text,
  lock 
)
Value:
do \
{ \
Log::LogEntry __log_macro_logentry; \
FILE_LOG(__log_macro_logentry, level); \
__log_macro_logentry << level << text; \
Log::instance().addEntry(__log_macro_logentry, lock); \
} while (0)
EXPORTED_PUBLIC void addEntry(const LogEntry &entry, bool lock=true, bool flush=true)
Definition: Log.cc:369
static EXPORTED_PUBLIC Log & instance()
Definition: Log.cc:108

Definition at line 53 of file Log.h.

#define LOG_CALLBACK_COUNT   16

Maximum number of output callbacks that can be registered.

Definition at line 130 of file Log.h.

Referenced by Log::flushEntry(), Log::installCallback(), Log::Log(), and Log::removeCallback().

#define LOG_ENTRIES   ((1 << 16) / sizeof(LogEntry))

The maximum number of static entries in the log.

Definition at line 127 of file Log.h.

Referenced by Log::flushEntry(), Log::getStaticEntry(), and Log::installCallback().

#define LOG_LENGTH   128

The maximum length of an individual static log entry.

Definition at line 120 of file Log.h.

#define MAY_ALIAS   __attribute__((may_alias))

The type may alias

Definition at line 50 of file system/include/pedigree/kernel/compiler.h.

#define MUST_USE_RESULT   __attribute__((warn_unused_result))

This function must have its return value used somehow.

Definition at line 68 of file system/include/pedigree/kernel/compiler.h.

#define NEVER_INLINE   __attribute__((noinline))

Functions that should never be inlined

Definition at line 44 of file system/include/pedigree/kernel/compiler.h.

#define NORETURN   __attribute__((noreturn))
#define NOTICE (   text)    LOG_AT_LEVEL(Log::Notice, text, 1)

Add a notice to the log

Definition at line 74 of file Log.h.

Referenced by Semaphore::acquireWithResult(), VirtualTerminalManager::activate(), DeviceHashTree::add(), FatDirectory::addEntry(), RequestQueue::addRequest(), PerProcessorScheduler::addThread(), Elf::allocate(), MIPS32VirtualAddressSpace::allocateStack(), FatDirectory::cacheDirectoryContents(), StreamingScreenLogger::callback(), TimeoutGuard::cancel(), VFS::checkAccess(), HostedVirtualAddressSpace::clone(), RtcFile::command(), FramebufferFile::command(), BusMasterIde::commandComplete(), MemoryPressureManager::compact(), MemoryMappedFile::compact(), MemoryMapManager::compact(), FatFilesystem::convertFilenameFrom(), Elf::create(), Elf::createNeededOnly(), Ext2Filesystem::createNode(), Pipe::decreaseRefCount(), Device::Device(), UsbHub::deviceConnected(), AtaDisk::doWrite(), Cache::evict(), AllocationCommand::execute(), KernelElf::executeModules(), Cache::executeRequest(), PosixSubsystem::exit(), NativeSyscallManager::factory(), FatFilesystem::findFreeCluster(), FatFilesystem::getClusterEntry(), KernelElf::getDependingModule(), UserManager::getGroup(), PPC32StackFrame::getParameter(), MemFile::getPhysicalPage(), RawFs::getRoot(), VirtualTerminalManager::getTerminalMode(), Thread::getTlsBase(), KernelElf::hasPendingModules(), VbeFramebuffer::hwRedraw(), HostedPhysicalMemoryManager::initialisationDone(), X86CommonPhysicalMemoryManager::initialisationDone(), X86Keyboard::initialise(), UsbUlpi::initialise(), X86GdtManager::initialise(), X64GdtManager::initialise(), CountCompareTimer::initialise(), Iso9660Filesystem::initialise(), CdiDisk::initialise(), Ext2Filesystem::initialise(), FatFilesystem::initialise(), Pc::initialise(), HostedPhysicalMemoryManager::initialise(), X86CommonPhysicalMemoryManager::initialise(), MemoryPool::initialise(), GPTimer::initialise(), AtaDisk::initialise(), ScsiDisk::initialise(), BusMasterIde::initialise(), KernelElf::initialise(), ProcFs::initialise(), Rtc::initialise1(), Rtc::initialise2(), X86CommonPhysicalMemoryManager::initialise64(), Ehci::initialiseController(), X86GdtManager::initialiseDoubleFaultTss(), Dm9601::initialiseDriver(), ARMV7InterruptManager::initialiseProcessor(), DynamicLinker::initPlt(), Gpio::initspecific(), X86IsaDma::initTransfer(), MIPS32TlbManager::interrupt(), Heathrow::interrupt(), X86InterruptManager::interrupt(), HostedIrqManager::interrupt(), Pic::interrupt(), OpenPic::interrupt(), CdiIrqHandler::irq(), Nic3C90x::irq(), AtaController::irq(), Process::kill(), Elf::load(), KernelElf::loadModule(), Elf::loadModule(), DynamicLinker::loadObject(), DynamicLinker::loadProgram(), InputManager::mainThread(), Device::Address::map(), MemoryMapManager::mapAnon(), MemoryMapManager::mapFile(), msdosProbeDisk(), Ne2k::Ne2k(), Nic3C90x::Nic3C90x(), VsidManager::obtainVsid(), VirtualTerminalManager::openInactive(), page_align(), PciAtaController::PciAtaController(), Pipe::Pipe(), Elf::preallocateSymbols(), File::readIntoCache(), SlamCache::recovery(), Ext2Filesystem::remove(), MemoryMapManager::remove(), RawFsDir::removeRecursive(), VirtualTerminalManager::reportPermission(), Nic3C90x::reset(), DynamicLinker::resolvePltSymbol(), Processor::restoreState(), Rtl8139::send(), AtaDisk::sendCommand(), PosixSubsystem::sendSignal(), SerialIO::SerialIO(), X86Serial::setBase(), Ps2Controller::setIrqEnable(), X86Keyboard::setLedState(), VmwareGraphics::setMode(), Framebuffer::setPalette(), MemoryMapManager::setPermissions(), VbeDisplay::setScreenMode(), Nic3C90x::setStationInfo(), CdiNet::setStationInfo(), Dm9601::setStationInfo(), Ne2k::setStationInfo(), VirtualTerminalManager::setTerminalMode(), X86CommonPhysicalMemoryManager::shutdown(), Foo::syscall(), PosixSyscallManager::syscall(), NativeSyscallManager::syscall(), HostedSyscallManager::syscall(), ARMV7InterruptManager::syscall(), KernelCoreSyscallManager::syscall(), X64SyscallManager::syscall(), WaitCleanup::terminated(), Cache::timer(), AnonymousMemoryMap::trap(), MemoryMappedFile::trap(), MemoryMapManager::trap(), KernelElf::unloadModule(), KernelElf::updateModuleStatus(), KernelElf::waitForModulesToLoad(), RequestQueue::work(), and TextIO::writeStr().

#define PACKED   __attribute__((packed))
#define PURE   __attribute__((pure))
#define SECTION (   x)    __attribute__((__section__(x)))

This code should be placed in the given section.

Definition at line 65 of file system/include/pedigree/kernel/compiler.h.

#define UNLIKELY (   exp)    __builtin_expect(!!(exp), 0)

The expression is very unlikely to be true

Definition at line 54 of file system/include/pedigree/kernel/compiler.h.

Referenced by Directory::addEphemeralFile(), SlamCache::allocate(), SlamAllocator::allocate(), StringView::compare(), Pic::control(), CacheManager::executeRequest(), Filesystem::findNode(), X86CommonPhysicalMemoryManager::PageStack::free(), Directory::getChild(), Directory::getNumChildren(), File::getPhysicalPage(), HostedInterruptManager::interrupt(), X64InterruptManager::interrupt(), X86InterruptManager::interrupt(), HostedTimer::irq(), Rtc::irq(), KernelElf::loadModule(), HostedVirtualAddressSpace::map(), HostedInterruptManager::registerInterruptHandler(), ARMV7InterruptManager::registerInterruptHandler(), MIPS32InterruptManager::registerInterruptHandler(), ARM926EInterruptManager::registerInterruptHandler(), X86InterruptManager::registerInterruptHandler(), PPC32InterruptManager::registerInterruptHandler(), X64InterruptManager::registerInterruptHandler(), ARMV7InterruptManager::registerInterruptHandlerDebugger(), HostedInterruptManager::registerInterruptHandlerDebugger(), ARM926EInterruptManager::registerInterruptHandlerDebugger(), PPC32InterruptManager::registerInterruptHandlerDebugger(), X86InterruptManager::registerInterruptHandlerDebugger(), X64InterruptManager::registerInterruptHandlerDebugger(), MIPS32InterruptManager::registerInterruptHandlerDebugger(), HostedIrqManager::registerIsaIrqHandler(), Pic::registerIsaIrqHandler(), HostedIrqManager::registerPciIrqHandler(), Pic::registerPciIrqHandler(), HostedSyscallManager::registerSyscallHandler(), X64SyscallManager::registerSyscallHandler(), ARM926EInterruptManager::registerSyscallHandler(), ARMV7InterruptManager::registerSyscallHandler(), PPC32InterruptManager::registerSyscallHandler(), MIPS32InterruptManager::registerSyscallHandler(), X86InterruptManager::registerSyscallHandler(), File::returnPhysicalPage(), StringView::substring(), Framebuffer::swBlit(), Framebuffer::swCopy(), Framebuffer::swCreateBuffer(), Framebuffer::swRect(), Framebuffer::swSetPixel(), HostedSyscallManager::syscall(), X64SyscallManager::syscall(), and Cache::timer().

#define UNREACHABLE   __builtin_unreachable()

This code is not reachable.

Definition at line 56 of file system/include/pedigree/kernel/compiler.h.

#define USED   __attribute__((used))

This function or variable is used, even if it doesn't appear that way.

Definition at line 70 of file system/include/pedigree/kernel/compiler.h.

Referenced by X64InterruptManager::instance(), and X64SyscallManager::instance().

#define WARNING (   text)    LOG_AT_LEVEL(Log::Warning, text, 1)

Add a warning message to the log

Definition at line 78 of file Log.h.

Referenced by Spinlock::acquire(), Elf::allocate(), SlamAllocator::allocate(), ArmV7PhysicalMemoryManager::allocateRegion(), HostedPhysicalMemoryManager::allocateRegion(), PpcCommonPhysicalMemoryManager::allocateRegion(), X86CommonPhysicalMemoryManager::allocateRegion(), ArmV7VirtualAddressSpace::allocateStack(), Elf::applyRelocation(), BusMasterIde::begin(), FatDirectory::cacheDirectoryContents(), X64VirtualAddressSpace::clone(), MemoryMapManager::contains(), LwipSocketSyscalls::create(), Elf::create(), Thread::detach(), HostedVirtualAddressSpace::doAllocateStack(), X64VirtualAddressSpace::doAllocateStack(), ArmV7VirtualAddressSpace::doMap(), AtaDisk::doRead(), ScsiDisk::doRead(), UsbHub::doSync(), AtaDisk::doWrite(), DwarfState::DwarfState(), Uhci::executeRequest(), Ehci::executeRequest(), VirtualAddressSpace::expandHeap(), HidReport::InputBlock::feedInput(), VbeDisplay::fillRectangle(), Filesystem::findNode(), SlamCache::free(), X86VirtualAddressSpace::fromFlags(), KernelElf::getDependingModule(), UserManager::getGroup(), X64StackFrame::getParameter(), PPC32StackFrame::getParameter(), File::getPhysicalPage(), Scheduler::getProcess(), DwarfState::getRegister(), PPC32InterruptState::getSyscallNumber(), X86InterruptState::getSyscallParameter(), X64SyscallState::getSyscallParameter(), FatFilesystem::getVolumeLabel(), Decrementer::initialise(), Iso9660Filesystem::initialise(), Ext2Filesystem::initialise(), X86CommonPhysicalMemoryManager::initialise(), AtaDisk::initialise(), RequestQueue::initialise(), InputManager::initialise(), KernelElf::initialise(), UsbDevice::initialise(), DevFs::initialise(), X86CommonPhysicalMemoryManager::initialise64(), DynamicLinker::initPlt(), ConsoleFile::inputLineDiscipline(), Cache::insert(), CdiIrqHandler::irq(), Rtl8139::irq(), Ne2k::irq(), Rtc::irq(), Ohci::irq(), DynamicLinker::loadObject(), DynamicLinker::loadProgram(), InputManager::mainThread(), MIPS32VirtualAddressSpace::map(), Cache::markEditing(), Cache::markNoLongerEditing(), X64VirtualAddressSpace::memIsInHeap(), msdosProbeDisk(), msdosReadTable(), Ne2k::Ne2k(), Nic3C90x::Nic3C90x(), VirtualTerminalManager::openInactive(), ConsoleFile::outputLineDiscipline(), page_align(), Ehci::portReset(), InputManager::putNotification(), ScsiDisk::read(), Ext2Symlink::readBytewise(), ScsiDisk::readSense(), Semaphore::release(), Ext2Filesystem::releaseInode(), PerProcessorScheduler::schedule(), Dm9601::send(), Rtl8139::send(), AtaDisk::sendCommand(), Thread::sendEvent(), PosixSubsystem::sendSignal(), Prcm::SetClockPLL(), HostedVirtualAddressSpace::setFlags(), Prcm::SetFuncClockCORE(), Prcm::SetIfaceClockCORE(), X86Keyboard::setLedState(), Subsystem::setProcess(), Thread::setStatus(), HostedProcessorInformation::setVirtualAddressSpace(), Cache::sync(), PosixSyscallManager::syscall(), WaitCleanup::terminated(), TimeoutGuard::TimeoutGuard(), TextIO::translate(), DynamicLinker::trap(), ScsiDisk::unitReady(), ConditionVariable::wait(), Prcm::WaitCoreIdleStatus(), Prcm::WaitPllIdleStatus(), RequestQueue::work(), Ext2Symlink::writeBytewise(), File::writeCallback(), TextIO::writeStr(), X86VirtualAddressSpace::X86VirtualAddressSpace(), PosixSubsystem::~PosixSubsystem(), and Thread::~Thread().

#define WEAK   __attribute__((weak))

This function can be overridden by a library.

Definition at line 72 of file system/include/pedigree/kernel/compiler.h.

Enumeration Type Documentation

enum Modifier

Modifiers for Log

Enumerator
Flush 

Flush this log entry

Definition at line 144 of file Log.h.

enum NumberType

Radix for Log's integer output

Enumerator
Hex 

Hexadecimal

Dec 

Decimal

Oct 

Octal

Definition at line 133 of file Log.h.

Function Documentation

void EXPORTED_PUBLIC _assert ( bool  b,
const char *  file,
int  line,
const char *  func 
)

Internal use only, the assert() macro passes the additional arguments automatically

Definition at line 24 of file assert.cc.

References Processor::breakpoint(), Dec, Hex, Processor::m_Initialised, and panic().

void EXPORTED_PUBLIC panic ( const char *  msg)

Prints out a message to the screen and the most recent log entries and halts the processor. This function should only be called in unrecoverable emergency cases, e.g. when the kernel is unable to successfully complete its initialisation.

Note
This function and all functions called from this function may not allocate any resources, e.g. no I/O port & memory-region allocations and even no 'normal' memory allocations.
Parameters
[in]msgthe message to print to the screen

Definition at line 121 of file panic.cc.

References GraphicsService::GraphicsProvider::bTextModes, ServiceManager::enumerateOperations(), ServiceManager::getService(), Processor::halt(), ServiceFeatures::probe, ServiceFeatures::provides(), Service::serve(), Processor::setInterrupts(), and Display::setScreenMode().

Referenced by _assert(), Spinlock::acquire(), HashedPageTable::addMapping(), Translations::addTranslation(), PpcCommonPhysicalMemoryManager::PageStack::allocate(), X86CommonPhysicalMemoryManager::allocatePage(), ArmV7PhysicalMemoryManager::allocateRegion(), HostedPhysicalMemoryManager::allocateRegion(), PpcCommonPhysicalMemoryManager::allocateRegion(), X86CommonPhysicalMemoryManager::allocateRegion(), Archive::Archive(), PerProcessorScheduler::checkEventState(), AtaDisk::doWrite(), PanicCommand::execute(), Spinlock::exit(), Log::flushEntry(), PpcCommonPhysicalMemoryManager::freePage(), MIPS32VirtualAddressSpace::generateNullChunk(), X86VirtualAddressSpace::getMapping(), HostedVirtualAddressSpace::getMapping(), MIPS32VirtualAddressSpace::getMapping(), X64VirtualAddressSpace::getMapping(), HashedPageTable::initialise(), PerProcessorScheduler::initialise(), Pc::initialise(), X86CommonPhysicalMemoryManager::initialise(), PPC32VirtualAddressSpace::initialise(), X86CommonPhysicalMemoryManager::initialise64(), PPC32VirtualAddressSpace::initialRoster(), HostedInterruptManager::interrupt(), X64InterruptManager::interrupt(), ARM926EInterruptManager::interrupt(), PPC32InterruptManager::interrupt(), MIPS32TlbManager::interrupt(), X86InterruptManager::interrupt(), X86VirtualAddressSpace::isMapped(), MIPS32VirtualAddressSpace::isMapped(), PerProcessorScheduler::killCurrentThread(), X86VirtualAddressSpace::map(), HostedVirtualAddressSpace::map(), MIPS32VirtualAddressSpace::map(), AsidManager::obtainAsid(), HashedPageTable::setDBAT(), X86VirtualAddressSpace::setFlags(), X64VirtualAddressSpace::setFlags(), HashedPageTable::setIBAT(), Debugger::start(), ARMV7InterruptManager::syscall(), X86VirtualAddressSpace::unmap(), X64VirtualAddressSpace::unmapUnlocked(), SlamAllocator::wipe(), and X86VirtualAddressSpace::X86VirtualAddressSpace().