Add driver slot documentation
Driver slots had a structure before, but now, it's defined how the layout should be done. The design was also changed significantly, so the PCI and ACPI drivers have to be changed now.
This commit is contained in:
parent
2ad0d26ff4
commit
21c873a8f5
|
@ -0,0 +1,73 @@
|
||||||
|
# Nightloader Driver Structure
|
||||||
|
|
||||||
|
This documentation file explains the format of a native driver slot
|
||||||
|
for the Nightloader on the i386 architecture.
|
||||||
|
|
||||||
|
| Offset | Length | Name of Field |
|
||||||
|
| ------ | --------- | --------------------------------- |
|
||||||
|
| 0 | 8 | Driver Identifier |
|
||||||
|
| 8 | 2 | Format Version |
|
||||||
|
| 10 | 2 | Driver Version |
|
||||||
|
| 12 | 2 | Number of Functionalities |
|
||||||
|
| 16 | 4 | Functionality Table Offset |
|
||||||
|
|
||||||
|
1. Driver Identifier
|
||||||
|
The driver identifier is used to uniquely identify a driver. It can
|
||||||
|
be chosen by a driver's developer, but should suggest what kind of
|
||||||
|
driver is contained in that slot, for the sake of clarity.
|
||||||
|
|
||||||
|
2. Format Version
|
||||||
|
The version of the driver slot's standardized structures such as
|
||||||
|
the rest of the header, the functionality table and others that
|
||||||
|
the future might bring.
|
||||||
|
The first byte of this structure tells the major version, the
|
||||||
|
second one tells the minor version. No version patches are needed.
|
||||||
|
|
||||||
|
3. Driver Version
|
||||||
|
Version of the driver, as seen by the driver's developer.
|
||||||
|
The first byte of this structure should be the major version, the
|
||||||
|
second one the minor version. No version patches are needed.
|
||||||
|
|
||||||
|
4. Number of Functionalities
|
||||||
|
How many entries the functionality table contains. The table of
|
||||||
|
functionalities contains functions with standardized arguments,
|
||||||
|
actions and return types for interfacing with the driver.
|
||||||
|
|
||||||
|
5. Functionality Table Offset
|
||||||
|
Offset *from the start of the driver slot* to the functionality
|
||||||
|
table. It may be wise to keep this a bit further away from the
|
||||||
|
header to prevent the need for more changes if the header structure
|
||||||
|
changes in a future version.
|
||||||
|
|
||||||
|
## Functionality Structure
|
||||||
|
|
||||||
|
Functionalities in the functionality table have a structure defined in
|
||||||
|
the following table:
|
||||||
|
|
||||||
|
| Offset | Length | Name of Field |
|
||||||
|
| ------ | --------- | --------------------------------- |
|
||||||
|
| 0 | 2 | Function Category |
|
||||||
|
| 2 | 2 | Exact Function |
|
||||||
|
| 4 | 4 | Function Pointer |
|
||||||
|
|
||||||
|
> The functionality table as it is found in any correct driver is a
|
||||||
|
> tightly packed array of those structures with as many elements as
|
||||||
|
> were promised in the corresponding header field.
|
||||||
|
|
||||||
|
## Driver Functionality Categories
|
||||||
|
|
||||||
|
The table below contains links to the driver functionality categories:
|
||||||
|
|
||||||
|
| Id | Category |
|
||||||
|
| ------ | --------------------------------------------- |
|
||||||
|
| 0x1 | [Basic Text](./textwriter-functions.md) |
|
||||||
|
| 0x2 | [Text Window](./window-functions.md) |
|
||||||
|
| 0x3 | [Logger](./logger-functions.md) |
|
||||||
|
| 0x4 | [Pixel Graphics](./graphic-functions.md) |
|
||||||
|
| 0x5 | [Pixel Fonts](./pixel-font-functions.md) |
|
||||||
|
| 0x10 | [PCI](./pci-functions.md) |
|
||||||
|
| 0x11 | [PCIe](./pcie-functions.md) |
|
||||||
|
| 0x12 | [NVMe](./pcie-functions.md) |
|
||||||
|
| 0x20 | [USB](.usb/-functions.md) |
|
||||||
|
| 0x30 | [Storage](./storage-functions.md) |
|
||||||
|
| 0x40 | [Filesystem](./filesystem-functions.md) |
|
Loading…
Reference in New Issue