|
|||
Part I Designing Device Drivers for the Solaris Platform 1. Overview of Solaris Device Drivers 2. Solaris Kernel and Device Tree 5. Managing Events and Queueing Tasks 7. Device Access: Programmed I/O 10. Mapping Device and Kernel Memory 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 Synchronous Data Transfers (Block Drivers) Asynchronous Data Transfers (Block Drivers) 18. SCSI Host Bus Adapter Drivers 19. Drivers for Network Devices Part III Building a Device Driver 21. Compiling, Loading, Packaging, and Testing Drivers 22. Debugging, Testing, and Tuning Device Drivers 23. Recommended Coding Practices B. Summary of Solaris DDI/DKI Services C. Making a Device Driver 64-Bit Ready |
dump() and print() Entry PointsThis section discusses the dump(9E) and print(9E) entry points. dump() Entry Point (Block Drivers)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:
The dump depends upon the existing driver working properly. print() Entry Point (Block Drivers)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); } |
||
|