STREAMS-UX Programmer's Guide (February 2007)
Appendix F
283
F Synchronization Levels
STREAMS/UX supports MP scalable drivers and modules. Modules and drivers need to select the level of
parallelism consistent with their use of shared data structures. STREAMS/UX allows the degree of
parallelism to be configured by providing the following levels of synchronization:
1. Queue level synchronization — SQLVL_QUEUE
2. Queue-pair level synchronization — SQLVL_QUEUEPAIR
3. Module level synchronization — SQLVL_MODULE
4. Elsewhere level synchronization — SQLVL_ELSEWHERE
5. Global level synchronization — SQLVL_GLOBAL
6. NOSYNC level synchronization — SQLVL_NOSYNC
HP-UX requires all modules and drivers to specify their synchronization level in the inst_sync_level field
in the streams_info_t structure.
Figure F-1, “Synchronization Levels,” shows the different synchronization levels.
Figure F-1 Synchronization Levels
Stream Head
Read QWrite Q
ECHO-A ECHO-B DLPI-A SAD-A
echo_rput
echo_rsrv
echo_wput
echo_wsrv
echo_rput
echo_rsrv
echo_wput
echo_wsrv
dipi_rput
dlpi_rsrv
dlpi_wput
dlpi_wsrv
sad_rput
sad_rsrv
sad_wput
sad_wsrv
Read QWrite Q Read QWrite Q Read QWrite Q
ECHO Driver DLPI Driver
SAD Driver
(Instance 1)
(Instance 1)
(Instance 2)(Instance 2)
User
Space
Kernel
Space
Stream Head Stream Head Stream Head