|
|
Character device drivers may transfer data between a user-level process and the device using any scheme other than the system buffer cache. Character drivers control devices such as network cards, terminal devices, printers, and specialized devices such as robots, medical devices, and retail sales devices.
On SCO OpenServer 5 and for DDI versions before version 8, character device drivers used the read(D2) and write(D2) entry point routines for doing the actual I/O transfer rather than using the strategy(D2) entry point routine used by block device drivers.
See the table in Intro(D2) for a listing of the entry point routines required in character drivers written for DDI versions prior to version 8.
Beginning with DDI 8, all drivers use the biostart(D2) entry point routine for I/O transfers, and there is no structural difference between block and character device drivers. The device special files or nodes in the /dev directory are still marked as block or character, however.
Character driver entry-point routines Section D2oddi manual pages contains manual pages for the ODDI entry point routines. The following table summarizes the entry points used in ODDI character drivers.
Type | Routine | Purpose |
entry point | open(D2oddi) | start access to a character device |
close(D2oddi) | end access to a character device | |
read(D2oddi) | transfer data from internal buffers to user space | |
write(D2oddi) | transfer data from user space to internal buffers | |
ioctl(D2oddi) | perform I/O control commands | |
device-specific | init(D2oddi) | initialize the device when it is booted |
halt(D2oddi) | executed when the computer is shut down | |
intr(D2oddi) | executed when an interrupt occurs | |
start(D2oddi) | interact directly with the device | |
poll(D2oddi) | executed on each clock tick | |
proc(D2oddi) | perform device-dependent line discipline I/O | |
probe(D2oddi) | defines the device for the Device Query Interface |
For more information about writing SCO OpenServer 5 character device drivers, see Chapter 3 of Peter Kettle and Steve Statler, Writing Device Drivers for SCO UNIX.