Development of device drivers
Template of 32-bit driver for eComStation
Download eCo Software simple 32-bit driver.
- 32-bit driver
- interaction with ACPI driver
To develop modern drivers you should use DevHlp, KEE interfaces.
Read DDK, pddref.inf for details.
- We recommend start from this presentation:
OS/2 Device Driver Programming by Daniela Engert, (includes snippets of code)
- From Hello World to Real World
eCS supports suspend/resume for one-core and multi-core desktops and notebooks.
You can use APM interface (read DDK -> in_out.inf, Input/Output Device Driver Reference)
or hidden kernel function SaveRestore()
* Function SaveRestore
* @pkt standard drivers packet
* @return None
* Note: This function is undocemmented in pddref.inf
PSD->AcpiOsPrintf("APM:SaveRestore - %x\n",(ULONG)pkt->FuncCode);
pkt->rph.Status |= STDON;
dd OFFSET FLAT:SaveRestore ; Command code 20h SaveRestore
Please share information with other developers how to:
- How to process command line parameters?
- How to gather log, so user can call: copy acpica$ acpi.log
- How to register driver in resource manager? So users can see it via rmview /IRQ
Programming PCI devices
To create new driver, you need
Wakeup PCI devices
- Wake up sleeping PCI devices at boot time (by Veit)
driver, source code
- Source code of USB drivers (DDK)
Read/write ports from Ring3
Example how to read/write to the ports
Mapping physical memory to linear
Use this method (via SCREEN$) memory mapping via SCREEN$ (thx LightElf)
if you are going to do driver debugging, a trap dump partition is a
must have. It will save you a lot of time. A usable kernel debugger
setup will save you a even more time, but this can be problematic on newer
systems that lack a serial port.
Read details: OS/2 Diagnostic Tools and Tips by Steven Levine.