ChorusOS 5.0 Features and Architecture Overview

Driver/Kernel Interface (DKI)

The DKI interface defines all services provided by the microkernel to driver components. Following the layered interface model, all services implemented by the DKI are called by the drivers, and take place in the microkernel.

The DKI provides two types of services:

Common DKI services cover:

Processor family specific DKI (FDKI) services cover:

All DKI services are implemented as part of the embedded system library (libebd.s.a). Most of them are implemented as microkernel system calls. The intro(9DKI) man page gives an entry point to a detailed description of all DKI APIs.

DKI API

The DKI API is summarized in the following table:

Function 

Description 

dataCacheBlockFlush()

Cache management 

dataCacheBlockFlush_powerpc()

PowerPC cache management 

dataCacheBlockInvalidate()

Cache management 

dataCacheBlockInvalidate_powerpc()

PowerPC cache management 

dataCacheBlockInvalidate()

Cache management 

dataCacheBlockInvalidate_powerpc()

PowerPC cache management 

dataCacheInvalidate()

Cache management 

dataCacheInvalidate_powerpc()

PowerPC cache management 

dcacheBlockFlush()

Cache management 

dcacheBlockFlush_usparc()

UltraSPARC cache management 

dcacheFlush()

Cache management 

dcacheFlush_usparc()

UltraSPARC cache management 

dcacheLineFlush()

Cache management 

dcacheLineFlush_usparc()

UltraSPARC cache management 

DISABLE_PREEMPT()

Thread preemption disabling 

dtreeNodeAlloc()

Device tree operations 

dtreeNodeChild()

Device tree operations 

dtreeNodeDetach()

Device tree operations 

dtreeNodeFind()

Device tree operations 

dtreeNodeFree()

Device tree operations 

dtreeNodeFree()

Device tree operations 

dtreeNodePeer()

Device tree operations 

dtreeNodeRoot()

Device tree operations 

dtreePropAdd()

Device tree operations 

dtreePropAlloc()

Device tree operations 

dtreePropAttach()

Device tree operations 

dtreePropDetach()

Device tree operations 

dtreePropFind()

Device tree operations 

dtreePropFindNext()

Device tree operations 

dtreePropFree()

Device tree operations 

dtreePropLength()

Device tree operations 

dtreePropName()

Device tree operations 

dtreePropValue()

Device tree operations 

eieio()

I/O services 

eieio_powerpc()

PowerPC specific I/O services 

ENABLE_PREEMPT()

Thread preemption enabling 

hrt()

High Resolution Timer 

icacheBlockInval()

Cache management 

icacheBlockInval_usparc()

UltraSPARC cache management 

icacheInval()

Cache management 

icacheInval_usparc()

UltraSPARC cache management 

icacheLineInval()

Cache management 

icacheLineInval_usparc()

UltraSPARC cache management 

imsIntrMask_f()

Global interrupt masking 

imsIntrUnmask_f()

Global interrupt masking 

instCacheBlockInvalidate()

Cache management 

instCacheBlockInvalidate_powerpc()

PowerPC cache management 

instCacheBlockInvalidate_powerpc()

PowerPC cache management 

instCacheInvalidate()

Cache management 

instCacheInvalidate_powerpc()

PowerPC cache management 

ioLoad16()

I/O services 

ioLoad16_x86()

Intel x86 specific I/O services

ioLoad32()

I/O services  

ioLoad32_x86()

Intel x86 specific I/O services

ioLoad8()

I/O services  

ioLoad8_x86()

Intel x86 specific I/O services

ioRead16()

I/O services  

ioRead16_x86()

Intel x86 specific I/O services

ioRead32()

I/O services  

ioRead32_x86()

Intel x86 specific I/O services

ioRead8()

I/O services  

ioRead8_x86()

Intel x86 specific I/O services

ioStore16()

I/O services  

ioStore16_x86()

Intel x86 specific I/O services

ioStore32()

I/O services  

ioStore32_x86()

Intel x86 specific I/O services

ioStore8()

I/O services 

ioStore8_x86()

Intel x86 specific I/O services

ioWrite16()

I/O services 

ioWrite16_x86()

Intel x86 specific I/O services

ioWrite32()

I/O services 

ioWrite32_x86()

Intel x86 specific I/O services

ioWrite8()

I/O services 

ioWrite8_x86()

Intel x86 specific I/O services

loadSwap_16()

Specific I/O services 

loadSwap_32()

Specific I/O services 

loadSwap_64()

Specific I/O services 

loadSwapEieio_16()

I/O services 

loadSwapEieio_16_powerpc()

PowerPC specific I/O services 

loadSwapEieio_32()

I/O services 

loadSwapEieio_32_powerpc()

PowerPC specific I/O services 

loadSwap_sync_16_usparc()

UltraSparc specific I/O services 

loadSwap_sync_32_usparc()

UltraSparc specific I/O services 

loadSwap_sync_64_usparc()

UltraSparc specific I/O services 

load_sync_16_usparc()

