Specifications

Contents
Preface ............................................................ xiii
1 Introduction
1.1 Driver Functions ............................................ 1–1
1.2 Driver Components . . ........................................ 1–2
1.2.1 Driver Tables ............................................ 1–2
1.2.2 Driver Routines . . ........................................ 1–3
1.3 I/O Database ............................................... 1–4
1.3.1 Driver Tables ............................................ 1–4
1.3.2 Data Structures . . ........................................ 1–4
1.3.3 I/O Request Packets ....................................... 1–6
1.4 Synchronization of Driver Activity ............................... 1–6
1.5 Driver Context .............................................. 1–6
1.5.1 Example of Driver Context-Switching . . ....................... 1–7
1.6 Programmed-I/O and Direct-Memory-Access Transfers ............... 1–8
1.6.1 Programmed I/O. . ........................................ 1–9
1.6.2 Direct-Memory-Access I/O . . ................................ 1–9
1.7 Buffered and Direct I/O ....................................... 1–9
2 Accessing Device Interface Registers
2.1 Mapping I/O Device Registers . . ................................ 2–2
2.2 Platform Independent I/O Bus Mapping . . . ....................... 2–2
2.2.1 Using the IOC$MAP_IO Routine ............................. 2–3
2.2.2 Platform Independent I/O Access Routines ..................... 2–3
2.3 Accessing Registers Directly . . . ................................ 2–4
2.4 Accessing Registers Using CRAMS .............................. 2–4
2.5 Allocating CRAMs . . . ........................................ 2–4
2.5.1 Preallocating CRAMs to a Device Unit or Device Controller . ....... 2–5
2.5.2 Calling IOC$ALLOCATE_CRAM to Obtain a CRAM .............. 2–5
2.6 Constructing a Mailbox Command Within a CRAM . . . ............... 2–6
2.6.1 Register Data Byte Lane Alignment . . . ....................... 2–7
2.7 Initiating a Mailbox Transaction ................................ 2–7
3 Allocating Map Registers and Other Counted Resources
3.1 Allocating a Counted Resource Context Block ...................... 3–2
3.2 Allocating Counted Resource Items .............................. 3–3
3.3 Loading Map Registers ....................................... 3–5
3.4 Deallocating a Number of Counted Resources ...................... 3–6
3.5 Deallocating a Counted Resource Context Block .................... 3–6
v