Contained Within
Find More Documentation
Featured Support Resources
| Download this book in PDF
Index
A
| |
| adb(1) command | 246 |
| add_drv(1M) command | 227 |
| address spaces | 2, 18 |
| attach(9E) entry point | 95 |
| autoconfiguration |
| .....of block devices | 171 |
| .....of character devices | 148 |
| .....of SCSI drivers | 199 |
| .....routines | 49 |
| autovectored interrupts | 107 |
B
| |
| binary compatibility | 4 |
| block driver |
| .....autoconfiguration | 171 |
| .....entry points | 50 |
| .....slice number | 171 |
| block interrupt cookie | 52 |
| burst sizes | 135 |
| bus |
| .....architectures | 14 |
| .....interrupt levels | 106 |
| .....SCSI | 189 |
| bus nexus device drivers | 5 |
| bus-master DMA | 124 |
| byte-stream I/O | 42 |
C
| |
| cache | 140 |
| callback functions | 51, 102, 134 |
| cb_ops(9S) structure | 88, 170 |
| character device drivers | 42, 147 |
| .....entry points for | 50 |
| compiler modes | 65 |
| compiling/linking a driver | 226 |
| condition variables | 344 |
| .....and interface functions | 344 |
| .....and mutex locks | 77, 277 |
| .....routines for,78 |
| configuration file, device |
| .....attach(9E) | 95 |
| .....detach(9E) | 100 |
| .....getinfo(9E) | 102 |
| .....identify(9E) | 91 |
| .....probe(9E) | 93 |
| configuration file, hardware | 226 |
| context of device driver | 52 |
| control registers |
| .....device context management of | 213 |
| cookie |
| .....DMA | 120 |
| .....types of | 52 |
D
| |
| data structures |
| .....cb_ops(9S) | 88, 170 |
| .....dev_ops(9S) | 87, 170 |
| .....for device drivers | 60 |
| .....overview of | 86 |
| data, storage classes of | 74 |
| DDI/DKI |
| .....and disk performance | 300 |
| .....compliance testing | 263 |
| .....interface summary | 307 |
| .....kernel support routines | 270 |
| ddi_ functions | 307 |
| .....ddi_add_intr(9F) | 97, 112 |
| .....ddi_create_minor_node(9F) | 98 |
| .....ddi_dma_free(9F) | 123 |
| .....ddi_dma_nextseg(9F) | 124 |
| .....ddi_dma_nextwin(9F) | 123 |
| .....ddi_dma_segtocookie(9F) | 124 |
| .....ddi_get_instance(9F) | 97 |
| .....ddi_iblock_cookie_t | 52 |
| .....ddi_idevice_cookie_t | 52 |
| .....ddi_map_regs(9F) | 98 |
| .....ddi_prop_create(9F) | 58 |
| .....ddi_prop_op(9F) | 58 |
| .....ddi_remove_intr(9F) | 101 |
| .....ddi_unmap_regs(9F) | 101 |
| detach(9E) entry point | 100 |
| dev_ops(9S) structure | 87, 170 |
| device access system calls | 173 |
| device addressing | 15 |
| device driver |
| .....converting to 5.x | 269 |
| .....debugging |
| ............coding hints | 236 |
| ............configuration | 231 |
| ............existing drivers | 241 |
| ............tools | 243 |
| .....definition of | 41 |
| .....entry points | 48 |
| .....for character-oriented devices | 147 |
| .....header files | 60 |
| .....layout structure | 60 |
| .....loadable interface | 89 |
| ......module configuration | 62 |
| ......overview | 41 |
| ......register mapping | 98 |
| ......source files | 62 |
| ......standard character | 42 |
| ......testing | 263 |
| ......types of | 42 |
| device information |
| ......dev_info node | 97 |
| ......self-identifying | 14 |
| ......tree structure | 5, 6 |
| device interrupt cookie | 52 |
| device interrupt handling |
| ......ddi_add_intr(9F) | 97, 112 |
| ......ddi_remove_intr(9F) | 101 |
| ......interrupt block cookie | 97 |
| device interrupts, types of | 107 |
| device memory |
| ......accessing | 44 |
| ......mapping | 43, 331 |
| device polling |
| ......overview | 44 |
| ......poll(2) system call | 44 |
| device registers |
| ......accessing | 44 |
| ......ddi_map_regs(9F) | 98 |
| ......ddi_unmap_regs(9F) | 101 |
| ......examples of | 45 |
| ......mapping | 95 |
| device tree | 5 |
| devlinks(1M) command | 227 |
| disk |
| ......I/O controls | 299 |
| ......performance | 300 |
| DKI, See DDI/DKI |
| DMA |
| ......buffer allocation | 143 |
| ......burst sizes | 135 |
| ......callbacks | 138 |
| ......cookie | 120 |
| ......engine programming | 136 |
| ......engine restrictions | 126 |
| ......freeing resources | 137 |
| ......handle | 119 |
| |
| .....limits | 127 |
| .....locking | 131 |
| .....object | 119 |
| .....operations | 124 |
| .....private buffer allocation | 143 |
| .....register structure | 134 |
| .....resource allocation | 131 |
| .....resource interfaces | 315 |
| .....segment | 120 |
| .....transfers | 156 |
| .....types of | 122 |
| .....window | 120 |
| driver entry points | 313 |
| .....attach(9E) | 95 |
| .....definition of | 48 |
| .....detach(9E) | 100 |
| .....identify(9E) | 91 |
| .....probe(9E) | 93 |
| .....prop_op(9E) | 58 |
| DVMA |
| .....SBus slots that support | 17 |
| dynamic loading | 3 |
| dynamic memory allocation | 54 |
E
| |
| entry points, See driver entry points |
| external registers | 25 |
F
| |
| filesystem I/O | 169 |
| fini(9E) | 49, 91 |
| first-party DMA | 125 |
G
| |
| geographical addressing | 15 |
| graphics devices |
| .....device context management of | 213 |
H
| |
| hardware configuration file | 226 |
| header files for device drivers | 60 |
I
| |
| I/O |
| ......control overview | 43 |
| ......disk controls | 299 |
| ......filesystem structure | 169 |
| ......miscellaneous control of | 165 |
| ......multiplexing | 162 |
| ......port access | 331 |
| ......programmed transfers | 154 |
| ......scatter/gather structures | 153 |
| identify(9E) entry point | 91 |
| info(9E) | 49 |
| init(9E) | 49, 91 |
| instance numbers | 92 |
| internal mode registers | 25 |
| internal sequencing logic | 25 |
| interrupt cookie, See cookie |
| interrupt handling |
| ......block interrupt cookie | 52 |
| ......device interrupt cookie | 52 |
| ......interfaces for | 322 |
| ......overview | 52 |
| ......registering a handler | 95 |
| interrupts |
| ......common problems with | 25 |
| ......registering | 97 |
| ......specification of | 106 |
| ......types of | 107 |
| inumber | 97 |
K
| |
| kadb(1M) command | 246 |
| kernel modules |
| ......directory of | 227 |
| ......dynamic loading | 3 |
| kernel threads | 72 |
| kernel, definition of | 1 |
| keywords, new | 66 |
L
| |
| leaf device drivers | 5 |
| lightweight process | 71 |
| linking a driver | 226 |
| loading drivers |
| .....add_drv(1M) command | 227 |
| .....compiling a driver | 226 |
| .....hardware configuration file | 226 |
| .....linking a driver | 226 |
| .....overview | 3 |
| loading modules | 49, 227 |
| lock granularity | 295 |
| locking primitives, types of | 74 |
| LWP | 71 |
M
| |
| memory mapping |
| .....device context management of | 43, 213 |
| memory model |
| .....SPARC | 13 |
| .....store buffers | 12 |
| memory, allocation of | 54, 326 |
| minor device node | 98 |
| modldrv | 87 |
| modlinkage | 87 |
| module directory | 227 |
| module ID, getting | 228 |
| modunload(1M) command | 229 |
| mount(2) system call | 173 |
| multithreaded kernel | 73 |
| multithreading | 2 |
| .....and condition variables | 78 |
| .....and lock granularity | 295 |
| .....and locking primitives | 74 |
| .....application threads | 71 |
| .....thread synchronization | 77 |
| mutex |
| .....functions | 76, 344 |
| .....locking order | 296 |
| .....locks | 75, 344 |
| .....related panics | 298 |
| ......routines | 75 |
N
| |
| node types | 99 |
| non-self-identifying devices | 15 |
O
| |
| object locking | 131 |
| open(2) system call | 173 |
P
| |
| padding structures | 47 |
| peripheral devices | 26 |
| physical DMA | 122 |
| physical SBus addresses |
| ......in SPARCstation 1 | 17 |
| poll(2) system call | 44 |
| polled interrupts | 107 |
| polling, See device polling |
| printing messages | 53 |
| probe(9E) entry point | 93 |
| programmed I/O | 154 |
| prop_op(9E) entry point | 58 |
| properties |
| ......ddi_prop_create(9F) | 58 |
| ......ddi_prop_op(9F) | 58 |
| ......overview of,57 |
| ......prop_op(9E)entry point | 58 |
| ......types of | 57 |
| PTE masks | 37 |
Q
R
| |
| readers/writer locks | 77 |
| registers, See control registers and deviceregisters |
| rnumber | 98 |
S
| |
| S_IFCHR | 99 |
| SBus |
| .....geographical addressing | 15 |
| .....physical SBus addresses | 17 |
| .....slots supporting DVMA | 17 |
| scatter/gather I/O | 153 |
| SCSA | 189 |
| .....functions, types of | 194 |
| .....global data definitions | 301 |
| .....interfaces | 334 |
| SCSI |
| .....architecture | 191 |
| .....flow of control | 192 |
| .....interfaces | 334 |
| .....resource allocation | 205 |
| .....simple driver code listing | 355 |
| .....target driver overview | 189 |
| .....target drivers | 102, 195 |
| self-identifying devices | 14 |
| semaphores | 344 |
| slice number |
| .....for block devices | 171 |
| soft state structure | 55, 341 |
| source compatibility | 4 |
| source files for device drivers | 62 |
| SPARC processor |
| .....byte ordering | 10, 12 |
| .....data alignment | 9, 11 |
| .....floating point operations | 11, 12 |
| .....multiply and divide instructions | 11 |
| .....register windows | 10 |
| .....structure member alignment | 10, 11 |
| special files | 3 |
| sst_getinfo() entry point | 102 |
| state structure |
| .....description of | 55 |
| .....management routines | 56 |
| store buffers | 12 |
| STREAMS |
| .....drivers | 44 |
| .....interfaces | 308 |
| string manipulation | 342 |
| structure padding | 47 |
| SunDDI/DKI |
| ......interface summary | 307 |
| ......overview | 3, 170 |
| synchronization of threads | 344 |
| system call, description of | 1 |
T
| |
| tagged queueing | 302 |
| third-party DMA | 126 |
| thread synchronization | 344 |
| ......condition variables | 77 |
| ......mutex locks | 75 |
| ......mutex_init(9F) | 76 |
| ......per instance mutex | 95 |
| ......readers/writer locks | 77 |
| threads |
| ......preemption of | 74 |
| ......types of | 71 |
| timing routines | 349 |
U
| |
| uio(9S) data structure | 350 |
| unloading drivers |
| ......getting the module ID | 228 |
| untagged queuing | 303 |
| user threads | 71 |
| utility functions | 350 |
V
| |
| vectored interrupts | 107 |
| virtual addresses | 2 |
| virtual DMA | 122 |
| virtual memory |
| ......address spaces | 2 |
| ......memory management unit (MMU) | 2 |
| ......overview | 2 |
| VMEbus |
| ......address spaces | 20 |
| ......machine architecture | 18 |
|
|