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

Kernel Thread Control and Synchronization Functions

The kernel thread control and synchronization functions are:

cv_broadcast()

Wake up all waiting threads

cv_destroy()

Free an allocated condition variable

cv_init()

Allocate a condition variable

cv_signal()

Wake up one waiting thread

cv_timedwait()

Await an event with timeout

cv_timedwait_sig()

Await an event or signal with timeout

cv_wait()

Await an event

cv_wait_sig()

Await an event or signal

ddi_can_receive_sig()

Determine whether the current thread can receive a signal

ddi_enter_critical()

Enter a critical region of control

ddi_exit_critical()

Exit a critical region of control

mutex_destroy()

Destroy mutual exclusion lock

mutex_enter()

Acquire mutual exclusion lock

mutex_exit()

Release mutual exclusion lock

mutex_init()

Initialize mutual exclusion lock

mutex_owned()

Determine whether current thread is holding mutual exclusion lock

mutex_tryenter()

Attempt to acquire mutual exclusion lock without waiting

rw_destroy()

Destroy a readers/writer lock

rw_downgrade()

Downgrade a readers/writer lock holding from writer to reader

rw_enter()

Acquire a readers/writer lock

rw_exit()

Release a readers/writer lock

rw_init()

Initialize a readers/writer lock

rw_read_locked()

Determine whether readers/writer lock is held for read or write

rw_tryenter()

Attempt to acquire a readers/writer lock without waiting

rw_tryupgrade()

Attempt to upgrade readers/writer lock holding from reader to writer

sema_destroy()

Destroy a semaphore

sema_init()

Initialize a semaphore

sema_p()

Decrement semaphore and possibly block

sema_p_sig()

Decrement semaphore but do not block if signal is pending

sema_tryp()

Attempt to decrement semaphore but do not block

sema_v()

Increment semaphore and possibly unblock waiter