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 
Module Functions 
Device Information Tree Node (dev_info_t) Functions 
Device (dev_t) Functions 
Property Functions 
Device Software State Functions 
Memory Allocation and Deallocation Functions 
Kernel Thread Control and Synchronization Functions 
Task Queue Management Functions 
Interrupt Functions 
Programmed I/O Functions 
Direct Memory Access (DMA) Functions 
User Space Access Functions 
User Process Event Functions 
User Process Information Functions 
User Application Kernel and Device Access Functions 
Time-Related Functions 
Power Management Functions 
Fault Management Functions 
Kernel Statistics Functions 
Kernel Logging and Printing Functions 
Buffered I/O Functions 
Virtual Memory Functions 
Device ID Functions 
Resource Map Management Functions 
System Global State 
Utility Functions 
C.  Making a Device Driver 64-Bit Ready 
D.  Console Frame Buffer Drivers 
Index 
 | 
      
	       	 
             
SCSI Functions
The SCSI functions are: - scsi_probe()
 
Probe a SCSI device  
- scsi_unprobe()
 
Free resources allocated during initial probing  
- scsi_alloc_consistent_buf()
 
Allocate an I/O buffer for SCSI DMA  
- scsi_free_consistent_buf()
 
Free a previously allocated SCSI DMA I/O buffer  
- scsi_init_pkt()
 
Prepare a complete SCSI packet  
- scsi_destroy_pkt()
 
Free an allocated SCSI packet and its DMA resource  
- scsi_setup_cdb()
 
Set up SCSI command descriptor block (CDB)  
- scsi_transport()
 
Start a SCSI command  
- scsi_poll()
 
Run a polled SCSI command  
- scsi_ifgetcap()
 
Get SCSI transport capability  
- scsi_ifsetcap()
 
Set SCSI transport capability  
- scsi_sync_pkt()
 
Synchronize CPU and I/O views of memory  
- scsi_abort()
 
Abort a SCSI command  
- scsi_reset()
 
Reset a SCSI bus or target  
- scsi_reset_notify()
 
Notify the target driver of bus resets  
- scsi_cname()
 
Decode a SCSI command  
- scsi_dname()
 
Decode a SCSI peripheral device type  
- scsi_mname()
 
Decode a SCSI message  
- scsi_rname()
 
Decode a SCSI packet completion reason  
- scsi_sname()
 
Decode a SCSI sense key  
- scsi_errmsg()
 
Display a SCSI request sense message  
- scsi_log()
 
Display a SCSI-device-related message  
- scsi_vu_errmsg()
 
Display a SCSI request sense message  
- scsi_hba_init()
 
SCSI HBA system initialization routine  
- scsi_hba_fini()
 
SCSI HBA system completion routine  
- scsi_hba_attach_setup()
 
SCSI HBA attach routine  
- scsi_hba_detach()
 
SCSI HBA detach routine  
- scsi_hba_probe()
 
Default SCSI HBA probe function  
- scsi_hba_tran_alloc()
 
Allocate a transport structure  
- scsi_hba_tran_free()
 
Free a transport structure  
- scsi_hba_pkt_alloc()
 
Allocate a scsi_pkt structure  
- scsi_hba_pkt_free()
 
Free a scsi_pkt structure  
- scsi_hba_lookup_capstr()
 
Return an index matching capability string  
 
Table B-12 Deprecated SCSI FunctionsDeprecated Function  | 
Replacement  | 
 
free_pktiopb()  | 
scsi_free_consistent_buf()  | 
 
get_pktiopb()  | 
scsi_alloc_consistent_buf()  | 
 
makecom_g0()  | 
scsi_setup_cdb()  | 
 
makecom_g0_s()  | 
scsi_setup_cdb()  | 
 
makecom_g1()  | 
scsi_setup_cdb()  | 
 
makecom_g5()  | 
scsi_setup_cdb()  | 
 
scsi_dmafree()  | 
scsi_destroy_pkt()  | 
 
scsi_dmaget()  | 
scsi_init_pkt()  | 
 
scsi_hba_attach()  | 
scsi_hba_attach_setup()  | 
 
scsi_pktalloc()  | 
scsi_init_pkt()  | 
 
scsi_pktfree()  | 
scsi_destroy_pkt()  | 
 
scsi_resalloc()  | 
scsi_init_pkt()  | 
 
scsi_resfree()  | 
scsi_destroy_pkt()  | 
 
scsi_slave()  | 
scsi_probe()  | 
 
scsi_unslave()  | 
scsi_unprobe()  | 
 
 
          
       |