STREAMS/UX for the HP 9000 Reference Manual
72
STREAMS/UX Multiprocessor Support
Running Modules and Drivers in Uniprocessor Emulation Mode
emulation driver, the I/O system acquires the spl lock. Then if the interrupt
handler calls put, putnext, or streams_put, STREAMS/UX usually executes
the put routine on the ICS with the spl lock. Note that the STREAMS/UX
utilities do not acquire the spl lock. An MP scalable interrupt handler may
not be able to safely call put, putnext, or streams_put to enter a UP
emulation stream.
STREAMS/UX protects the various callback functions in different ways.
STREAMS/UX does not have to acquire the I/O semaphore or spl lock to
run esballoc free routines in UP emulation mode. The free routine will
automatically run in the same mode as the module which calls freeb. Also,
the HP-UX I/O system protects timeout callback routines by obtaining the
spl lock before running the routine.
Bufcall and weld callback functions are always run under UP emulation.
The STREAMS/UX memory and weld daemons always obtain the I/O
semaphore before running UP emulation or MP scalable callback routines.
This should not hurt the performance of MP scalable modules because weldq
and bufcall are not called very often.
Configuring Modules and Drivers for UP Emulation
Modules and drivers run in UP emulation mode by default. To configure a
module or driver to run in UP emulation mode, do not specify any MP flags.
The examples below show how to configure UP emulation modules and
drivers by creating a master file $DEVICE table entry or a module or driver
install function. See Chapter 5 for more information about configuring
modules and drivers.