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
Index
|
E
- echo command, Reading and Writing the Device
- entry points
- attach()
- Installing a Driver
- Writing the Autoconfiguration Entry Points
- Defining the Device Attach Entry Point
- Attaching and Detaching
- Device Driver Testing Tips
- autoconfiguration, Writing the Autoconfiguration Entry Points
- close()
- Writing the User Context Entry Points
- Defining the Close Device Entry Point
- Opening the Device, Closing the Device, and Getting Module Information
- detach()
- Defining the Module Unload Entry Point
- Writing the Autoconfiguration Entry Points
- Defining the Device Detach Entry Point
- Attaching and Detaching
- devmap(), User and Kernel Address Spaces on x86 and SPARC Machines
- _fini()
- Writing the Loadable Module Configuration Entry Points
- Defining the Module Unload Entry Point
- Initializing and Unloading
- getinfo()
- Writing the Autoconfiguration Entry Points
- Defining the Get Driver Information Entry Point
- Opening the Device, Closing the Device, and Getting Module Information
- _info()
- Installing a Driver
- Writing the Loadable Module Configuration Entry Points
- Defining the Module Information Entry Point
- Device Driver Testing Tips
- _init()
- Installing a Driver
- Writing the Loadable Module Configuration Entry Points
- Defining the Module Initialization Entry Point
- Initializing and Unloading
- Device Driver Testing Tips
- ioctl()
- Devices as Files
- Writing New Data
- Reporting and Setting Device Size and Re-initializing the Device
- Exercising the Driver's I/O Controls
- loadable module configuration, Writing the Loadable Module Configuration Entry Points
- open()
- Writing the User Context Entry Points
- Defining the Open Device Entry Point
- Opening the Device, Closing the Device, and Getting Module Information
- prop_op()
- Writing the Autoconfiguration Entry Points
- Defining the Report Driver Property Information Entry Point
- read()
- Writing the User Context Entry Points
- Defining the Read Device Entry Point
- Reading the Data
- user context, Writing the User Context Entry Points
- write()
- Writing the User Context Entry Points
- Defining the Write Device Entry Point
- Writing New Data
- /etc/driver_aliases file, Adding, Updating, and Removing a Driver
- /etc/name_to_major file
- Adding, Updating, and Removing a Driver
- Adding the Template Driver
- Building, Installing, and Using Quote Of The Day Version 2
F
- files
- driver.conf, Writing a Configuration File
- /etc/name_to_major
- Adding, Updating, and Removing a Driver
- Adding the Template Driver
- Building, Installing, and Using Quote Of The Day Version 2
- system, Driver Directory Organization
- /var/adm/messages
- Testing the Template Driver
- Building, Installing, and Using Quote Of The Day Version 1
- _fini() entry point
- Writing the Loadable Module Configuration Entry Points
- Defining the Module Unload Entry Point
- Initializing and Unloading
- fsck command, Device Driver Testing Tips
- functions
- kstat(), Device Driver Debugging and Tuning Tips
- printf(), Device Driver Coding Tips
- signal()
- Managing Thread Synchronization
- Writing New Data
- Reporting and Setting Device Size and Re-initializing the Device
G
H
I
K
- kernel, Solaris Operating System Definition
- address space
- Execution Differences Between Kernel Modules and User Programs
- User and Kernel Address Spaces on x86 and SPARC Machines
- privilege
- See also kernel mode
- kernel command, Driver Directory Organization
- kernel functions
- ASSERT()
- Writing Quote Of The Day Version 2
- Checking Data Validity
- Building, Installing, and Using Quote Of The Day Version 2
- Device Driver Coding Tips
- bzero(), Reporting and Setting Device Size and Re-initializing the Device
- cmn_err()
- Defining the Module Initialization Entry Point
- Testing the Template Driver
- Displaying Data Stored in Kernel Memory
- Device Driver Coding Tips
- condvar(), Managing Thread Synchronization
- cv_broadcast()
- Managing Thread Synchronization
- Writing New Data
- cv_destroy()
- Checking for Changes, Cleaning Up, and Detaching
- Managing Thread Synchronization
- cv_init()
- Attaching, Allocating Memory, and Initializing a Mutex and a Condition Variable
- Managing Thread Synchronization
- cv_signal(), Managing Thread Synchronization
- cv_wait(), Managing Thread Synchronization
- cv_wait_sig()
- Managing Thread Synchronization
- Managing Thread Synchronization
- ddi_copyin()
- 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()
- 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()
- 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()
- Device Numbers
- Defining the Device Attach Entry Point
- Attaching and Detaching
- ddi_get_soft_state()
- Managing Device State
- Attaching and Detaching
- Opening the Device, Closing the Device, and Getting Module Information
- Reading the Data
- ddi_model_convert_from()
- 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(), Writing a Configuration File
- ddi_prop_lookup(), Writing a Configuration File
- ddi_prop_op()
- Writing the Autoconfiguration Entry Points
- Defining the Report Driver Property Information Entry Point
- ddi_remove_minor_node()
- Writing the Autoconfiguration Entry Points
- Defining the Device Detach Entry Point
- Attaching and Detaching
- Checking for Changes, Cleaning Up, and Detaching
- ddi_report_dev(), Attaching and Detaching
- ddi_soft_state(), Defining the Device Attach Entry Point
- ddi_soft_state_fini()
- Managing Device State
- Initializing and Unloading
- ddi_soft_state_free()
- Managing Device State
- Attaching and Detaching
- ddi_soft_state_init()
- Managing Device State
- Initializing and Unloading
- ddi_soft_state_zalloc()
- Managing Device State
- Attaching and Detaching
- ddi_umem_alloc(), Allocating and Freeing Kernel Memory
- ddi_umem_free()
- Checking for Changes, Cleaning Up, and Detaching
- Allocating and Freeing Kernel Memory
- getminor()
- Opening the Device, Closing the Device, and Getting Module Information
- Reading the Data
- kmem_alloc(), Allocating and Freeing Kernel Memory
- kmem_zalloc(), Allocating and Freeing Kernel Memory
- memcpy(), Reporting and Setting Device Size and Re-initializing the Device
- mod_info()
- Writing the Loadable Module Configuration Entry Points
- Defining the Module Information Entry Point
- mod_install()
- Writing the Loadable Module Configuration Entry Points
- Defining the Module Initialization Entry Point
- Initializing and Unloading
- mod_remove()
- Writing the Loadable Module Configuration Entry Points
- Defining the Module Unload Entry Point
- Initializing and Unloading
- mutex(), Managing Thread Synchronization
- mutex_destroy()
- Checking for Changes, Cleaning Up, and Detaching
- Managing Thread Synchronization
- mutex_init()
- Attaching, Allocating Memory, and Initializing a Mutex and a Condition Variable
- Managing Thread Synchronization
- mutex_owned(), Device Driver Coding Tips
- nochpoll(), Defining the Character and Block Operations Structure
- nodev()
- Defining the Character and Block Operations Structure
- Defining the Device Operations Structure
- nulldev()
- Writing the User Context Entry Points
- Defining the Device Operations Structure
- strlcpy()
- Attaching, Allocating Memory, and Initializing a Mutex and a Condition Variable
- Reporting and Setting Device Size and Re-initializing the Device
- strncpy(), Attaching, Allocating Memory, and Initializing a Mutex and a Condition Variable
- uiomove()
- Reading the Data
- Writing Quote Of The Day Version 3
- Managing Thread Synchronization
- Writing New Data
- kernel mode, Solaris Operating System Definition
- kernel modules, use in testing, Device Driver Testing Tips
- kernel statistics, Device Driver Debugging and Tuning Tips
- kernel structures
- uio
- Reading the Data
- Writing New Data
- kmdb kernel debugger
- Device Driver Testing Tips
- Device Driver Debugging and Tuning Tips
- kmem_alloc() kernel function, Allocating and Freeing Kernel Memory
- kmem_zalloc() kernel function, Allocating and Freeing Kernel Memory
- kstat() function, Device Driver Debugging and Tuning Tips
|