Windows PowerShell command on Get-command mt-streams
MyWebUniversity

Manual Pages for UNIX Operating System command usage for man mt-streams

Kernel Functions for Drivers mt-streams(9F)

NAME

mt-streams - STREAMS multithreading

SYNOPSIS

#include

INTERFACE LEVEL

Solaris DDI specific (Solaris DDI).

DESCRIPTION

STREAMS drivers configure the degree of concurrency using

the cb_flag field in the cb_ops structure (see cb_ops(9S)).

The corresponding field for STREAMS modules is the f_flag in

the fmodsw structure.

For the purpose of restricting and controlling the con-

currency in drivers/modules, we define the concepts of inner and outer perimeters. A driver/module can be configured either to have no perimeters, to have only an inner or an

outer perimeter, or to have both an inner and an outer per-

imeter. Each perimeter acts as a readers-writers lock, that

is, there can be multiple concurrent readers or a single writer. Thus, each perimeter can be entered in two modes: shared (reader) or exclusive (writer). The mode depends on the perimeter configuration and can be different for the different STREAMS entry points ( open(9E), close(9E), put(9E), or srv(9E)). The concurrency for the different entry points is (unless specified otherwise) to enter with exclusive access at the inner perimeter (if present) and shared access at the outer perimeter (if present). The perimeter configuration consists of flags that define the presence and scope of the inner perimeter, the presence of the outer perimeter (which can only have one scope), and flags that modify the default concurrency for the different entry points.

All MT safe modules/drivers specify the D_MP flag.

Inner Perimeter Flags The inner perimeter presence and scope are controlled by the mutually exclusive flags:

D_MTPERQ The module/driver has an inner perime-

ter around each queue.

SunOS 5.11 Last change: 5 May 2009 1

Kernel Functions for Drivers mt-streams(9F)

D_MTQPAIR The module/driver has an inner perime-

ter around each read/write pair of queues.

D_MTPERMOD The module/driver has an inner perime-

ter that encloses all the module's/driver's queues.

None of the above The module/driver has no inner perime-

ter. Outer Perimeter Flags The outer perimeter presence is configured using:

D_MTOUTPERIM In addition to any inner perimeter, the

module/driver has an outer perimeter that encloses all the module's/driver's queues.

This can be combined with all the inner per-

imeter options except D_MTPERMOD.

Note that acquiring exclusive access at the outer perimeter

(that is, using qwriter(9F) with the PERIM_OUTER flag) can

incur significant performance penalties, which grow linearly with the number of open instances of the module or driver in the system. The default concurrency can be modified using:

D_MTPUTSHARED This flag modifies the default behavior

when put(9E) procedure are invoked so that the inner perimeter is entered shared instead of exclusively.

D_MTOCEXCL This flag modifies the default behavior

when open(9E) and close(9E) procedures are invoked so the outer perimeter is entered exclusively instead of shared. Note that drivers and modules using this

flag can cause significant system perfor-

mance degradation during stream open or close when many instances of the driver or module are in use simultaneously. For this reason, use of this flag is discouraged. Instead, since open(9E) and close(9E) both

SunOS 5.11 Last change: 5 May 2009 2

Kernel Functions for Drivers mt-streams(9F)

execute with user context, developers are

encouraged to use traditional synchroniza-

tion routines such as cv_wait_sig(9F) to

coordinate with other open instances of the module or driver.

The module/driver can use qwait(9F) or qwait_sig() in the

open(9E) and close(9E) procedures if it needs to wait "out-

side" the perimeters. The module/driver can use qwriter(9F) to upgrade the access at the inner or outer perimeter from shared to exclusive. The use and semantics of qprocson() and qprocsoff(9F) is independent of the inner and outer perimeters.

SEE ALSO

close(9E), open(9E), put(9E), srv(9E), qprocsoff(9F),

qprocson(9F), qwait(9F), qwriter(9F), cb_ops(9S)

STREAMS Programming Guide Writing Device Drivers

SunOS 5.11 Last change: 5 May 2009 3




Contact us      |      About us      |      Term of use      |       Copyright © 2000-2019 MyWebUniversity.com ™