Skip Navigation Links | |
Exit Print View | |
Writing Device Drivers Oracle Solaris 11.1 Information Library |
Part I Designing Device Drivers for the Oracle Solaris Platform
1. Overview of Oracle Solaris Device Drivers
2. Oracle Solaris Kernel and Device Tree
5. Managing Events and Queueing Tasks
7. Device Access: Programmed I/O
10. Mapping Device and Kernel Memory
13. Hardening Oracle Solaris Drivers
14. Layered Driver Interface (LDI)
Part II Designing Specific Kinds of Device Drivers
15. Drivers for Character Devices
Block Driver Structure Overview
Block Device Autoconfiguration
open() Entry Point (Block Drivers)
close() Entry Point (Block Drivers)
Synchronous Data Transfers (Block Drivers)
Asynchronous Data Transfers (Block Drivers)
Checking for Invalid buf Requests
Handling the Interrupting Device
18. SCSI Host Bus Adapter Drivers
19. Drivers for Network Devices
Part III Building a Device Driver
22. Compiling, Loading, Packaging, and Testing Drivers
23. Debugging, Testing, and Tuning Device Drivers
24. Recommended Coding Practices
B. Summary of Oracle Solaris DDI/DKI Services
C. Making a Device Driver 64-Bit Ready
This section discusses the dump(9E) and print(9E) entry points.
The dump(9E) entry point is used to copy a portion of virtual address space directly to the specified device in the case of a system failure. dump() is also used to copy the state of the kernel out to disk during a checkpoint operation. See the cpr(7) and dump(9E) man pages for more information. The entry point must be capable of performing this operation without the use of interrupts, because interrupts are disabled during the checkpoint operation.
int dump(dev_t dev, caddr_t addr, daddr_t blkno, int nblk)
where:
Device number of the device to receive the dump.
Base kernel virtual address at which to start the dump.
Block at which the dump is to start.
Number of blocks to dump.
The dump depends upon the existing driver working properly.
int print(dev_t dev, char *str)
The print(9E) entry point is called by the system to display a message about an exception that has been detected. print(9E) should call cmn_err(9F) to post the message to the console on behalf of the system. The following example demonstrates a typical print() entry point.
static int xxprint(dev_t dev, char *str) { cmn_err(CE_CONT, “xx: %s\n”, str); return (0); }