| Document Information Preface Part I Designing Device Drivers for the Solaris Platform 1.  Overview of Solaris Device Drivers 2.  Solaris Kernel and Device Tree 3.  Multithreading 4.  Properties 5.  Managing Events and Queueing Tasks 6.  Driver Autoconfiguration 7.  Device Access: Programmed I/O 8.  Interrupt Handlers 9.  Direct Memory Access (DMA) 10.  Mapping Device and Kernel Memory 11.  Device Context Management 12.  Power Management 13.  Hardening Solaris Drivers 14.  Layered Driver Interface (LDI) Part II Designing Specific Kinds of Device Drivers 15.  Drivers for Character Devices 16.  Drivers for Block Devices 17.  SCSI Target Drivers 18.  SCSI Host Bus Adapter Drivers 19.  Drivers for Network Devices 20.  USB Drivers Part III Building a Device Driver 21.  Compiling, Loading, Packaging, and Testing Drivers 22.  Debugging, Testing, and Tuning Device Drivers 23.  Recommended Coding Practices Part IV Appendixes A.  Hardware Overview B.  Summary of Solaris DDI/DKI Services C.  Making a Device Driver 64-Bit Ready D.  Console Frame Buffer Drivers Index |       	 
             G
GCC, Compiling and Linking the Driver 
gcc command, Compiling and Linking the Driver 
generic device name, Generic Device Names 
getinfo() entry point, getinfo() Entry Point 
getmajor() function, Block Device Autoconfiguration 
getrbuf() function, changes to, getrbuf() Argument Changes 
getting major numbers, example of, Block Device Autoconfiguration 
GLD
device types supported by, Generic LAN Driver Overviewdrivers, Drivers for Network Devices 
GLD data structures
gld_mac_info, gld_mac_info Structuregld_stats, gld_stats Structure 
GLD entry points
gldm_get_stats(), gldm_get_stats() Entry Pointgldm_intr(), gldm_intr() Entry Pointgldm_ioctl(), gldm_ioctl() Entry Pointgldm_reset(), gldm_reset() Entry Pointgldm_send(), gldm_send() Entry Pointgldm_set_mac_addr(), gldm_set_mac_addr() Entry Pointgldm_set_multicast(), gldm_set_multicast() Entry Pointgldm_set_promiscuous(), gldm_set_promiscuous() Entry Pointgldm_start(), gldm_start() Entry Pointgldm_stop(), gldm_stop() Entry Point 
gld_intr() function, gld_intr() Function 
GLD ioctl functions, Implemented ioctl Functions 
gld_mac_alloc() function, gld_mac_alloc() Function 
gld_mac_free() function, gld_mac_free() Function 
gld_mac_info structure
description of, gld_mac_info StructureGLD arguments, GLD Argumentsnetwork drivers
Generic LAN Driver OverviewGLD Driver Requirementsused in gld_intr() function, gld_intr() Function 
GLD network statistics, Network Statistics 
gld_recv() function, gld_recv() Function 
gld_register() function, gld_register() Function 
gld_sched() function, gld_sched() Function 
GLD service routines
gld_intr() function, gld_intr() Functiongld_mac_alloc() function, gld_mac_alloc() Functiongld_mac_free() function, gld_mac_free() Functiongld_recv() function, gld_recv() Functiongld_register() function, gld_register() Functiongld_sched() function, gld_sched() Functiongld_unregister() function, gld_unregister() Function 
gld_stats structure, network driver, Network Statistics 
GLD symbols
GLD_BADARG, GLD Return ValuesGLD_FAILURE, GLD Return ValuesGLD_MAC_PROMISC_MULTI, GLD ArgumentsGLD_MAC_PROMISC_NONE, GLD ArgumentsGLD_MAC_PROMISC_PHYS, GLD ArgumentsGLD_MULTI_DISABLE, gldm_set_multicast() Entry PointGLD_MULTI_ENABLE, gldm_set_multicast() Entry PointGLD_NOLINK, gldm_send() Entry PointGLD_NORESOURCES, gld_sched() FunctionGLD_NOTSUPPORTED, gldm_set_mac_addr() Entry PointGLD_SUCCESS, GLD Return Values 
gld_unregister() function, gld_unregister() Function 
gld(9E) entry point, network driver, Generic LAN Driver Overview 
gld(9F) function, Generic LAN Driver Overview
network driver, GLD Driver Requirements 
gldm_get_stats(), description of, Network Statistics 
gldm_private structure, gld_mac_info Structure 
graphics devices, device context management of, Context Management Model H
handle, DMA
DMA ModelAllocating a DMA HandleFreeing the DMA Handle 
hardening drivers, Hardening Solaris Drivers 
hardware configuration files
Configuration FilesWriting a Hardware Configuration File 
PCI devices, PCI Hardware Configuration FilesSBus devices, SBus Hardware Configuration FilesSCSI target devices, Hardware Configuration Filewhere to place, Copying the Driver to a Module Directory 
hardware context, What Is a Device Context? 
hardware faults
testing
Driver Hardening Test HarnessTesting the Driver 
hardware state in power management, Hardware State 
HBA driver, See SCSI HBA driver 
header files for device drivers, Header Files 
high-level mutexes, interrupts, High-Level Mutexes 
host bus adapter transport layer, SCSI Interface 
hot-plug, See hotplugging 
hotpluggable drivers, See hotplugging 
hotplugging, Hotplugging
and SCSI HBA driver
HotpluggingDynamic ReconfigurationUSB device, Hotplugging USB Devices 
hub driver, USB Client Drivers 
hubd USB hub driver, Hot Insertion I
I/O
asynchronous data transfers
Differences Between Synchronous and Asynchronous I/OAsynchronous Data Transfers (Block Drivers)byte stream, Entry Points for Character Device Driversdisk controls, Disk ioctlsDMA transfers, DMA Transfers (Synchronous)file system structure, File I/Omiscellaneous control of, Miscellaneous I/O Controlmultiplexing, Multiplexing I/O on File Descriptorspolled I/O interfaces
Polled I/O InterfacesImplementing Polled I/O in Console Frame Buffer Driversprogrammed transfers, Programmed I/O Transfersscatter/gather structures, Vectored I/Osynchronous data transfers
Differences Between Synchronous and Asynchronous I/OSynchronous Data Transfers (Block Drivers)visual I/O interfaces, Console Visual I/O Interfaces 
IEEE 802.3, See DL_ETHER 
IEEE 802.5, See DL_TPR 
ILP32
use in devmap(), Data Sharing in devmap()use in ioctl(), Data Sharing in ioctl()use in mmap(), Data Sharing in mmap() 
ILP64, use in mmap(), Data Sharing in mmap() 
_info() entry point
example of, _info() Examplerequired implementation, Loadable Module Entry Points 
_init() entry point
example of, _init() Examplerequired implementation, Loadable Module Entry Points 
instance numbers, Device Instances and Instance Numbers 
interface association nodes, Devices With Interface-Association Descriptors 
internal mode registers, Internal Sequencing Logic 
internal sequencing logic, Internal Sequencing Logic 
interrupt functions, Interrupt Functions 
interrupt handlers
functionality, Interrupt Handler Functionalityregistering, Registering Interrupts 
interrupt handling, Interrupt Handlers
clearing masks, Interrupt Function Examplesddi_intr_add_handler() function
MSI-X InterruptsInterrupt Initialization and Destruction FunctionsRegistering Interruptsddi_intr_add_softint() function, Soft Interrupt Functionsddi_intr_alloc() function
MSI-X InterruptsInterrupt Initialization and Destruction Functionsddi_intr_block_disable() function, Interrupt Initialization and Destruction Functionsddi_intr_block_enable() function, Interrupt Initialization and Destruction Functionsddi_intr_clr_mask() function
Interrupt Initialization and Destruction FunctionsInterrupt Function Examplesddi_intr_disable() function
MSI-X InterruptsInterrupt Initialization and Destruction Functionsddi_intr_dup_handler() function
MSI-X InterruptsInterrupt Initialization and Destruction Functionsddi_intr_enable() function
MSI-X InterruptsInterrupt Initialization and Destruction Functionsddi_intr_free() function
MSI-X InterruptsInterrupt Initialization and Destruction Functionsddi_intr_get_cap() function, Interrupt Capability Functionsddi_intr_get_hilevel_pri() function
Priority Management FunctionsHandling High-Level Interruptsddi_intr_get_navail() function, Interrupt Capability Functionsddi_intr_get_nintrs() function, Interrupt Capability Functionsddi_intr_get_pending() function
Interrupt Initialization and Destruction FunctionsInterrupt Function Examplesddi_intr_get_pri() function
Priority Management FunctionsHandling High-Level Interruptsddi_intr_get_softint_pri() function, Soft Interrupt Functionsddi_intr_get_supported_types() function, Interrupt Capability Functionsddi_intr_hilevel() function, High-Level Interruptsddi_intr_remove_handler() function
MSI-X InterruptsInterrupt Initialization and Destruction Functionsddi_intr_remove_softint() function, Soft Interrupt Functionsddi_intr_set_cap() function, Interrupt Initialization and Destruction Functionsddi_intr_set_mask() function
Interrupt Initialization and Destruction FunctionsInterrupt Function Examplesddi_intr_set_pri() function, Priority Management Functionsddi_intr_set_softint_pri() function
Soft Interrupt FunctionsInterrupt Function Examplesddi_intr_trigger_softint() function
High-Level InterruptsSoft Interrupt Functionsgld_intr() function, gld_intr() Functionhigh-level interrupts
High-Level InterruptsSoftware InterruptsHandling High-Level Interruptsoverview, Interrupt Handlingpending interrupts, Interrupt Function Examplessetting masks, Interrupt Function Examplessoftware interrupts
Software InterruptsInterrupt Function ExamplesHandling High-Level Interrupts 
interrupt property, definition, Interrupt Handling 
interrupts
capability functions, Interrupt Capability Functionschanging soft interrupt priority example, Interrupt Function Exampleschecking pending interrupts example, Interrupt Function Examplesclearing interrupt masks example, Interrupt Function Examplescommon problems with, Interrupt Issuesdescription of, Interrupt Handler Overviewhandling high-level interrupts examples, High-Level Interrupt Handling Examplehandling low-level interrupts example, High-Level Interrupt Handling Examplehigh-level mutexes, High-Level Mutexesinitialization and destruction functions, Interrupt Initialization and Destruction Functionsinterrupt handling example, Interrupt Handler Functionalityinvalid, Handling Stuck Interruptslegacy defined, Device Interruptsmessage-signaled defined, Device InterruptsMSI defined, Device InterruptsMSI implementation, MSI InterruptsMSI-X defined, Device InterruptsMSI-X implementation, MSI-X Interruptsnetwork drivers, GLD Driver Requirementspriority levels, High-Level Interruptspriority management functions, Priority Management Functionsregistering legacy interrupt example, Registering Legacy Interruptsregistering legacy interrupts, Registering Legacy Interruptsregistering MSI interrupts, Registering MSI Interruptsregistering MSI interrupts example, Registering MSI Interruptsremoving legacy interrupt example, Registering Legacy Interruptsremoving MSI interrupts example, Registering MSI Interruptssetting interrupt masks example, Interrupt Function Examplessoft interrupt functions, Soft Interrupt Functionssoftware interrupts, Handling High-Level Interruptstypes of, Device Interruptsusing legacy, Legacy Interruptswriting handlers, Interrupt Handlers 
ioctl(9E) driver entry point, SPARC Platform Console Communication 
ioctl() function
character drivers, ioctl() Entry Point (Character Drivers)commands, Well Known ioctl InterfacesDLIOCRAW, Implemented ioctl Functions 
IOMMU, DMA Isolation 
iovec structure, Vectored I/O 
ISO 8802-3, See DL_ETHER 
ISO 9314-2, See DL_TPR 
ISR (interrupt service routine), Interrupt Handler Functionality |