UltraSparc specific I/O services 

load_sync_32_usparc()

UltraSparc specific I/O services 

load_sync_64_usparc()

UltraSparc specific I/O services 

load_sync_8_usparc()

UltraSparc specific I/O services 

storeSwap_16()

Specific I/O services 

storeSwap_32()

Specific I/O services 

storeSwap_64()

Specific I/O services 

storeSwapEieio_16()

I/O services 

storeSwapEieio_16_powerpc()

PowerPC specific I/O services 

storeSwapEieio_32()

I/O services 

storeSwapEieio_32_powerpc()

PowerPC specific I/O services 

storeSwap_sync_16_usparc()

UltraSparc specific I/O services 

storeSwap_sync_32_usparc()

UltraSparc specific I/O services 

storeSwap_sync_64_usparc()

UltraSparc specific I/O services 

store_sync_16_usparc()

UltraSparc specific I/O services 

store_sync_32_usparc()

UltraSparc specific I/O services 

store_sync_64_usparc()

UltraSparc specific I/O services 

store_sync_8_usparc()

UltraSparc specific I/O services 

svAsyncExcepAttach()

Asynchronous exceptions management 

svAsyncExcepAttach_usparc()

UltraSPARC asynchronous exceptions management 

svAsyncExcepDetach_usparc()

UltraSPARC aynchronous exceptions management 

svDeviceAlloc()

Device registry operations 

svDeviceEntry()

Device registry operations 

svDeviceEvent()

Device registry operations 

svDeviceFree()

Device registry operations 

svDeviceLookup()

Device registry operations 

svDeviceNewCancel()

Device registry operations 

svDeviceNewNotify()

Device registry operations 

svDeviceRegister()

Device registry operations 

svDeviceRelease()

Device registry operations 

svDeviceUnregister()

Device registry operations 

svDkiClose()

System event management 

svDkiEvent()

System event management 

svDkiInitLevel()

Two-stage microkernel initialization 

svDkiloRemap()

Change debug link device address 

svDkiThreadCall()

Microkernel initialization level 

svDkiOpen()

System event management 

svDkiThreadCall()

Call a routine in the DKI thread context; trigger a routine in the DKI thread context; cancel a routine in the DKI thread context 

svDkiThreadCancel()

Call a routine in the DKI thread context; trigger a routine in the DKI thread context; cancel a routine in the DKI thread context 

svDkiThreadTrigger()

Call a routine in the DKI thread context; trigger a routine in the DKI thread context; cancel a routine in the DKI thread context 

svDriverCap()

Driver registry operations 

svDriverEntry()

Driver registry operations 

svDriverLookupFirst()

Driver registry operations 

svDriverLookupNext()

Driver registry operations 

svDriverRegister()

Driver registry operations 

svDriverRelease()

Driver registry operations 

svDriverUnregister()

Driver registry operations 

svIntrAttach()

Interrupts management 

svIntrAttach_powerpc()

PowerPC interrupts management 

svIntrAttach_usparc()

UltraSPARC interrupts management 

svIntrAttach_x86()

Intel x86 interrupts management

svIntrCtxGet()

Interrupts management 

svIntrCtxGet_powerpc()

PowerPC interrupts management 

svIntrCtxGet_usparc()

UltraSPARC interrupts management 

svIntrCtxGet_x86()

Intel x86 interrupts management

svIntrDetach()

Interrupts management 

svIntrDetach_powerpc()

PowerPC interrupts management 

svIntrDetach_usparc()

UltraSPARC interrupts management 

svIntrDetach_x86()

Intel x86 interrupts management

svMemAlloc()

A general purpose memory allocator 

svMemFree()

A general purpose memory allocator 

svPhysAlloc()

A special purpose physical memory allocator 

svPhysFree()

A special purpose physical memory allocator 

svPhysMap()

Physical to virtual memory mapping 

svPhysMap_powerpc()

PowerPC physical to virtual memory mapping 

svPhysUnmap_usparc()

UltraSPARC physical to virtual memory mapping 

svSoftIntrAttach_usparc()

UltraSPARC interrupts management 

svSoftIntrDetach_usparc()

UltraSPARC interrupts management 

svTimeoutCancel()

Timeout operations 

svTimeoutGetRes()

Timeout operations 

svTimeoutSet()

Timeout operations 

swap_16()

Specific I/O services 

swap_32()

Specific I/O services 

swap_64()

Specific I/O services 

swapEieio_16()

I/O services 

swapEieio_16_powerpc()

PowerPC I/O services 

swapEieio_32()

I/O services 

swapEieio_32_powerpc()

PowerPC I/O services 

usecBusyWait()

Precise busy wait service 

vmMapToPhys()

Physical to virtual memory mapping 

vmMapToPhys_powerpc()

PowerPC physical to virtual memory mapping 

vmMapToPhys_usparc()

UltraSPARC physical to virtual memory mapping 

vmMapToPhys_x86()

Intel x86 physical to virtual memory mapping