CN17500C/N1750 - Building OS/2 Device Drivers

From Wiki
Jump to: navigation, search


You'll learn to develop, compile, install, and test device driver programs for the OS/2 1.3 and 2.X platforms.

How you will benefit

You'll be able to:

  • Develop, compile, install, and test device driver programs
  • Understand programming and operational characteristics common to both character and block device drivers
  • Grasp the structure and operation of OS/2 device drivers
  • Design and implement an OS/2 device driver for a peripheral
  • Understand bimodal operation (real and protected-model), ROM BIOS compatibility support, interrupt handling, serialization, and the use of device helper services


  • Device Driver Introduction
    • dd def PMD's, BDD's, PDD's, VDD's (char v. block)
    • Real versus protected
    • 16-bit segmented model - enhanced for OS/2 2.0
  • Operation
    • task time (init)
    • interrupt time (timer, IRQ's)
  • Structure
    • Device header
      • Device attribute
    • Strategy entry point
    • Initialization, command 0 (special case)
      • Ring 3
      • Application context
      • IOPL OK
      • Some API's available
      • Some development helpers
    • Sample code fragments
  • OS/2 Strategy Commands
  • Tools
    • MASM
    • ASDT - demo
    • IBM C/2
    • LINK 16-bit
    • Kernel debugger/ASDT
  • OS/2 Device Helpers
  • Using External Interrupts
  • Designing Block Device Drivers
  • Drivers That Use ABIOS
    • Device ID
    • Logical ID
  • OS/2 32-bit Enhancements
    • Using 32-bit code
    • Using 32-bit device helpers
  • Design Tips
    • Performance
    • 3 MS rule
    • Interrupt rules
    • Testing
  • Device Helper Reference
  • Demo Device Driver
  • Demo Device Driver Using C
  • Application/System Debug Tool - ASDT Reference
  • Lab Exercises
    • Character driver with initialization context only
    • Character driver with strategy commands, open, and write
      • Write under interrupt
      • Handling multiple overlapping requests
    • ABIOS with hardware interrupts


You should have experience programming in Assembler or C language. You should also have completed "OS/2 2.X for Software Developers" (N1740) or have equivalent programming experience.