| 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 |       	 
             K
_KERNEL symbol, Compiling and Linking the Driver 
kernel
debugger
device tree, What Is the Kernel?See kmdb debuggermemory
module directory, Copying the Driver to a Module Directoryallocation, Dynamic Memory Allocationassociating with user applications, Associating Kernel Memory With User Mappingsdetecting leaks with mdb, Detecting Kernel Memory Leaksoverview, What Is the Kernel? 
kernel data structures, Obtaining Kernel Data Structure Information 
kernel logging functions, Kernel Logging and Printing Functions 
kernel statistics, See kstats 
kernel statistics functions, Kernel Statistics Functions 
kernel terminal emulator, Solaris Consoles and the Kernel Terminal Emulator 
kernel thread functions, Kernel Thread Control and Synchronization Functions 
kernel variables
setting, Setting Kernel Variablesuse with debuggers, Modifying Kernel Variablesusing, Setting Up Test Modules 
kmdb debugger, Using the kmdb Kernel Debugger
booting on SPARC systems, Booting kmdb With an Alternate Kernel on the SPARC Platformbooting on x86 systems, Booting kmdb With an Alternate Kernel on the x86 Platformmacros, kmdb Macros for Driver Developerssetting breakpoints, Setting Breakpoints in kmdb 
kmdb kernel debugger, Enable the Deadman Feature to Avoid a Hard Hang 
kmem_alloc() function, Dynamic Memory Allocation 
kmem_flags kernel variable, Setting kmem_flags Debugging Flags 
kmem_free() function, Retrieving Target Device Information 
kstats
See also network statisticsdefinition, Kernel StatisticsEthernet drivers, Kernel Statistics for Solaris Ethernet Driversfunctions
Kernel Statistics FunctionsKernel Statistics Functionsstructure members, Kernel Statistics Structure Membersstructures, Kernel Statistics Structurestask queues, Task Queue Kernel Statistics Counters L
latent fault, definition of, Periodic Health Checks 
layered driver handle, See LDI 
Layered Driver Interface, See LDI 
layered identifier, See LDI 
ld command, Compiling and Linking the Driver 
LDI, Layered Driver Interface (LDI)
definition, What Is the Kernel?device access, Kernel Interfacesdevice consumer, LDI Overviewdevice information, Kernel Interfacesdevice layering, User Interfacesdevice usage
Kernel InterfacesUser InterfacesPrint System Configuration Command InterfacesDevice User Command Interfacesevent notification interfaces, Receiving Asynchronous Device Event Notificationfuser command, Device User Command Interfaceskernel device consumer, LDI Overviewlayered driver, LDI Overviewlayered driver handle
Layered Driver Handles – Target DevicesDriver Source Filelayered identifier
Layered Identifiers – Kernel Device ConsumersDriver Source Filelibdevinfo interfaces, User Interfacesprtconf command, Print System Configuration Command Interfacestarget device
LDI OverviewLayered Driver Handles – Target Devices 
LDI functions
ldi_add_event_handler() function, Receiving Asynchronous Device Event Notificationldi_aread() function, Accessing Target Devicesldi_awrite() function, Accessing Target Devicesldi_close() function
Opening and Closing Target DevicesDriver Source Fileldi_devmap() function, Accessing Target Devicesldi_dump() function, Accessing Target Devicesldi_get_dev() function, Retrieving Target Device Informationldi_get_devid() function, Retrieving Target Device Informationldi_get_eventcookie() function, Receiving Asynchronous Device Event Notificationldi_get_minor_name() function, Retrieving Target Device Informationldi_get_otyp() function, Retrieving Target Device Informationldi_get_size() function, Retrieving Target Device Informationldi_getmsg() function, Accessing Target Devicesldi_ident_from_dev() function
Layered Identifiers – Kernel Device ConsumersDriver Source Fileldi_ident_from_dip() function, Layered Identifiers – Kernel Device Consumersldi_ident_from_stream() function, Layered Identifiers – Kernel Device Consumersldi_ident_release() function
Layered Identifiers – Kernel Device ConsumersDriver Source Fileldi_ioctl() function, Accessing Target Devicesldi_open_by_dev() function, Opening and Closing Target Devicesldi_open_by_devid() function, Opening and Closing Target Devicesldi_open_by_name() function
Opening and Closing Target DevicesDriver Source Fileldi_poll() function, Accessing Target Devicesldi_prop_exists() function, Retrieving Target Device Property Valuesldi_prop_get_int() function, Retrieving Target Device Property Valuesldi_prop_get_int64() function, Retrieving Target Device Property Valuesldi_prop_lookup_byte_array() function, Retrieving Target Device Property Valuesldi_prop_lookup_int_array() function, Retrieving Target Device Property Valuesldi_prop_lookup_int64_array() function, Retrieving Target Device Property Valuesldi_prop_lookup_string_array() function, Retrieving Target Device Property Valuesldi_prop_lookup_string() function, Retrieving Target Device Property Valuesldi_putmsg() function, Accessing Target Devicesldi_read() function, Accessing Target Devicesldi_remove_event_handler() function, Receiving Asynchronous Device Event Notificationldi_strategy() function, Accessing Target Devicesldi_write() function
Accessing Target DevicesDriver Source File 
LDI types
ldi_callback_id_t, Receiving Asynchronous Device Event Notificationldi_handle_t, Layered Driver Handles – Target Devicesldi_ident_t, Layered Identifiers – Kernel Device Consumers 
leaf devices, description of, Device Tree Components 
leaf nodes, Fault Injection 
legacy interrupts
defined, Device Interruptsusing, Legacy Interrupts 
length argument, ddi_dma_mem_alloc(), changes to, ddi_dma_mem_alloc() Argument Changes 
libdevinfo(), displaying the device tree, libdevinfo Library 
libdevinfo device information library, User Interfaces 
linking drivers, Compiling and Linking the Driver 
lint command, 64-bit environment, General Conversion Steps 
list suspect, definition, Diagnosis, Suspect Lists, and Fault Events 
lnode, Device Information Library Interfaces 
loadable module functions, Module Functions 
loading drivers, Compiling and Linking the Driver
add_drv command, Installing Drivers with add_drvhardware configuration file, Writing a Hardware Configuration File 
loading modules
Loadable Module Entry PointsCopying the Driver to a Module Directory 
loading test modules, Loading and Unloading Test Modules 
locking primitives, types of, Locking Primitives 
locks
manipulating, Kernel Thread Control and Synchronization Functionsmutex, Mutual-Exclusion Locksreaders/writer, Readers/Writer Locksscheme for, Choosing a Locking Scheme 
LP64
use in devmap(), Data Sharing in devmap()use in ioctl(), Data Sharing in ioctl() 
LUN bits, Building a Command |