Document Information
Preface
1. Introduction to Device Drivers
2. Template Driver Example
3. Reading and Writing Data in Kernel Memory
4. Tips for Developing Device Drivers
|
IndexA
B
C
- cat command, Reading and Writing the Device
- cb_ops driver structure
- Device Drivers
- Writing the Driver Data Structures
- Defining the Character and Block Operations Structure
- Writing New Data
- cc command, Compiling with Sun Studio
- character device, Character and Block Devices
- close() entry point
- Writing the User Context Entry Points
- Defining the Close Device Entry Point
- Opening the Device, Closing the Device, and Getting Module Information
- cmn_err() kernel function
- Defining the Module Initialization Entry Point
- Testing the Template Driver
- Displaying Data Stored in Kernel Memory
- Device Driver Coding Tips
- commands
- add_drv
- Adding, Updating, and Removing a Driver
- Adding the Template Driver
- Device Driver Coding Tips
- boot, Driver Directory Organization
- cat, Reading and Writing the Device
- cc, Compiling with Sun Studio
- dmesg, Attaching and Detaching
- echo, Reading and Writing the Device
- fsck, Device Driver Testing Tips
- gcc, Compiling with the GNU C Compiler
- kernel, Driver Directory Organization
- ld
- Structural Differences Between Kernel Modules and User Programs
- Compiling with Sun Studio
- Defining the Module Unload Entry Point
- mknod, Devices Directories
- modinfo
- Adding, Updating, and Removing a Driver
- Adding the Template Driver
- Building, Installing, and Using Quote Of The Day Version 2
- modload, Adding the Template Driver
- modunload, Removing the Template Driver
- more, Building, Installing, and Using Quote Of The Day Version 2
- prtconf
- Devices Directories
- Device Tree
- Building a Driver
- Adding, Updating, and Removing a Driver
- Adding the Template Driver
- Building, Installing, and Using Quote Of The Day Version 2
- prtpicl, Device Tree
- rem_drv
- Adding, Updating, and Removing a Driver
- Loading and Unloading a Driver
- Removing the Template Driver
- syslogd
- Testing the Template Driver
- Building, Installing, and Using Quote Of The Day Version 1
- update_drv, Adding, Updating, and Removing a Driver
- compiling, Building a Driver
- condition variables, Managing Thread Synchronization
- conditional compilation, Device Driver Coding Tips
- condvar() kernel functions, Managing Thread Synchronization
- configuration files
- Writing a Configuration File
- Writing the Device Configuration File
- crash dumps, use in testing, Device Driver Testing Tips
- cv_broadcast() kernel function
- Managing Thread Synchronization
- Writing New Data
- cv_destroy() kernel function
- Checking for Changes, Cleaning Up, and Detaching
- Managing Thread Synchronization
- cv_init() kernel function
- Attaching, Allocating Memory, and Initializing a Mutex and a Condition Variable
- Managing Thread Synchronization
- cv_signal() kernel function, Managing Thread Synchronization
- cv_wait() kernel function, Managing Thread Synchronization
- cv_wait_sig() kernel function
- Managing Thread Synchronization
- Managing Thread Synchronization
D
- data loss, avoiding while testing, Device Driver Testing Tips
- data model
- converting
- Writing a Driver Module
- Writing Quote Of The Day Version 3
- ddi_copyin() kernel function
- User and Kernel Address Spaces on x86 and SPARC Machines
- Writing Quote Of The Day Version 3
- Managing Thread Synchronization
- Reporting and Setting Device Size and Re-initializing the Device
- ddi_copyout() kernel function
- User and Kernel Address Spaces on x86 and SPARC Machines
- Writing Quote Of The Day Version 3
- Reporting and Setting Device Size and Re-initializing the Device
- ddi_create_minor_node() kernel function
- Writing the Autoconfiguration Entry Points
- Defining the Device Attach Entry Point
- Attaching and Detaching
- Attaching, Allocating Memory, and Initializing a Mutex and a Condition Variable
- ddi_get_instance() kernel function
- Device Numbers
- Defining the Device Attach Entry Point
- Attaching and Detaching
- ddi_get_soft_state() kernel function
- Managing Device State
- Attaching and Detaching
- Opening the Device, Closing the Device, and Getting Module Information
- Reading the Data
- ddi_model_convert_from() kernel function
- Writing a Driver Module
- Writing Quote Of The Day Version 3
- Reporting and Setting Device Size and Re-initializing the Device
- ddi_prop_get_int() kernel function, Writing a Configuration File
- ddi_prop_lookup() kernel function, Writing a Configuration File
- ddi_prop_op() kernel function
- Writing the Autoconfiguration Entry Points
- Defining the Report Driver Property Information Entry Point
- ddi_remove_minor_node() kernel function
- Writing the Autoconfiguration Entry Points
- Defining the Device Detach Entry Point
- Attaching and Detaching
- Checking for Changes, Cleaning Up, and Detaching
- ddi_report_dev() kernel function, Attaching and Detaching
- ddi_soft_state_fini() kernel function
- Managing Device State
- Initializing and Unloading
- ddi_soft_state_free() kernel function
- Managing Device State
- Attaching and Detaching
- ddi_soft_state_init() kernel function
- Managing Device State
- Initializing and Unloading
- ddi_soft_state() kernel function, Defining the Device Attach Entry Point
- ddi_soft_state_zalloc() kernel function
- Managing Device State
- Attaching and Detaching
- ddi_umem_alloc() kernel function, Allocating and Freeing Kernel Memory
- ddi_umem_free() kernel function
- Checking for Changes, Cleaning Up, and Detaching
- Allocating and Freeing Kernel Memory
- deadman kernel feature, Device Driver Testing Tips
- debugging device drivers, tips, Device Driver Debugging and Tuning Tips
- detach() entry point
- Defining the Module Unload Entry Point
- Writing the Autoconfiguration Entry Points
- Defining the Device Detach Entry Point
- Attaching and Detaching
- /dev directory
- Devices Directories
- Device Names
- dev_info device structure
- Defining the Device Attach Entry Point
- Defining the Device Detach Entry Point
- Defining the Get Driver Information Entry Point
- dev_ops driver structure
- Device Drivers
- Writing the Driver Data Structures
- Defining the Device Operations Structure
- devfs devices file system, Devices Directories
- devfsadmd devices file system administration command, Device Names
- device drivers, Device Drivers
- adding, Adding, Updating, and Removing a Driver
- coding tips, Device Driver Coding Tips
- compiling, Building a Driver
- condition variables, Managing Thread Synchronization
- conditional compilation, Device Driver Coding Tips
- debugging tips, Device Driver Debugging and Tuning Tips
- development guidelines, Tips for Developing Device Drivers
- directories, Driver Directory Organization
- adding, Driver Directory Organization
entry points
- Device Drivers
- Overview of the Template Driver Example
- See also entry points
how used, Device Drivers
- I/O controls
- Reporting and Setting Device Size and Re-initializing the Device
- Exercising the Driver's I/O Controls
- installing
- Installing a Driver
- Device Driver Testing Tips
- linking, Building a Driver
- loading
- Driver Directory Organization
- Loading and Unloading a Driver
- Adding the Template Driver
- mutexes, Managing Thread Synchronization
- naming conventions, Device Driver Coding Tips
- recommended housekeeping, Device Driver Coding Tips
- removing
- Adding, Updating, and Removing a Driver
- Removing the Template Driver
- structures
- See driver structures
test areas, Testing a Driver
- testing, Device Driver Testing Tips
- thread synchronization, Managing Thread Synchronization
- tuning, Device Driver Debugging and Tuning Tips
- unloading
- Loading and Unloading a Driver
- Removing the Template Driver
- updating, Adding, Updating, and Removing a Driver
- device instance pointer (dip)
- Defining the Device Attach Entry Point
- Defining the Device Detach Entry Point
- Defining the Get Driver Information Entry Point
- device number, Device Numbers
- device structures
- dev_info
- Defining the Device Attach Entry Point
- Defining the Device Detach Entry Point
- Defining the Get Driver Information Entry Point
- device tree, Device Tree
- devices
- blk, Character and Block Devices
- block
- Devices as Files
- Character and Block Devices
- character
- Devices as Files
- Character and Block Devices
- Writing the Template Driver
- configuration files
- Writing a Configuration File
- Writing the Device Configuration File
- device tree, Device Tree
- directories
- Devices Directories
- Device Names
- exclusive access, Managing Thread Synchronization
- file system
- devfs, Devices Directories
- devfsadmd, Device Names
instances
- Device Numbers
- Defining the Device Attach Entry Point
- Defining the Device Detach Entry Point
- Defining the Get Driver Information Entry Point
- md metadevice, Character and Block Devices
- names, Device Names
- nexus
- Device Drivers
- Device Tree
- numbers
- Devices Directories
- Device Numbers
- Defining the Device Attach Entry Point
- prefixes
- Writing a Driver Module
- Declaring the Autoconfiguration Entry Points
- properties
- Writing a Configuration File
- Defining the Report Driver Property Information Entry Point
- pseudo
- Device Drivers
- Template Driver Example
- ramdisk
- Device Drivers
- Modifying Data Stored in Kernel Memory
- raw, Character and Block Devices
- reading
- Reading and Writing the Device
- Building, Installing, and Using Quote Of The Day Version 2
- Reading the Device
- special files, Devices as Files
- state, Managing Device State
- writing
- Reading and Writing the Device
- Modifying Data Stored in Kernel Memory
- Writing New Data
- Writing the Device
- /devices directory
- Devices Directories
- Devices Directories
- Device Names
- Adding, Updating, and Removing a Driver
- /devices/pseudo directory
- Character and Block Devices
- Adding the Template Driver
- Building, Installing, and Using Quote Of The Day Version 2
- devmap() entry point, User and Kernel Address Spaces on x86 and SPARC Machines
- dmesg command, Attaching and Detaching
- driver.conf file, Writing a Configuration File
- driver structures
- cb_ops
- Device Drivers
- Writing the Driver Data Structures
- Defining the Character and Block Operations Structure
- Writing New Data
- character and block operations structure, Defining the Character and Block Operations Structure
- dev_ops
- Device Drivers
- Writing the Driver Data Structures
- Defining the Device Operations Structure
- device operations structure, Defining the Device Operations Structure
- modinfo, Defining the Module Information Entry Point
- modldrv
- Writing the Driver Data Structures
- Defining the Module Linkage Structures
- modlinkage
- Defining the Module Initialization Entry Point
- Writing the Driver Data Structures
- Defining the Module Linkage Structures
- module linkage structures, Defining the Module Linkage Structures
- drivers, See device drivers
- DTrace analyzer, Device Driver Debugging and Tuning Tips
|