JavaScript is required to for searching.
Skip Navigation Links
Exit Print View
Writing Device Drivers     Oracle Solaris 11.1 Information Library
search filter icon
search icon

Document Information

Preface

Part I Designing Device Drivers for the Oracle Solaris Platform

1.  Overview of Oracle Solaris Device Drivers

2.  Oracle 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 Oracle 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

21.  SR-IOV Drivers

Part III Building a Device Driver

22.  Compiling, Loading, Packaging, and Testing Drivers

23.  Debugging, Testing, and Tuning Device Drivers

24.  Recommended Coding Practices

Part IV Appendixes

A.  Hardware Overview

B.  Summary of Oracle 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

SCSI Functions

Resource Map Management Functions

System Global State

Utility Functions

C.  Making a Device Driver 64-Bit Ready

D.  Console Frame Buffer Drivers

E.  pci.conf File

Index

User Application Kernel and Device Access Functions

The user application kernel and device access functions are:

ddi_dev_nregs()

Return the number of register sets a device has

ddi_dev_regsize()

Return the size of a device's register

ddi_devmap_segmap(), devmap_setup()

Set up a user mapping to device memory using the devmap framework

devmap_devmem_setup()

Export device memory to user space

devmap_load()

Validate memory address translations

devmap_unload()

Invalidate memory address translations

devmap_do_ctxmgt()

Perform device context switching on a mapping

devmap_set_ctx_timeout()

Set the timeout value for the context management callback

devmap_default_access()

Default driver memory access function

ddi_umem_alloc()

Allocate page-aligned kernel memory

ddi_umem_free()

Free page-aligned kernel memory

ddi_umem_lock()

Lock memory pages

ddi_umem_unlock()

Unlock memory pages

ddi_umem_iosetup()

Setup I/O requests to application memory

devmap_umem_setup()

Export kernel memory to user space

ddi_model_convert_from()

Determine data model type mismatch

Table B-8 Deprecated User Application Kernel and Device Access Functions

Deprecated Function
Replacement
ddi_mapdev()
devmap_setup()
ddi_mapdev_intercept()
devmap_load()
ddi_mapdev_nointercept()
devmap_unload()
ddi_mapdev_set_device_acc_attr()
devmap()
ddi_segmap()
devmap()
ddi_segmap_setup()
devmap_setup()
hat_getkpfnum()
devmap()
ddi_mmap_get_model()
devmap()