XenevaOS
Loading...
Searching...
No Matches
Classes | Typedefs | Enumerations | Functions
aucomponent.h File Reference
#include <stdint.h>
#include <stddef.h>
#include <audrv.h>
#include <drvctl.h>
Include dependency graph for aucomponent.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _au_resource_
 

Typedefs

typedef struct _au_resource_ AuResource
 

Enumerations

enum  AuResKind { AU_RES_IRQ_SPI = 1 , AU_RES_PHYS_PAGE = 2 , AU_RES_PHYS_RUN = 3 , AU_RES_MMIO = 4 }
 

Functions

AuDriver * AuDriverOwnerOf (uint64_t addr)
 AuDriverOwnerOf – the loaded driver whose image contains addr.
 
AuDriver * AuDriverFindByName (const char *name)
 
int AuDriverRef (AuDriver *drv)
 
void AuDriverUnref (AuDriver *drv)
 
void AuDriverTrack (AuDriver *drv, uint8_t kind, uint64_t value, uint64_t extra, uint64_t extra2)
 
void AuDriverUntrack (AuDriver *drv, uint8_t kind, uint64_t value)
 
void AuDriverUntrackAny (uint8_t kind, uint64_t value)
 
void * AuDriverImportOverride (const char *name)
 
int AuDriverLoadByName (const char *name)
 AuDriverLoadByName – (re)load a driver that is not currently loaded, then run its AuDriverMain. Returns 0 on success.
 
bool AuDriverClaimsPci (int bus, int dev, int func)
 
void AuDriverCtlInitialize (void)
 
int AuDriverUnload (AuDriver *drv)
 AuDriverUnload – unload a running driver.
 
int AuDriverUnloadByName (const char *name)
 

Typedef Documentation

◆ AuResource

typedef struct _au_resource_ AuResource

Enumeration Type Documentation

◆ AuResKind

enum AuResKind

Component model: runtime load/unload bookkeeping for loadable drivers.

A driver is a component with an explicit lifecycle: load -> AuDriverMain() -> [running, refcounted] -> AuDriverUnload() -> freed The kernel records what a driver acquires (IRQ handlers today) keyed by the caller's return address, so unloading releases everything even if the driver forgot to. Physical pages, MMIO and timers are tracked next.

Enumerator
AU_RES_IRQ_SPI 
AU_RES_PHYS_PAGE 
AU_RES_PHYS_RUN 
AU_RES_MMIO 

Function Documentation

◆ AuDriverClaimsPci()

bool AuDriverClaimsPci ( int  bus,
int  dev,
int  func 
)
extern

◆ AuDriverCtlInitialize()

void AuDriverCtlInitialize ( void  )
extern

◆ AuDriverFindByName()

AuDriver * AuDriverFindByName ( const char *  name)
extern

◆ AuDriverImportOverride()

void * AuDriverImportOverride ( const char *  name)
extern

◆ AuDriverLoadByName()

int AuDriverLoadByName ( const char *  name)
extern

AuDriverLoadByName – (re)load a driver that is not currently loaded, then run its AuDriverMain. Returns 0 on success.

◆ AuDriverOwnerOf()

AuDriver * AuDriverOwnerOf ( uint64_t  addr)
extern

AuDriverOwnerOf – the loaded driver whose image contains addr.

◆ AuDriverRef()

int AuDriverRef ( AuDriver *  drv)
extern

◆ AuDriverTrack()

void AuDriverTrack ( AuDriver *  drv,
uint8_t  kind,
uint64_t  value,
uint64_t  extra,
uint64_t  extra2 
)
extern

◆ AuDriverUnload()

int AuDriverUnload ( AuDriver *  drv)
extern

AuDriverUnload – unload a running driver.

Order matters: ask the driver first (it may veto), then cut every kernel -> driver path BEFORE the image is unmapped: IRQ handlers are cleared and the driver's MMIO mappings removed. Physical pages the driver still owns are only REPORTED, never force-freed: the kernel may have taken them over without telling the ledger, and a leak is safe where a double free is not. Returns an AU_UNLOAD_* code.

◆ AuDriverUnloadByName()

int AuDriverUnloadByName ( const char *  name)
extern

◆ AuDriverUnref()

void AuDriverUnref ( AuDriver *  drv)
extern

◆ AuDriverUntrack()

void AuDriverUntrack ( AuDriver *  drv,
uint8_t  kind,
uint64_t  value 
)
extern

◆ AuDriverUntrackAny()

void AuDriverUntrackAny ( uint8_t  kind,
uint64_t  value 
)
extern