Links

GitHub

Open HUB

Quick Links

Download

STREAMS

SIGTRAN

SS7

Hardware

SCTP

Related

Package

Papers

Manual

Manual Pages

References

Conformance

Performance

Design

Status

FAQ

OS

LDL

strinet

strsctp

DDI/DKI

STREAMS

Kernel

XTI

SOCKSYS

Sockets

TPI

NPI

DLPI

CDI

NLI

LLI

WAN

Man Pages

Applications

SS7 Stack

ISDN Stack

SIGTRAN Stack

VoIP Stack

MG Stack

SS7/ISDN Devices

IP Transport

Embedded Systems

OS

Documentation

FAQ

SIGTRAN

Design

Conformance

Performance

References

Man Pages

Manuals

Papers

Home

Overview

Status

Documentation

Resources

About

News

Linux Fast-STREAMS

Description: OpenSS7 Project Manual Pages Operating System


STREAMS

Section: Linux Fast-STREAMS DDI/DKI (9)
Updated: 2008-10-31
Index Return to Main Contents

NAME

STREAMS - introduction to STREAMS kernel functions

SYNOPSIS

#define _AIX_SOURCE
#define _HPUX_SOURCE
#define _OSF_SOURCE
#define _SUN_SOURCE
#define _UW7_SOURCE
#define _LIS_SOURCE

#include <sys/dki.h>
#include <sys/stropts.h>
#include <sys/stream.h>
#include <sys/strconf.h>
#include <sys/kmem.h>
#include <sys/cmn_err.h>
#include <sys/ddi.h>

INTERFACE

STREAMS.

OVERVIEW

Background

STREAMS derives from Dennis Ritchie's original paper[1], was incorporated into the UNIX® System V Release 3[2] operating system, replaced the terminal input-output subsystem, pipes and FIFOs in UNIX® System V Release 4[3], and was improved in the USL release of the UNIX® System V Release 4.2[4] operating system.

Today, STREAMS is a part of every major branded UNIX® variant, such as AIX®[5], HP-UX®[6], IRIX®[7], MacOT®[8], OSF/1®[9], Solaris®[10], SUPER-UX®[11], UnixWare®[12], UXP/V®[13], and, including many UNIX-like operating systems and popular embedded RTOS, but with the notable exception of Berkley System Distribution releases, variants and offshoots, and Linux.

What is STREAMS?

STREAMS is flexible framework for communication between a user level process and a kernel resident driver. It encompasses a set of kernel system calls providing a user-kernel interface that is backward compatible with the traditional character device driver interface, as well as a set of STREAMS driver and module entry points forming a driver-kernel interface. STREAMS also provides a rich set of kernel utility functions for the development and implementation of kernel-resident drivers and modules. STREAMS prompted the specification of the DDI/DKI which is an architecture independent driver-kernel interface that provides a standardized set of kernel functions (beyond just STREAMS) for the development of device and software drivers.

STREAMS provides a reconfigurable full-duplex communications path between a user level process and kernel resident driver, termed a Stream. Modules can be inserted in the path between the user and driver under user level control. Streams can be linked across multiplexers under user control to form complex (yet reconfigurable) topologies of user level processes and drivers.

Communication of control and data information along a Stream is accomplished by message passing. There is no direct function call interface between between components of a Stream. A Stream exists within the STREAMS framework inside the kernel and extend from the user-kernel interface to the kernel driver interface. Each component of a Stream consists of a pair of queues used to pass messages in the upstream direction to the kernel-user interface; or downstream, the kernel-driver interface.

At the kernel-user end of the the Stream is a component called the Stream head. As with all components of the Stream, the Stream head consists of a queue pair and a specialized set of procedures. The Stream head procedures are responsible for converting between the system call interface presented to users and the message passing mechanism within the Stream.

At the kernel-driver end of the Stream is the Stream end. The Stream end also contains a queue pair and a set of procedures. The Stream end (or simply driver) procedures are responsible for converting between the message passing mechanism within the Stream the actions and events of a hardware (or pseudo-) device.

Intermediate components within the Stream are call Modules. Modules also consist of a queue pair for passing messages upstream and downstream, as well as a set of procedures for processing messages. Modules can be pushed onto the module stack between the Stream head and Stream end using a set of standardized input-output control commands.

In support of topologies more complex that these simple linear segments, STREAMS also provides a specialized Stream end (driver) called a Multiplexing Driver. A Multiplexing driver has the ability to open multiple Streams to its upper interface (multiplexer) as well as linking multiple Streams beneath its lower interface (multiplexer). Again, a standardized set of input-output control provide the user with the ability to configure a Multiplexing Driver.

These STREAMS components, and the elements of the user-kernel and kernel-driver interface are detailed in the manual pages. The sections that follow provide a road map to the rest of the manual pages in the Linux Fast-STREAMS package.

Why STREAMS?

With the ability to open multiple Streams to a driver, push and pop modules to and from the module stack on a Stream, and to link any Stream under a multiplexing driver---all under user control using standardized input-output controls---allows STREAMS to configure complex topologies to form protocol stacks.

Almost all specialized standard telecommunications software developed since 1990 was developed to run on STREAMS. This is for several reasons:

*
Since 1990, STREAMS and the associated DDI/DKI has been, and remains, the only way to incorporate OEM protocol stacks into mainstream UNIX® system kernels.
*
The original UNIX System Laboratories (later X/Open then later the OpenGroup) support for ITU-T developed OSI protocols, makes STREAMS amenable to a open model for development of ITU-T protocols. (ITU-T, formerly CCITT, is the International Telecommunications Union --- Telephone Sector responsible for international telephone standards, and original developers of the OSI model.)

As a result, there is a significant body of commercial software implementing telecommunications protocol stacks that was developed, tested, validated, conformance tested, field verified, to run on STREAMS: and are still running on STREAMS.

The cost of reimplementation, retesting, revalidation, redoing conformance testing, and field re-verification, would likely be prohibitive: after all, the point of Linux is reducing cost, is it not?

Why STREAMS for Linux?

The Linux kernel was not developed with STREAMS in mind. For TCP/IP networking, Linux originally followed in the footsteps of the BSD NET4 release. Currently, the implementation of TCP/IP in the Linux kernel has long departed from the classical BSD organization and exhibits characteristics unique to the GNU/Linux system. For character devices and terminal input-output, Linux follows closely the SVR 3[2] pre-STREAMS approach to pipes, FIFOs and terminal subsystem. The terminal subsystem implementation, too, has become unique to GNU/Linux.

Therefore, from the perspective of TCP/IP networking and Terminal I/O, there would be little reason to provide STREAMS for Linux. That is, if it were not for the body of software supporting OSI and Telecommunications protocols based solely on STREAMS, for which Linux has little or no support.

So, the answer to the question, "Why STREAMS for Linux?" is: so that a GNU/Linux platform can enjoy the same wealth of Telecommunications and OSI protocol stacks otherwise only available to big-iron UNIX®. Without STREAMS, Linux is probably just another BSD, and probably not a very good one.

History of STREAMS for Linux

In the mid-90's, GCOM, Inc. embarked on development on an open source implementation of STREAMS called Linux STREAMS (LiS), likely driven by its use for porting existing OSI protocol stacks to Linux. In 2000, The OpenSS7 Project abandoned using the Linux networking model for implementation of the Signalling System No. 7 protocol (primarily due to the lack of support for the full BSD networking model under Linux) and switched to using STREAMS as the basis for all future development. The GCOM LiS release (2.2 at the time) was used as the STREAMS package. Over the span of the next 5 years, (and not surprisingly given the body of software), almost all Signalling System No. 7 products released on Linux used LiS for STREAMS. In 2005, Dave Grothe (the G in GCOM) announced that he would no longer be maintaining or developing LiS subsequent to the 2.18.0 release, stranding many users of the package.

Later in 2005, after briefly maintaining two GPL'ed releases of LiS, (2.18.1 and 2.18.2), The OpenSS7 Project released (after two years of development) the streams-0.7a.4 package: a re-implementation of SVR 4.2 STREAMS with compatibility modules for all major UNIX® releases, called Linux Fast-STREAMS. Linux Fast-STREAMS was intended as a POSIX/SUSv3 XSR conforming, high performance, production grade, replacement for LiS, suitable for mainline Linux adoption, and a better foundation on which to base SIGTRAN, VoIP, ISDN and SS7 protocol stacks developed under The OpenSS7 Project, as well as a better foundation for porting commercial UNIX® OEM implementations to Linux. It is the streams-0.9.2.4 package that contains the documentation that you are reading now.

Why Fast?

After working with LiS releases for over 3 years, in late 2003, The OpenSS7 Project decided to begin implementation of a replacement for LiS, because of a number of shortcoming of the LiS releases:

a)
unsuitable for mainline kernel adoption due to coding style and organization;
b)
poorly adapted to distribution production kernels;
c)
is unsuitable for packaging and repeatability;
d)
portability objective unsuitable for mainline kernel adoption;
e)
ports from the same baseline obfuscate the code;
f)
performs poorly due to portability and coding style;
g)
code bloat and over-sized memory footprint;
h)
redundant debug statements obscuring defects and obfuscating code;
i)
overuse of sempahores;
j)
contains serious races and not suitable for threaded applications;
k)
does not conform to mainstream UNIX® implementations;
l)
does not conform well to POSIX or any release of the Single UNIX Specification;
m)
limited set of standard drivers and modules;
n)
limited set of diagnostic and administrative utilities;
o)
limited test programs;
p)
poorly documented.

The replacement, named Linux Fast-STREAMS, was to correct all of these difficulties, and, by the initial streams-0.7a.4 release, is:

a)
completely Lindented and follows kernel coding practises;
b)
automatically adapts to production kernels with autoconf;
c)
packages itself into LSB compliant RPMs and DEBs;
d)
designed and implemented specifically for GNU/Linux;
e)
no ports considered;
f)
order of magnitude faster performance;
g)
order of magnitude smaller memory footprint;
h)
proper programming by assertion;
i)
proper use of lightweight spinlocks;
j)
race free locking strategies and synchronization;
k)
compatible with all mainstream UNIX® implementations;
l)
conforms to POSIX/SUSv3 XSR;
m)
complete set of standard drivers and modules;
n)
complete set of diagnostic and administrative utilities;
o)
integrated set of conformance testsuites;
p)
fully documented.

Many specific difficulties encountered with LiS not repeated by Linux Fast-STREAMS are contained in the COMPATIBILITY section of most manual pages.

DESCRIPTION

Header Files

<sys/dki.h> -kernel definitions
<sys/stropts.h> -user STREAMS ioctl include file
<sys/stream.h> -STREAMS structures and utilities
<sys/strconf.h> -STREAMS module configuration
<sys/kmem.h> -STREAMS aware memory allocators
<sys/cmn_err.h> -SVR4 style printk(9).
<sys/ddi.h> -DDI functions. See DDI(9)
for more information.

Common Drivers

pipe(4)-STREAMS-based software pipes
fifo(4)-STREAMS-based first-in first-out special file, named pipe
clone(4)-the STREAMS clone driver
sad(4)-the STREAMS administrative driver
socksys(4)-STREAMS XTI/TLI access to sockets.
ticlts(4)-STREAMS XTI/TLI connectionless local transport provider
ticots(4)-STREAMS XTI/TLI connection-oriented local transport provider
ticotsord(4)-STREAMS XTI/TLI connection-oriented orderly release local transport provider
spx(4)-STREAMS bi-directional pipe device

Common Modules

pipemod(4)-STREAMS module supporting flush handling in STREAMS FIFOs and pipes
ldl(4)-a STREAMS DLPI interface to Linux network devices
connld(4)-STREAMS module supporting the generation of unique new STREAMS pipes from
an existing pipe end
timod(4)-a STREAMS XTI/TLI compatibility interface
tirdwr(4)-a STREAMS XTI/TLI read write compatibility interface
sockmod(4)-a STREAMS TPI to sockets compatibility module

System Calls

getmsg(2)-get next message from a STREAMS character device
getpmsg(2s)-get next message from a STREAMS character device
putmsg(2)-put a message to a STREAMS character device
putpmsg(2s)-put a message to a STREAMS character device
poll(2)-wait for some event on a STREAMS character device
fattach(3)-attach a STREAMS open file to a path name in the file system
fdetach(3)-detach a STREAMS file from a path name in the file system
isastream(2)-determine whether an open file is a STREAMS character device
open(2)-open and possibly create a file or device
close(2)-close a file descriptor
read(2)-read from a file descriptor
readv(2)-read from a file descriptor
write(2)-write to a file descriptor
writev(2)-write to a file descriptor
pipe(2)-create a STREAMS pipe
ioctl(2)-control device
streamio(7)-STREAMS ioctl commands

STREAMS Module Entry Points

qopen(9)-call a STREAMS driver or module open routine
qclose(9)-closes a STREAMS driver or module
putp(9)-invokes a STREAMS message queue put procedure
srvp(9)-invokes a STREAMS message queue service procedure

STREAMS Structures

cdevsw(9)-character device switch table entry
cred_t(9)-SVR4-style credentials
datab(9)-STREAMS data block
fmodsw(9)-module switch table entry
module_info(9)-STREAMS module information
msgb(9)-STREAMS message block
qband(9)-STREAMS queue band structure
qinit(9)-STREAMS queue initialization structures
queinfo(9)-STREAMS queue info structure
queue(9)-STREAMS queue structure
streamtab(9)-STREAMS stream table structure

Module and Driver Registration Functions

autopush_add(9)-add STREAMS autopush configuration
autopush_del(9)-delete STREAMS autopush configuration
autopush_find(9)-find STREAMS autopush configuration
autopush_vml(9)-verify a STREAMS module list
getadmin(9)-get the administration function pointer for a STREAMS module
getmid(9)-get the STREAMS module id for a name
register_inode(9)-register a STREAMS special file system node
register_inode_major(9)-register a Stream head to a major device number
register_inode_minor(9)-register a Stream head to a minor device number
register_strdev(9)-register a STREAMS device
register_strdev_major(9)-register a STREAMS device to a major device number
register_strdev_minor(9)-register a STREAMS device to a minor device number
register_strmod(9)-register a STREAMS module to a module id
unregister_inode(9)-unregister a STREAMS special file system node
unregister_inode_major(9)-unregister a Stream head from a major device number
unregister_inode_minor(9)-unregister a Stream head from a minor device number
unregister_strdev(9)-unregister a STREAMS device
unregister_strdev_major(9)-unregister a STREAMS device from a major device number
unregister_strdev_minor(9)-unregister a STREAMS device from a minor device number
unregister_strmod(9)-unregister a STREAMS module from a module id

Message Handling Functions

adjmsg(9)-trim bytes from the front or back of a STREAMS message
allocb(9)-allocate a STREAMS message and data block
bufcall(9)-install a STREAMS buffer callback
copyb(9)-copy a STREAMS message block
copymsg(9)-copy a STREAMS message
datamsg(9)-tests a STREAMS message type for data
dupb(9)-duplicate a STREAMS message block
dupmsg(9)-duplicate a STREAMS message
esballoc(9)-allocate a STREAMS message and data block with a caller supplied data buffer
freeb(9)-frees a STREAMS message block
freemsg(9)-frees a STREAMS message
linkb(9)-link a message block to a STREAMS message
msgdsize(9)-calculate the size of the data in a STREAMS message
msgpullup(9)-pull up bytes in a STREAMS message
pcmsg(9)-determine priority of a STREAMS message
pullupmsg(9)-pull up the bytes in a STREAMS message
rmvb(9)-remove a message block from a STREAMS message
testb(9)-test is a STREAMS message can be allocated
unbufcall(9)-removes a STREAMS buffer callback
unlinkb(9)-unlink a message block from a STREAMS message

Queue Handling Functions

UP Queue Handling Functions

backq(9)-find the upstream or downstream STREAMS queue
bcanput(9)-test flow control on a STREAMS message queue
canenable(9)-test whether a STREAMS message queue can be scheduled
canput(9)-test flow control on a STREAMS message queue
enableok(9)-allows a STREAMS message queue to be scheduled
flushband(9)-flushes band STREAMS messages from a message queue
flushq(9)-flushes messages from a STREAMS message queue
getq(9)-gets a message from a STREAMS message queue
insq(9)-inserts a message into a STREAMS message queue
noenable(9)-disables a STREAMS message queue from being scheduled
OTHERQ(9)-return the other queue of a STREAMS queue pair
putbq(9)-puts a message back on a STREAMS message queue
putctl(9)-puts a control message on a STREAMS message queue
putctl1(9)-puts a 1 byte control message on a STREAMS message queue
putq(9)-puts a message on a STREAMS message queue
qenable(9)-schedules a STREAMS message queue service routine
qreply(9)-replies to a message from a STREAMS message queue
qsize(9)-return the number of messages on a queue
RD(9)-return the read queue of a STREAMS queue pair
rmvq(9)-remove a message from a STREAMS message queue
SAMESTR(9)-test for STREAMS pipe or FIFO
WR(9)-return the write queue of a STREAMS queue pair

MP Queue Handling Functions

bcanputnext(9)-test flow control on a STREAMS message queue
canputnext(9)-test flow control on a STREAMS message queue
freezestr(9)-freeze a STREAMS stream
put(9)-invokes a STREAMS message queue put procedure
putnext(9)-puts a message on the next STREAMS message queue
putnextctl1(9)-puts a 1 byte control message on the next STREAMS message queue
putnextctl(9)-puts a control message on the next STREAMS message queue
qprocsoff(9)-disables STREAMS message queue processing for multi-processing
qprocson(9)-enables a STREAMS message queue for multi-processing
strqget(9)-gets information about a STREAMS message queue
strqset(9)-sets attributes of a STREAMS message queue
unfreezestr(9)-thaw a STREAMS stream

Miscellaneous Functions

kmem_alloc(9)-allocate kernel memory
kmem_free(9)-deallocates kernel memory
kmem_zalloc(9)-allocate kernel memory
cmn_err(9)-print a kernel command error
bcopy(9)-copy byte strings
bzero(9)-zero a byte string
copyin(9)-copy bytes from user to kernel
copyout(9)-copy bytes from kernel to user
delay(9)-delay for an interval
drv_getparm(9)-get kernel parameters
drv_hztomsec(9)-convert clock ticks to milliseconds
drv_hztousec(9)-convert clock ticks to microseconds
drv_msectohz(9)-convert milliseconds to clock ticks
drv_priv(9)-determine if user is privileged
drv_usectohz(9)-convert microseconds to clock ticks
drv_usecwait(9)-wait for a specified number of microseconds
max(9)-determine the maximum of two variables
min(9)-determine the minimum of two variables
getmajor(9)-get the major device number for a device
getminor(9)-get the minor device number for a device
makedevice(9)-create a device from major and minor device numbers
mknod(9)-create a special or ordinary file
mount(9)-mount a file system
strlog(9)-pass a message to the STREAMS logger
timeout(9)-start a timer
umount(9)-unmount a file system
unlink(9)-remove a file
untimeout(9)-stop a timer

EXTENSIONS

Common Extensions

Linux Fast-STREAMS
provides the following more common extensions to SVR 4.2 MP DDI/DKI[14]:

linkmsg(9)-link a message block to a STREAMS message
putctl2(9)-puts a 2 byte control message on a STREAMS message queue
putnextctl2(9)-puts a 2 byte control message on the next STREAMS message queue
weldq(9)-weld two pairs of STREAMS queues together
unweldq(9)-weld two pairs of STREAMS queues together

Linux Fast-STREAMS Extensions

Linux Fast-STREAMS
provides access to the SVR 4[3] internal functions listed below:

allocq(9)-allocate a STREAMS queue pair
bcanget(9)-test retrieval on a STREAMS message queue
canget(9)-test retrieval on a STREAMS message queue
freeq(9)-deallocate a STREAMS queue pair
qattach(9)-attach a module onto a STREAMS file
qclose(9)-closes a STREAMS driver or module
qdetach(9)-detach a module from a STREAMS file
qopen(9)-call a STREAMS driver or module open routine
setq(9)-assign a queue pair to a STREAMS module

Linux Fast-STREAMS Extensions from LiS

appq(9)-append a STREAMS message after another
esbbcall(9)-installs a buffer callback for an extended STREAMS message block
isdatablk(9)-tests a STREAMS data block for data type
isdatamsg(9)-tests a STREAMS data block for data type
kmem_zalloc_node(9)-allocate kernel memory
msgsize(9)-calculate the size of the message blocks in a STREAMS message
qcountstrm(9)-return the downstream message count on a stream
xmsgsize(9)-calculate the size of message blocks in a STREAMS message

COMPATIBILITY

SVR 4.2 MP DDI/DKI Compatibility Functions

dtimeout(9)-perform a timeout at an interrupt level on a specified processor;
itimeout(9)-perform a timeout at an interrupt level;
LOCK(9)-lock a basic lock;
LOCK_ALLOC(9)-allocate a basic lock;
LOCK_DEALLOC(9)-deallocate a basic lock;
LOCK_OWNED(9)-
major(9)-get the internal major number of a device;
makedev(9)-make a device number from internal major and minor device numbers;
minor(9)- get the internal minor number of a device;
MPSTR_QLOCK(9)-
lock a STREAMS queue for mutual exclusion
MPSTR_QRELE(9)-
release lock on a STREAMS queue
MPSTR_STPLOCK(9)-
lock STREAMS stream head in multi-threaded code
MPSTR_STPRELE(9)-
release STREAMS stream head locked by MPSTR_STPLOCK(9)
RW_ALLOC(9)-
RW_DEALLOC(9)-
RW_RDLOCK(9)-
RW_TRYRDLOCK(9)-
RW_TRYWRLOCK(9)-
RW_UNLOCK(9)-
RW_WRLOCK(9)-
sleep(9)-put a process to sleep;
SLEEP_ALLOC(9)-
SLEEP_DEALLOC(9)-
SLEEP_LOCK(9)-
SLEEP_LOCKAVAIL(9)-
SLEEP_LOCKOWNED(9)-
SLEEP_LOCK_SIG(9)-
SLEEP_TRYLOCK(9)-
SLEEP_UNLOCK(9)-
spl0(9)-set priority level 0;
spl1(9)-set priority level 1;
spl2(9)-set priority level 2;
spl3(9)-set priority level 3;
spl4(9)-set priority level 4;
spl5(9)-set priority level 5;
spl6(9)-set priority level 6;
spl7(9)-set priority level 7;
spl(9)-set priority level;
splbase(9)-set priority level;
spltimeout(9)-set priority level;
spldisk(9)-set priority level;
splstr(9)-set priority level;
spltty(9)-set priority level;
splhi(9)-set priority level;
splx(9)-set priority level x;
SV_ALLOC(9)-allocate a basic condition variable;
SV_BROADCAST(9)-broadcast a basic condition variable;
SV_DEALLOC(9)-deallocate a basic condition variable;
SV_SIGNAL(9)-signal a basic condition variable;
SV_WAIT(9)-wait on a basic condition variable;
SV_WAIT_SIG(9)-interruptible wait on a basic condition variable;
TRYLOCK(9)-try to lock a basic lock;
UNLOCK(9)-unlock a basic lock;
vtop(9)-convert virtual to physical address;
wakeup(9)-wake a process;

AIX® 5L Version 5.1 Compatibility Functions

mi_bufcall(9)-reliable alternative to bufcall(9)
mi_close_comm(9)-STREAMS common minor device close utility
mi_next_ptr(9)-STREAMS minor device list traversal
mi_open_comm(9)-STREAMS common minor device open utility
putctl2(9)-puts a 2 byte control message on a STREAMS message queue
splstr(9)-
splx(9)-
str_install(9)-
unweldq(9)-weld two pairs of STREAMS queues together
wantio(9)-perform direct I/O from a STREAMS driver
wantmsg(9)-provide a filter of wanted messages for a STREAMS module
weldq(9)-weld two pairs of STREAMS queues together

HP-UX® 11.0i v2 Compatibility Functions

putctl2(9)-puts a 2 byte control message on a STREAMS message queue
putnextctl2(9)-puts a 2 byte control message on the downstream STREAMS message queue
str_install(9)-
str_uninstall(9)-
streams_get_sleep_lock(9)-
streams_mpsleep(9)-
streams_put(9)-
unweldq(9)-weld two pairs of STREAMS queues together
weldq(9)-weld two pairs of STREAMS queues together

OSF/1 1.2---Digial UNIX® Compatibility Functions

lbolt(9)-
puthere(9)-invokes a STREAMS message queue put procedure
streams_open_comm(9)-
streams_open_ocomm(9)-
streams_close_comm(9)-
strmod_add(9)-
strmod_del(9)-
time(9)-
unweldq(9)-weld two pairs of STREAMS queues together
weldq(9)-weld two pairs of STREAMS queues together

UnixWare® 7.1.3 (OpenUnix 8) Compatibility Functions

allocb_physreq(9)-allocate a STREAMS message and data block
ATOMIC_INT_ADD(9)-
ATOMIC_INT_ALLOC(9)-
ATOMIC_INT_DEALLOC(9)-
ATOMIC_INT_DECR(9)-
ATOMIC_INT_INCR(9)-
ATOMIC_INT_INIT(9)-
ATOMIC_INT_READ(9)-
ATOMIC_INT_SUB(9)-
ATOMIC_INT_WRITE(9)-
emajor(9)-
eminor(9)-
etoimajor(9)-
getemajor(9)-get external major device number
geteminor(9)-get external minor device number
itoemajor(9)-
msgphysreq(9)-physical alignment request structure
msgpullup_physreq(9)-pull up bytes in a STREAMS message with physical requirements
msgscgth(9)-message scatter-gather structure
printf(9)-
strioccall(9)-

Solaris® 9/SunOS 5.9 Compatibility Functions

DB_BASE(9)-
DB_LIM(9)-
DB_REF(9)-
DB_TYPE(9)-
ddi_create_minor_node(9)-
ddi_driver_major(9)-
ddi_driver_name(9)-
ddi_get_cred(9)-
ddi_getiminor(9)-
ddi_get_instance(9)-
ddi_get_lbolt(9)-
ddi_get_pid(9)-
ddi_get_soft_state(9)-
ddi_get_time(9)-
ddi_remove_minor_node(9)-
ddi_removing_power(9)-
ddi_soft_state(9)-
ddi_soft_state_fini(9)-
ddi_soft_state_free(9)-
ddi_soft_state_init(9)-
ddi_soft_state_zalloc(9)-
ddi_umem_alloc(9)-
ddi_umem_free(9)-
freezestr(9)-
MBLKHEAD(9)-
MBLKIN(9)-
MBLKL(9)-
MBLKSIZE(9)-
MBLKTAIL(9)-
mcopyin(9)-
mcopymsg(9)-
mcopyout(9)-
merror(9)-
mexchange(9)-
mexpandb(9)-
mioc2ack(9)-
miocack(9)-
miocnak(9)-
miocpullup(9)-
mod_info(9)-
mod_install(9)-
mod_remove(9)-
mod_strmops(9)-
nochpoll(9)-
nodev(9)-
nulldev(9)-
OFFSET(9)-
qbufcall(9)-install a STREAMS synchronous buffer callback
qtimeout(9)-
queclass(9)-return the class of a message
qunbufcall(9)-cancel a STREAMS synchronous buffer callback
quntimeout(9)-
qwait(9)-wait for a queue procedure to execute
qwait_sig(9)-wait for a queue procedure to execute or signal
qwriter(9)-
unfreezestr(9)-

MacOT 1.5r2 Compatibility Functions

mi_bufcall(9)-
drv_priv(9)-
esballoca(9)-
mpnotify(9)-
putctl2(9)-
puthere(9)-
mi_allocq(9)-
mi_bcmp(9)-
mi_bufcall(9)-
mi_close_comm(9)-
mi_close_detached(9)-
mi_copy_done(9)-
mi_copyin(9)-
mi_copyout(9)-
mi_copyout_alloc(9)-
mi_copy_set_rval(9)-
mi_copy_state(9)-
mi_detach(9)-
mi_freeq(9)-
mi_next_ptr(9)-
mi_offset_param(9)-
mi_offset_paramc(9)-
mi_open_comm(9)-
mi_open_detached(9)-
mi_prev_ptr(9)-
mi_reallocb(9)-
mi_reuse_proto(9)-
mi_set_sth_hiwat(9)-
mi_set_sth_lowat(9)-
mi_set_sth_maxblk(9)-
mi_set_sth_wroff(9)-
mi_sprintf(9)-
mi_timer(9)-
mi_timer_alloc(9)-
mi_timer_cancel(9)-
mi_timer_free(9)-
mi_timer_q_switch(9)-
mi_timer_valid(9)-
mps_become_writer(9)-
mps_intr_disable(9)-
mps_intr_enable(9)-

LiS 2.16 Compatibility Functions

lis_register_strdev(9lis)-
lis_register_strmod(9lis)-
lis_unregister_strdev(9lis)-
lis_unregister_strmod(9lis)-

LiS 2.16 Compatibility Functions

lis_adjmsg(9)-trim bytes from the front or back of a STREAMS message
lis_allocb(9)-allocate a STREAMS message and data block
lis_allocb_physreq(9)-allocate a STREAMS message and data block
lis_allocq(9)-allocate a STREAMS queue pair
lis_appq(9)-append a STREAMS message after another
lis_backq(9)-find the upstream or downstream STREAMS queue
lis_bcanput(9)-test flow control on a STREAMS message queue
lis_bcanputnext(9)-test flow control on a STREAMS message queue
lis_bcopy(9)-copy byte strings
lis_bufcall(9)-install a STREAMS buffer callback
lis_bzero(9)-zero a byte string
lis_canenable(9)-test whether a STREAMS message queue can be scheduled
lis_canput(9)-test flow control on a STREAMS message queue
lis_canputnext(9)-test flow control on a STREAMS message queue
lis_cmn_err(9)-print a kernel command error
lis_copyb(9)-copy a STREAMS message block
lis_copymsg(9)-copy a STREAMS message
lis_datamsg(9)-tests a STREAMS message type for data
lis_date(9)-the version and release date of STREAMS
lis_dupb(9)-duplicate a STREAMS message block
lis_dupmsg(9)-duplicate a STREAMS message
lis_enableok(9)-allows a STREAMS message queue to be scheduled
lis_esballoc(9)-allocate a STREAMS message and data block with a caller supplied data buffer
lis_esbbcall(9)-installs a buffer callback for an extended STREAMS message block
lis_find_strdev(9)-finds a streamtab entry for a device
lis_flushband(9)-flushes band STREAMS messages from a message queue
lis_flushq(9)-flushes messages from a STREAMS message queue
lis_freeb(9)-frees a STREAMS message block
lis_freemsg(9)-frees a STREAMS message
lis_freeq(9)-deallocate a STREAMS queue pair
lis_getq(9)-gets a message from a STREAMS message queue
lis_insq(9)-inserts a message into a STREAMS message queue
lis_isdatablk(9)-tests a STREAMS data block for data type
lis_isdatamsg(9)-tests a STREAMS data block for data type
lis_linkb(9)-link a message block to a STREAMS message
lis_mknod(9)-create a special or ordinary file
lis_mount(9)-mount a file system
lis_msgdsize(9)-calculate the size of the data in a STREAMS message
lis_msgpullup(9)-pull up bytes in a STREAMS message
lis_msgsize(9)-calculate the size of message blocks in a STREAMS message
lis_noenable(9)-disables a STREAMS message queue from being scheduled
lis_OTHER(9)-return the other queue of a STREAMS queue pair
lis_OTHERQ(9)-return the other queue of a STREAMS queue pair
lis_pullupmsg(9)-pull up the bytes in a STREAMS message
lis_putbq(9)-puts a message back on a STREAMS message queue
lis_putctl1(9)-puts a 1 byte control message on a STREAMS message queue
lis_putctl(9)-puts a control message on a STREAMS message queue
lis_putnext(9)-puts a message on the downstream STREAMS message queue
lis_putnextctl1(9)-puts a 1 byte control message on the downstream STREAMS message queue
lis_putnextctl(9)-puts a control message on the downstream STREAMS message queue
lis_putq(9)-puts a message on a STREAMS message queue
lis_qattach(9)-attach a module onto a STREAMS file
lis_qclose(9)-closes a STREAMS driver or module
lis_qdetach(9)-detach a module from a STREAMS file
lis_qenable(9)-schedules a STREAMS message queue service routine
lis_qopen(9)-call a STREAMS driver or module open routine
lis_qprocsoff(9)-disables STREAMS message queue processing for multi-processing
lis_qprocson(9)-enables a STREAMS message queue for multi-processing
lis_qreply(9)-replies to a message from a STREAMS message queue
lis_qsize(9)-return the number of messages on a queue
lis_RD(9)-return the read queue of a STREAMS queue pair
lis_register_strdev(9)-register a STREAMS device
lis_register_strmod(9)-register a STREAMS module
lis_rmvb(9)-remove a message block from a STREAMS message
lis_rmvq(9)-remove a message from a STREAMS message queue
lis_safe_canenable(9)-test whether a STREAMS message queue can be scheduled
lis_safe_enableok(9)-allows a STREAMS message queue to be scheduled
lis_safe_noenable(9)-disables a STREAMS message queue from being scheduled
lis_safe_OTHERQ(9)-return the other queue of a STREAMS queue pair
lis_safe_putnext(9)-puts a message on the downstream STREAMS message queue
lis_safe_qreply(9)-replies to a message from a STREAMS message queue
lis_safe_RD(9)-return the read queue of a STREAMS queue pair
lis_safe_SAMESTR(9)-test for STREAMS pipe or FIFO
lis_safe_WR(9)-return the write queue of a STREAMS queue pair
lis_SAMESTR(9)-test for STREAMS pipe or FIFO
lis_strqget(9)-gets information about a STREAMS message queue
lis_strqset(9)-sets attributes of a STREAMS message queue
lis_testb(9)-test is a STREAMS message can be allocated
lis_timeout(9)-start a timer
lis_umount2(9)-unmount a file system
lis_umount(9)-unmount a file system
lis_unbufcall(9)-removes a STREAMS buffer callback
lis_unlink(9)-remove a file
lis_unlinkb(9)-unlink a message block from a STREAMS message
lis_unregister_strdev(9)-unregister a STREAMS device
lis_unregister_strmod(9)-deregister a STREAMS module
lis_untimeout(9)-stop a timer
lis_version(9)-the version and release date of STREAMS
lis_WR(9)-return the write queue of a STREAMS queue pair
lis_xmsgsize(9)-calculate the size of the message blocks in a STREAMS message

Compatibility


Most common compatibility functions:

UNIX® System V Release 4 STREAMS Functions:

Following are the UNIX® System V Release 4.0 STREAMS functions and their documented support in the various implementations with which Linux Fast-STREAMS is compatible. Linux Fast-STREAMS implements all of these functions in the core streams kernel module.


Function/Macro SecLfSAIXHUXMOTOSFSGISunSUXUW7UXPLiS

adjmsg (9)yesyesyesyesyesyesyesyesyesyesyesallocb :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesbackq :(9):yes:yes:yes:yes:yes: - :yes: - :yes:yes:yesbcanput :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesbufcall :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yescanenable :(9):yes: - : - : - :yes: - :yes: - : - : - :yescanput :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yescopyb :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yescopymsg :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesdatamsg :(9):yes:yes:yes: - :yes:yes:yes:yes:yes:yes:yesdupb :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesdupmsg :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesenableok :(9):yes:yes:yes: - :yes:yes:yes:yes:yes:yes:yesesballoc :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesesbbcall :(9):yes: - :yes:yes: - :yes:yes:yes:yes: - :yesflushband :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesflushq :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesfreeb :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesfreemsg :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesgetadmin :(9):yes:yes:yes:yes:yes: - : - : - :yes:yes:lfsgetmid :(9):yes:yes:yes:yes:yes: - : - : - :yes:yes:lfsgetq :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesinsq :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yeslinkb :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesmsgdsize :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesnoenable :(9):yes:yes:yes: - :yes:yes:yes:yes:yes:yes:yesOTHERQ :(9):yes:yes:yes: - :yes:yes:yes:yes:yes:yes:yespullupmsg :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesputbq :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesputctl1 :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesputctl :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesputnext :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesputq :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesqenable :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesqreply :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesqsize :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesRD :(9):yes:yes:yes: - :yes:yes:yes:yes:yes:yes:yesrmvb :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesrmvq :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesSAMESTR :(9):yes: - :yes: - : - :yes:yes:yes:yes: - :yessplstr :(9):svr:yes:yes: - :yes:yes: - :yes:yes:yes:yesstrlog :(9):yes:yes:yes:yes:yes:yes:yes: - :yes:yes:lfsstrqget :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesstrqset :(9):yes: - :yes:yes:yes:yes:yes:yes:yes:yes:yestestb :(9):yes:yes:yes:yes:yes: - :yes: - :yes:yes:yesunbufcall :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesunlinkb :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes:yesWR :(9):yes:yes:yes: - :yes:yes:yes:yes:yes:yes:yes_

Notes:

---
canenable() is really an SVR 3.2 compatibility function that should not be used with SVR 4 STREAMS programs.
---
For the most part the UNIX® System V Release 4.0 STREAMS functions are universally implemented. Exceptions to this include backq(9), which appears to be an oversight on the part of SUPER-UX® documentation[11]; esbbcall(9), that can be emulated by calling bufcall(9), with a size of zero; getadmin(9), getmid(9) and strlog(9), which seems to be more of a Solaris® and LiS problem; SAMESTR(9), which is only useful on systems with pipes and FIFOs;
---
Note how LiS always misses what Solaris misses. That is probably not a coincidence.
---
For specific compatibility notes, see the manual page for the individual function.

UNIX® System V Release 4 MP STREAMS Functions:

UNIX® System V Release 4.0 Multiprocessor (MP) STREAMS functions and their documented support in the various implementations with which Linux Fast-STREAMS is compatible. Linux Fast-STREAMS implements most of these functions in the core streams kernel module. The MPSTR_ locking functions are part of the SVR 4.2 MP compatibility module, streams-svr4compat because they are only have documented support in UnixWare®.


Function/Macro SecLfSAIXHUXMOTOSFSGISunSUXUW7UXPLiS

bcanputnext (9)yes - yesyes - yesyesyesyes - yescanputnext :(9):yes: - :yes:yes: - :yes:yes:yes:yes: - :yesfreezestr :(9):yes: - :yes:yes: - :yes:yes:yes:yes: - :yesmsgpullup :(9):yes: - :yes:yes: - :yes:yes:yes:yes: - :yespcmsg :(9):yes: - :yes: - : - :yes: - :yes:yes: - :lfsput :(9):yes: - :yes:yes: - : - :yes:yes:yes: - :yesputnextctl1 :(9):yes: - :yes:yes: - :yes:yes:yes:yes: - :yesputnextctl :(9):yes: - :yes:yes: - :yes:yes:yes:yes: - :yesqprocsoff :(9):yes: - :yes:yes: - :yes:yes:yes:yes: - :yesqprocson :(9):yes: - :yes:yes: - :yes:yes:yes:yes: - :yesunfreezestr :(9):yes: - :yes:yes: - :yes:yes:yes:yes: - :yes_
MPSTR_QLOCK (9)svr - - - - - - - yes - svrMPSTR_QRELE :(9):svr: - : - : - : - : - : - : - :yes: - :svrMPSTR_STPLOCK :(9):svr: - : - : - : - : - : - : - :yes: - :svrMPSTR_STPRELE :(9):svr: - : - : - : - : - : - : - :yes: - :svr_

Notes:

---
Although they are STREAMS functions, nobody other than UnixWare® mentions the MPSTR_* functions[15], so they are placed in the SVR 4.2 MP compatibility module, streams-svr4compat.
---
The pcmsg(9) function seems to have been missed by a number of implementations.
---
Note how LiS always misses what Solaris misses. That is probably not a coincidence.
---
LiS has been notoriously bad at implementing these MP functions.
---
AIX®, OSF/1® and UXP/V® do not document any of these functions, which is bad: these are the MP functions for STREAMS.

Specialized STREAMS functions:


Function/Macro SecLfSAIXHUXMOTOSFSGISunSUXUW7UXPLiS

alloclk (9)yes - - - - - - - - - -
allocq (9)yes - - yes - - yes - - - yes
allocstr (9)yes - - - - - yes - - - - allstream :(9): - : - : - : - : - : - :yes: - : - : - : - appq :(9):yes: - : - : - : - : - : - : - : - : - :lfs
apush_get (9)yes - - - - - - - - - lfs
apush_set (9)yes - - - - - - - - - lfs
apush_vml (9)yes - - - - - - - - - -
autopush (9)yes - - - - - - - - - -
autopush_add (9)yes - - - - - - - - - -
autopush_del (9)yes - - - - - - - - - -
autopush_find (9)yes - - - - - - - - - -
autopush_vml (9)yes - - - - - - - - - -
bcanget (9)yes - - - - - - - - - lfs
canget (9)yes - - - - - - - - - lfs
defer_func (9)yes - - - - - - - - - -
di_alloc (9)yes - - - - - - - - - -
di_put (9)yes - - - - - - - - - -
enableq (9)yes - - - - - - - - - lfs
findlinks (9) - - - - - - yes - - - - freelk :(9):yes: - : - : - : - : - : - : - : - : - : -
freeq (9)yes - - yes - - yes - - - yes
freestr (9)yes - - - - - yes - - - - getendq :(9): - : - : - : - : - : - :yes: - : - : - : - getf :(9): - : - : - : - : - : - :yes: - : - : - : - isdatablk :(9):yes: - : - : - : - : - : - : - : - : - :yes
isdatamsg (9)yes - - - - - - - - - yes
linkmsg (9)yes - - - - - - - - - lfs
msgsize (9)yes - - - - - yes - - - yesputctl2 :(9):yes:yes:yes:yes: - : - : - : - : - : - :lfs
putnextctl2 (9)yes - yes - - - - - - - lfs
qattach (9)yes - - - - - - - - - -
qclose (9)yes - - - - - - - - - -
qcountstrm (9)yes - - - - - - - - - -
qdetach (9)yes - - - - - - - - - -
qopen (9)yes - - - - - - - - - -
qpop (9)yes - - - - - - - - - -
qpush (9)yes - - - - - - - - - -
queue_free (9) - - - - - - yes - - - - sd_get :(9):yes: - : - : - : - : - : - : - : - : - : -
sd_put (9)yes - - - - - - - - - -
sealloc (9) - - - - - - yes - - - - sefree :(9): - : - : - : - : - : - :yes: - : - : - : - setqsched :(9):yes: - : - : - : - : - : - : - : - : - : -
setq (9)yes - - - - - - - - - -
stream_free (9) - - - - - - yes - - - - unweldq :(9):yes:yes:yes: - :yes: - : - : - : - : - : -
weldq (9)yesyesyes - yes - - - - - -
xmsgsize (9)yes - - - - - - - - - yes
__bufcall (9)yes - - - - - - - - - -
__timeout (9)yes - - - - - - - - - -

get_sleep_lock (9)hux - yes - - - - - - - hux
streams_put (9)hux - yes - - - - - - - hux
str_install_HPUX (9)hux - yes - - - - - - - hux

allocbi (9)mac - - yesyes - - - - - mac
esballoca (9)mac - - yes - - - - - - mac
mi_allocq (9)mps - - yes - - - - - - mps
mi_attach (9)mps - - - - - - - - - mps
mi_bcmp (9)mps - - yes - - - - - - mps
mi_bufcall (9)mpsyes - yes - - - - - - mps
mi_close_comm (9)mpsyes - yes - - - - - - mps
mi_close_detached (9)mps - - yes - - - - - - mps
mi_copyin (9)mps - - yes - - - - - - mps
mi_copyout (9)mps - - yes - - - - - - mps
mi_copyout_alloc (9)mps - - yes - - - - - - mps
mi_copy_done (9)mps - - yes - - - - - - mps
mi_copy_set_rval (9)mps - - yes - - - - - - mps
mi_copy_state (9)mps - - yes - - - - - - mps
mi_detach (9)mps - - yes - - - - - - mps
mi_freeq (9)mps - - yes - - - - - - mps
mi_next_ptr (9)mpsyes - yes - - - - - - mps
mi_offset_param (9)mps - - yes - - - - - - mps
mi_offset_paramc (9)mps - - yes - - - - - - mps
mi_open_comm (9)mpsyes - yes - - - - - - mps
mi_open_detached (9)mps - - yes - - - - - - mps
mi_prev_ptr (9)mps - - - - - - - - - mps
mi_reallocb (9)mps - - yes - - - - - - mps
mi_reuse_proto (9)mps - - yes - - - - - - mps
mi_set_sth_hiwat (9)mps - - yes - - - - - - mps
mi_set_sth_lowat (9)mps - - yes - - - - - - mps
mi_set_sth_maxblk (9)mps - - yes - - - - - - mps
mi_set_sth_wroff (9)mps - - yes - - - - - - mps
mi_sprintf (9)mps - - yes - - - - - - mps
mi_timer (9)mps - - yes - - - - - - mps
mi_timer_alloc (9)mps - - yes - - - - - - mps
mi_timer_cancel (9)mps - - yes - - - - - - mps
mi_timer_free (9)mps - - yes - - - - - - mps
mi_timer_q_switch (9)mps - - yes - - - - - - mps
mi_timer_valid (9)mps - - yes - - - - - - mps
mpnotify (9)mac - - yes - - - - - - mac
mps_become_writer (9)mps - - yes - - - - - - mps
mps_intr_disable (9)mps - - yes - - - - - - mps
mps_intr_enable (9)mps - - yes - - - - - - mps
puthere (9)osf - - yesyes - - - - - osf
streams_close_comm (9)osf - - - yes - - - - - osf
streams_open_comm (9)osf - - - yes - - - - - osf
streams_open_ocomm (9)osf - - - yes - - - - - osf
strmod_add (9)osf - - - yes - - - - - -
strmod_del (9)osf - - - yes - - - - - -
str_install_AIX (9)aixyes - - - - - - - - -
wantio (9)aixyes - - - - - - - - -
wantmsg (9)aixyes - - - - - - - - -

streams_interrupt (9) - - - - - yes - - - - - STREAMS_TIMEOUT :(9): - : - : - : - : - :yes: - : - : - : - : - _
bcache_allocb (9) - - - - - - yes - - - - bcache_create :(9): - : - : - : - : - : - :yes: - : - : - : - bcache_destroy :(9): - : - : - : - : - : - :yes: - : - : - : - bpsize :(9): - : - : - : - : - : - :yes: - : - : - : - create_putlocks :(9): - : - : - : - : - : - :yes: - : - : - : - DB_BASE :(9): - : - : - : - : - : - :yes: - : - : - : - DB_LIM :(9): - : - : - : - : - : - :yes: - : - : - : - DB_REF :(9): - : - : - : - : - : - :yes: - : - : - : - DB_TYPE :(9): - : - : - : - : - : - :yes: - : - : - : - flushq_common :(9): - : - : - : - : - : - :yes: - : - : - : - infonext :(9): - : - : - : - : - : - :yes: - : - : - : - isuioq :(9): - : - : - : - : - : - :yes: - : - : - : - MBLKHEAD :(9): - : - : - : - : - : - :yes: - : - : - : - MBLKIN :(9): - : - : - : - : - : - :yes: - : - : - : - MBLKL :(9): - : - : - : - : - : - :yes: - : - : - : - MBLKSIZE :(9): - : - : - : - : - : - :yes: - : - : - : - MBLKTAIL :(9): - : - : - : - : - : - :yes: - : - : - : - mcopymsg :(9): - : - : - : - : - : - :yes: - : - : - : - merror :(9): - : - : - : - : - : - :yes: - : - : - : - mexchange :(9): - : - : - : - : - : - :yes: - : - : - : - mexpandb :(9): - : - : - : - : - : - :yes: - : - : - : - miocack :(9): - : - : - : - : - : - :yes: - : - : - : - miocnak :(9): - : - : - : - : - : - :yes: - : - : - : - miocpullup :(9): - : - : - : - : - : - :yes: - : - : - : - mkiocb :(9): - : - : - : - : - : - :yes: - : - : - : - mod_info :(9):sun: - : - : - : - : - :yes: - : - : - : -
mod_install (9)sun - - - - - yes - - - -
mod_remove (9)sun - - - - - yes - - - -
mod_strmops (9)sun - - - - - yes - - - -
OFFSET (9) - - - - - - yes - - - - qbufcall :(9):sun: - : - : - : - : - :yes: - : - : - : -
QNAME (9) - - - - - - yes - - - - qtimeout :(9):sun: - : - : - : - : - :yes: - : - : - : -
queclass (9)sun - - - - - yes - - - -
qunbufcall (9)sun - - - - - yes - - - -
quntimeout (9)sun - - - - - yes - - - -
qwait (9)sun - - - - - yes - - - -
qwait_rw (9) - - - - - - yes - - - - qwait_sig :(9):sun: - : - : - : - : - :yes: - : - : - : -
qwriter (9)sun - - - - - yes - - - -
reallocb (9) - - - - - - yes - - - - rwnext :(9): - : - : - : - : - : - :yes: - : - : - : - straln :(9): - : - : - : - : - : - :yes: - : - : - : - strbcpy :(9): - : - : - : - : - : - :yes: - : - : - : - struioget :(9): - : - : - : - : - : - :yes: - : - : - : - struioput :(9): - : - : - : - : - : - :yes: - : - : - : - strwakeq :(9): - : - : - : - : - : - :yes: - : - : - : - _
allocb_physreq (9)uw7 - - - - - - - yes - yes
msgphysreq (9)uw7 - - - - - - - yes - -
msgpullup_physreq (9)uw7 - - - - - - - yes - -
msgscgth (9)uw7 - - - - - - - yes - -
strioccall (9)uw7 - - - - - - - yes - -

lis_apushm (9)lis - - - - - - - - - yeslis_apush_get :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_apush_set :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_bcanputnext_anyband:(9):lis: - : - : - : - : - : - : - : - : - :yeslis_clone_major :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_dobufcall :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_doclose :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_fattach :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_fdetach :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_fdetach_all :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_fdetach_stream :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_fifo_close_sync :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_fifo_open_sync :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_fifo_write_sync :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_find_strdev :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_fmod_sw :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_freedb :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_free_passfp :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_fstr_sw :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_get_fifo :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_get_passfp :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_get_pipe :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_init_bufcall :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_ioc_fattach :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_ioc_fdetach :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_ioc_pipe :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_pipe :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_putbqf :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_putqf :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_qattach :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_qclose :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_qcountstrm :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_qdetach :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_qopen :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_queuerun_cnts :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_queues_running :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_queue_name :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_recvfd :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_register_driver_qlock_option:(9):lis: - : - : - : - : - : - : - : - : - :yeslis_register_module_qlock_option:(9):lis: - : - : - : - : - : - : - : - : - :yeslis_register_strdev :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_register_strmod :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_runq_cnts :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_runq_req_cnt :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_sendfd :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_setqsched :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_setqsched_cnts :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_setqsched_isr_cnts:(9):lis: - : - : - : - : - : - : - : - : - :yeslis_setq :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_set_file_str :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_stdata_cnt :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_strclose :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_strcount :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_strgetpmsg :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_strioctl :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_strm_name :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_strm_name_from_queue:(9):lis: - : - : - : - : - : - : - : - : - :yeslis_stropen :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_stropts_file :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_strputpmsg :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_strread :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_strstats :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_strwrite :(9):lis: - : - : - : - : - : - : - : - : - :yeslis_unregister_strdev:(9):lis: - : - : - : - : - : - : - : - : - :yeslis_unregister_strmod:(9):lis: - : - : - : - : - : - : - : - : - :yeslis_valid_mod_list :(9):lis: - : - : - : - : - : - : - : - : - :yesOTHER :(9):lis: - : - : - : - : - : - : - : - : - :yes_

UNIX® System V Release 3.2 compatibility functions;


Function/Macro SecLfSAIXHUXMOTOSFSGISunSUXUW7UXPLiS

cmpdev (9) - - - - - - yes - - yes - emajor :(9):svr: - : - : - : - : - :yes: - :yes: - :svreminor :(9):svr: - : - : - : - : - :yes: - :yes: - :svretoimajor :(9):svr: - : - : - : - :yes:yes: - :yes: - :svrexpdev :(9): - : - : - : - : - : - :yes: - : - :yes: - itoemajor :(9):svr: - : - : - : - :yes:yes: - :yes: - :svrmajor :(9): - : - :yes: - :yes: - :yes:yes: - : - :yesmakedev :(9): - : - :yes: - :yes: - :yes: - : - :yes: - minor :(9): - : - :yes: - :yes: - :yes:yes: - : - : - _

UNIX® System V Release 4.0 DDI/DKI Functions:


Function/Macro SecLfSAIXHUXMOTOSFSGISunSUXUW7UXPLiS

ASSERT (9)svr - - - - yesyes - yes - yesbcopy :(9):yes:yes:yes: - :yes:yes:yes:yes:yes:yes:yesbiodone :(9): - : - : - : - :yes:yes:yes: - :yes: - : - biowait :(9): - : - : - : - : - :yes:yes: - :yes: - : - bp_mapin :(9): - : - : - : - : - :yes:yes: - :yes: - : - bp_mapout :(9): - : - : - : - : - :yes:yes: - :yes: - : - brelse :(9): - :yes: - : - :yes:yes: - : - :yes: - : - btop :(9): - : - : - : - :yes:yes:yes: - :yes: - : - btopr :(9): - : - : - : - : - :yes:yes: - :yes: - : - bzero :(9):yes:yes:yes: - :yes:yes:yes:yes:yes:yes:yesclrbuf :(9): - :yes: - : - : - :yes:yes: - :yes: - : - cmn_err :(9):yes: - :yes:yes: - :yes:yes:yes:yes:yes:yescopyin :(9):yes:yes: - : - :yes:yes:yes: - :yes: - :yescopyout :(9):yes:yes: - : - :yes:yes:yes: - :yes: - :yesdelay :(9):yes:yes:yes: - :yes:yes:yes: - :yes:yes: - dma_disable :(9): - : - : - : - : - : n : - : - :yes: - : - dma_enable :(9): - : - : - : - : - : n : - : - :yes: - : - dma_free_buf :(9): - : - : - : - : - : n : - : - :yes: - : - dma_free_cb :(9): - : - : - : - : - : n : - : - :yes: - : - dma_get_best_mode :(9): - : - : - : - : - : n : - : - :yes: - : - dma_get_buf :(9): - : - : - : - : - : n : - : - :yes: - : - dma_get_cb :(9): - : - : - : - : - : n : - : - :yes: - : - dma_pageio :(9): - : - : - : - : - : n : - : - :yes: - : - dma_prog :(9): - : - : - : - : - : n : - : - :yes: - : - dma_stop :(9): - : - : - : - : - : - : - : - :yes: - : - dma_swsetup :(9): - : - : - : - : - : n : - : - :yes: - : - dma_swstart :(9): - : - : - : - : - : n : - : - :yes: - : - drv_getparm :(9):yes: - :yes: - : - :yes:yes: - :yes: - : - drv_hztousec :(9):yes: - : - : - : - :yes:yes: - :yes: - : - drv_priv :(9):yes: - :yes:yes:yes:yes:yes: - :yes:yes: - drv_setparm :(9): - : - : - : - : - :yes: - : - :yes: - : - drv_usectohz :(9):yes: - : - : - : - :yes:yes: - :yes: - : - drv_usecwait :(9):yes: - : - : - : - :yes:yes: - :yes: - : - freerbuf :(9): - : - : - : - : - :yes:yes: - :yes: - : - geteblk :(9): - :yes: - : - : - :yes: - : - :yes: - : - getemajor :(9):svr: - : - : - : - :yes:yes: - :yes:yes: - geteminor :(9):svr: - : - : - : - :yes:yes: - :yes:yes: - geterror :(9): - :yes: - : - : - :yes:yes: - :yes: - : - getmajor :(9):yes: - :yes: - : - :yes:yes: - :yes:yes:yesgetminor :(9):yes: - :yes: - : - :yes:yes: - :yes:yes:yesgetrbuf :(9): - : - : - : - : - :yes:yes: - :yes: - : - hat_getkpfnum :(9): - : - : - : - : - : n :yes: - :yes: - : - hat_getppfnum :(9): - : - : - : - : - : n :yes: - :yes: - : - inb :(9):yes: - : - : - : - : n :yes: - :yes: - :yesinl :(9):yes: - : - : - : - : n :yes: - :yes: - :yesinw :(9):yes: - : - : - : - : n :yes: - :yes: - :yeskmem_alloc :(9):yes: - :yes: - :yes:yes:yes: - :yes: - :yeskmem_fast_alloc :(9): - : - : - : - : - : - :yes: - : - : - : - kmem_fast_free :(9): - : - : - : - : - : - :yes: - : - : - : - kmem_free :(9):yes: - :yes: - :yes:yes:yes: - :yes: - :yeskmem_zalloc :(9):yes: - : - : - : - :yes:yes: - :yes: - :yesmakedevice :(9):yes: - :yes: - : - :yes:yes: - :yes:yes:yesmax :(9):yes: - :yes: - : - :yes:yes:yes:yes:yes:yesmin :(9):yes: - :yes: - : - :yes:yes:yes:yes:yes:yesngeteblk :(9): - : - : - : - : - :yes: - : - :yes: - : - outb :(9):yes: - : - : - : - : n :yes: - :yes: - :yesoutl :(9):yes: - : - : - : - : n :yes: - :yes: - :yesoutw :(9):yes: - : - : - : - : n :yes: - :yes: - :yespage_numtopp :(9): - : - : - : - : - : - : - : - :yes: - : - page_pptonum :(9): - : - : - : - : - : - : - : - :yes: - : - physiock :(9): - : - : - : - : - :yes: - : - :yes: - : - physmap :(9): - : - : - : - : - : n : - : - :yes: - : - physmap_free :(9): - : - : - : - : - : n : - : - :yes: - : - pollwakeup :(9): - : - : - : - : - :yes:yes: - :yes: - : - pptophys :(9): - : - : - : - : - :yes: - : - :yes: - : - psignal :(9): - : - : - : - :yes: n : - : - :yes: - : - ptob :(9): - : - : - : - : - :yes:yes: - :yes: - : - rdma_filter :(9): - : - : - : - : - : n : - : - :yes: - : - repinsb :(9): - : - : - : - : - : n :yes: - :yes: - : - repinsd :(9): - : - : - : - : - : n :yes: - :yes: - : - repinsw :(9): - : - : - : - : - : n :yes: - :yes: - : - repoutsb :(9): - : - : - : - : - : n :yes: - :yes: - : - repoutsd :(9): - : - : - : - : - : n :yes: - :yes: - : - repoutsw :(9): - : - : - : - : - : n :yes: - :yes: - : - rmalloc :(9): - : - : - : - :yes: - :yes: - :yes:yes: - rmfree :(9): - : - : - : - :yes: - :yes: - :yes:yes: - rminit :(9): - : - : - : - :yes: n : - : - :yes:yes: - rmsetwant :(9): - : - : - : - : - : n : - : - :yes: - : - sleep :(9):svr:yes:yes: - :yes:yes: - : - :yes:yes:svrspl0 :(9):svr: - :yes: - :yes:yes: - :yes:yes:yes:yesspl1 :(9):svr: - :yes: - :yes: - : - :yes:yes:yes:svrspl2 :(9):svr: - :yes: - :yes: - : - :yes:yes:yes:svrspl3 :(9):svr: - :yes: - :yes: - : - :yes:yes:yes:svrspl4 :(9):svr: - :yes: - :yes: - : - :yes:yes:yes:svrspl5 :(9):svr: - :yes: - :yes: - : - :yes:yes:yes:svrspl6 :(9):svr: - :yes: - :yes: - : - :yes:yes:yes:svrspl7 :(9):svr: - :yes: - :yes: - : - :yes:yes:yes:svrspl :(9):svr: - :yes: - :yes: - : - :yes:yes:yes:svrsplbase :(9):svr: - :yes: - :yes:yes: - :yes:yes:yes:svrspldisk :(9):svr: - :yes: - :yes:yes: - :yes:yes:yes:svrsplhi :(9):svr: - :yes: - :yes:yes: - :yes:yes:yes:svrspltimeout :(9):svr: - :yes: - :yes:yes: - :yes:yes:yes:svrspltty :(9):svr: - :yes: - :yes:yes: - :yes:yes:yes:svrsplx :(9):svr:yes:yes: - :yes:yes:yes:yes:yes:yes:yestimeout :(9):yes:yes:yes: - :yes:yes:yes:yes:yes:yes:yesuiomove :(9): - :yes: - : - :yes:yes:yes: - :yes: - : - untimeout :(9):yes:yes:yes: - :yes:yes:yes:yes:yes:yes:yesureadc :(9): - :yes: - : - : - :yes:yes: - :yes: - : - useracc :(9): - : - : - : - : - : - : - : - :yes: - : - uwritec :(9): - :yes: - : - : - :yes:yes: - :yes: - : - vtop :(9): - : - :yes: - :yes: n : - :yes:yes:yes: - wakeup :(9):svr: - :yes: - :yes:yes: - : - :yes:yes:svr_

UNIX® System V Release 4.0 MP DDI/DKI Functions:


Function/Macro SecLfSAIXHUXMOTOSFSGISunSUXUW7UXPLiS

dtimeout (9)svr - - - - yes - - yes - - itimeout :(9):svr: - :yes: - : - :yes: - : - :yes: - : - rmallocmap :(9): - : - : - : - : - :yes:yes: - :yes: - : - rmalloc_wait :(9): - : - : - : - : - :yes:yes: - :yes: - : - rmfreemap :(9): - : - : - : - : - :yes:yes: - :yes: - : - _
bioerror (9) - - - - - yesyes - yes - - getnextpg :(9): - : - : - : - : - :yes: - : - :yes: - : - kvtoppid :(9): - : - : - : - : - : n : - : - :yes: - : - phalloc :(9): - : - : - : - : - :yes: - : - :yes: - : - phfree :(9): - : - : - : - : - :yes: - : - :yes: - : - phystoppid :(9): - : - : - : - : - : n : - : - :yes: - : - proc_ref :(9): - : - : - : - : - :yes:yes: - :yes: - : - proc_signal :(9): - : - : - : - : - :yes:yes: - :yes: - : - proc_unref :(9): - : - : - : - : - :yes:yes: - :yes: - : - _

UNIX® System V Release 4.2 DDI/DKI Functions:


Function/Macro SecLfSAIXHUXMOTOSFSGISunSUXUW7UXPLiS

drv_gethardware (9) - - - - - n - - yes - - mod_drvattach :(9): - : - : - : - : - : n : - : - :yes: - : - mod_drvdetach :(9): - : - : - : - : - : n : - : - :yes: - : - _

UNIX® System V Release 4.2 MP DDI/DKI Functions:


Function/Macro SecLfSAIXHUXMOTOSFSGISunSUXUW7UXPLiS

bcb_alloc (9) - - - - - - - - yes - - bcb_free :(9): - : - : - : - : - : - : - : - :yes: - : - bcmp :(9):yes:yes: - : - :yes:yes:yes: - :yes: - :yesbuf_breakup :(9): - : - : - : - : - : - : - : - :yes: - : - cm_addval :(9): - : - : - : - : - : - : - : - :yes: - : - cm_AT_putconf :(9): - : - : - : - : - : - : - : - :yes: - : - cm_delval :(9): - : - : - : - : - : - : - : - :yes: - : - cm_devconfig_size :(9): - : - : - : - : - : - : - : - :yes: - : - cm_getbrdkey :(9): - : - : - : - : - : - : - : - :yes: - : - cm_getnbrd :(9): - : - : - : - : - : - : - : - :yes: - : - cm_getval :(9): - : - : - : - : - : - : - : - :yes: - : - cm_getversion :(9): - : - : - : - : - : - : - : - :yes: - : - cm_intr_attach :(9): - : - : - : - : - : - : - : - :yes: - : - cm_intr_detach :(9): - : - : - : - : - : - : - : - :yes: - : - cm_read_devconfig :(9): - : - : - : - : - : - : - : - :yes: - : - cm_write_devconfig :(9): - : - : - : - : - : - : - : - :yes: - : - dma_cascade :(9): - : - : - : - : - : - : - : - :yes: - : - dma_physreq :(9): - : - : - : - : - : - : - : - :yes: - : - drv_mmap :(9): - : - : - : - : - : - : - : - :yes: - : - drv_munmap :(9): - : - : - : - : - : - : - : - :yes: - : - getpl :(9): - : - : - : - : - : - : - : - :yes: - : - iobitmapctl :(9): - : - : - : - : - : - : - : - :yes: - : - kmem_alloc_physcontig:(9): - : - : - : - : - : - : - : - :yes: - : - kmem_free_physcontig:(9): - : - : - : - : - : - : - : - :yes: - : - KS_HOLD0LOCKS :(9): - : - : - : - : - : - : - : - :yes: - : - LOCK :(9):svr: - :yes: - : - :yes: - : - :yes: - :svrLOCK_ALLOC :(9):svr: - :yes: - : - :yes: - : - :yes: - :svrLOCK_DEALLOC :(9):svr: - :yes: - : - :yes: - : - :yes: - :svrLOCK_OWNED :(9):svr: - : - : - : - : - : - : - :yes: - :svrmet_ds_alloc_stats :(9): - : - : - : - : - : - : - : - :yes: - : - met_ds_dealloc_stats:(9): - : - : - : - : - : - : - : - :yes: - : - met_ds_dequeued :(9): - : - : - : - : - : - : - : - :yes: - : - met_ds_hist_stats :(9): - : - : - : - : - : - : - : - :yes: - : - met_ds_iodone :(9): - : - : - : - : - : - : - : - :yes: - : - met_ds_queued :(9): - : - : - : - : - : - : - : - :yes: - : - ovbcopy :(9): - :yes: - : - :yes: - : - : - :yes: - : - physreq_alloc :(9): - : - : - : - : - : - : - : - :yes: - : - physreq_free :(9): - : - : - : - : - : - : - : - :yes: - : - physreq_prep :(9): - : - : - : - : - : - : - : - :yes: - : - proc_valid :(9): - : - : - : - : - : - : - : - :yes: - : - RW_ALLOC :(9):svr: - : - : - : - :yes: - : - :yes: - :svrRW_DEALLOC :(9):svr: - : - : - : - :yes: - : - :yes: - :svrRW_RDLOCK :(9):svr: - : - : - : - :yes: - : - :yes: - :svrRW_TRYRDLOCK :(9):svr: - : - : - : - :yes: - : - :yes: - :svrRW_TRYWRLOCK :(9):svr: - : - : - : - :yes: - : - :yes: - :svrRW_UNLOCK :(9):svr: - : - : - : - :yes: - : - :yes: - :svrRW_WRLOCK :(9):svr: - : - : - : - :yes: - : - :yes: - :svrSLEEP_ALLOC :(9):svr: - : - : - : - :yes: - : - :yes: - :svrSLEEP_DEALLOC :(9):svr: - : - : - : - :yes: - : - :yes: - :svrSLEEP_LOCK :(9):svr: - : - : - : - :yes: - : - :yes: - :svrSLEEP_LOCKAVAIL :(9):svr: - : - : - : - :yes: - : - :yes: - :svrSLEEP_LOCKOWNED :(9):svr: - : - : - : - : n : - : - :yes: - :svrSLEEP_LOCK_SIG :(9):svr: - : - : - : - :yes: - : - :yes: - :svrSLEEP_TRYLOCK :(9):svr: - : - : - : - :yes: - : - :yes: - :svrSLEEP_UNLOCK :(9):svr: - : - : - : - :yes: - : - :yes: - :svrstrcat :(9):yes:yes: - : - : - :yes: - : - :yes: - :yesstrcmp :(9):yes:yes: - : - :yes: - :yes: - :yes: - :yesstrcpy :(9):yes:yes: - : - :yes:yes:yes: - :yes: - :yesstrlen :(9):yes:yes: - : - :yes:yes:yes: - :yes: - :yesstrncat :(9):yes:yes: - : - : - : n : - : - :yes: - :yesstrncmp :(9):yes:yes: - : - :yes:yes:yes: - :yes: - :yesstrncpy :(9):yes:yes: - : - :yes:yes:yes: - :yes: - :yesSV_ALLOC :(9):svr: - :yes: - : - :yes: - : - :yes: - :svrSV_BROADCAST :(9):svr: - :yes: - : - :yes: - : - :yes: - :svrSV_DEALLOC :(9):svr: - :yes: - : - :yes: - : - :yes: - :svrSV_SIGNAL :(9):svr: - : - : - : - :yes: - : - :yes: - :svrSV_WAIT :(9):svr: - :yes: - : - :yes: - : - :yes: - :svrSV_WAIT_SIG :(9):svr: - :yes: - : - :yes: - : - :yes: - :svrTRYLOCK :(9):svr: - :yes: - : - :yes: - : - :yes: - :svrUNLOCK :(9):svr: - :yes: - : - :yes: - : - :yes: - :svr_

Extra OS-Specific DDI/DKI Functions:


Function/Macro SecLfSAIXHUXMOTOSFSGISunSUXUW7UXPLiS

atoi (9) - yes - - yes - - - - - -
ATOMIC_INT_ADD (9)uw7 - - - - - - - yes - uw7
ATOMIC_INT_ALLOC (9)uw7 - - - - - - - yes - uw7
ATOMIC_INT_DEALLOC (9)uw7 - - - - - - - yes - uw7
ATOMIC_INT_DECR (9)uw7 - - - - - - - yes - uw7
ATOMIC_INT_INCR (9)uw7 - - - - - - - yes - uw7
ATOMIC_INT_INIT (9)uw7 - - - - - - - yes - uw7
ATOMIC_INT_READ (9)uw7 - - - - - - - yes - uw7
ATOMIC_INT_SUB (9)uw7 - - - - - - - yes - uw7
ATOMIC_INT_WRITE (9)uw7 - - - - - - - yes - uw7
copyinstr (9) - yes - - yes - - - - - -
copyoutstr (9) - - - - yes - - - - - - ddi_get_cred :(9):sun: - : - : - : - : - :yes: - : - : - : -
ddi_getiminor (9)sun - - - - - yes - - - -
ddi_get_lbolt (9)sun - - - - - yes - - - -
ddi_get_pid (9)sun - - - - - yes - - - -
ddi_get_time (9)sun - - - - - yes - - - -
ddi_prop_op (9)sun - - - - - yes - - - -
ddi_umem_alloc (9)sun - - - - - yes - - - -
ddi_umem_free (9)sun - - - - - yes - - - -
drv_hztomsec (9)yes - - - - - - - - - -
drv_msectohz (9)yes - - - - - - - - - -
fubyte (9) - yes - - yesyes - - - - -
fuword (9) - yes - - yesyes - - - - -
iodone (9) - yes - - yes - - - - - -
kmem_alloc_node (9)yes - - - - yes - - - - -
kmem_cache_alloc (9)yes - - - - - yes - - - -
kmem_cache_create (9)yes - - - - - yes - - - -
kmem_cache_destroy (9)yes - - - - - yes - - - -
kmem_cache_free (9)yes - - - - - yes - - - -
kmem_zalloc_node (9)yes - - - - yes - - - - -
lbolt (9)osfyesyes - yes - yesyesyesyesosf
MALLOC (9)osf - - - yes - - - - - yes
memchr (9)yesyes - - - - - - - - yes
memcmp (9)yesyes - - - - - - - - yes
memcpy (9)yesyes - - - - - - - - yes
memmove (9)yesyes - - - - - - - - yes
memscan (9)yes - - - - - - - - - yes
memset (9)yesyes - - - - - - - - yes
minphys (9) - - - - yes - yes - - - -
nochpoll (9)sun - - - - - yes - - - -
nodev (9)sun - - - - - yes - - - -
nulldev (9)sun - - - - - yes - - - -
numtos (9) - - - - - - yes - yes - -
panic (9) - yes - - yes - - - - - -
physio (9) - - - - yes - yes - - - -
printf_OSF (9)osf - - - yes - - yesyes - osf
printf_UW7 (9)uw7 - - - yes - - yesyes - uw7
snprintf (9)yes - - - - - yes - - - yessprintf :(9):yes: - : - : - : - : - :yes: - : - : - :yes
strchr (9)yesyes - - - - yes - yes - yes
strnicmp (9)yes - - - - - - - - - yes
strnlen (9)yes - - - - - - - - - yes
strpbrk (9)yesyes - - - - - - - - yes
strrchr (9)yesyes - - - - - - - - yes
strsep (9)yes - - - - - - - - - yes
strspn (9)yesyes - - - - - - - - yes
strstr (9)yesyes - - - - - - - - yes
strtok (9)yesyes - - - - - - - - yes
strtol (9)yes - - - - - - - - - yes
strtoll (9)yes - - - - - - - - - yes
strtoul (9)yes - - - - - - - yes - yes
strtoull (9)yes - - - - - - - - - yes
subyte (9) - yes - - yesyes - - - - -
suser (9) - yes - - yes - - - - - -
suword (9) - yes - - yesyes - - - - -
swab (9) - - - - - - yes - - - - time :(9):osf:yes:yes: - :yes: - : - :yes: - :yes:osf
uprintf (9)osfyes - - yes - - - - - osf
va_arg (9)yesyesyesyesyesyesyesyesyesyes - va_copy :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes: - va_end :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes: - va_start :(9):yes:yes:yes:yes:yes:yes:yes:yes:yes:yes: - vcmn_err :(9):yes: - : - : - : - : - :yes: - : - : - : -
vsprintf (9) - - - - - - yes - - - yes

IOCTLS

See streamio(7).

SYSCTLS

Linux Fast-STREAMS provides and supports a number of system controls that can be accessed using the /proc/sys/streams/* files, with the sysctl(2) interface, or using sysctl(8).

The following STREAMS specific system controls are provided by Linux Fast-STREAMS:

sys.streams.cltime
Defines the default time interval (in milliseconds) that closing stream will linger for messages to clear its queues before finally closing. Valid values are zero (0) or greater (MAXINT). The default value is the traditional UNIX value of 15,000 milliseconds (15 seconds). This system control defines the default for all new streams. The value for a given stream can be changed with the streamio(7) IO control I_CLTIME, after the stream is opened and before the stream is closed.
sys.streams.max_apush
Defines the maximum number of modules that can be configured for autopush onto a STREAMS driver. Valid values are zero (0) or greater (MAXINT). The default value is the traditional UNIX value of 8 modules. This system control defines the maximum for all new autopush configurations. Existing autopush configurations are unchanged.
sys.streams.max_mblk
Defines the maximum number of combined message data blocks that will be held on the per-CPU free list between runs of runqueues(9). Valid values are zero (0) or greater (MAXINT). The default value is the traditional UNIX value of 10 blocks. This system control defines the maximum for the next run of runqueues(9) for all CPUs. Increasing or decreasing this number may have a positive or negative performance impact.
sys.streams.max_stramod
Defines the maximum number of autopush structures that can be defined for the entire system. Valid values are zero (0) or greater (MAXINT). The default value is eight (8) ??????? This system control defines the system-wide maximum.
sys.streams.max_strdev
Defines the maximum number of streams devices. This is normally the maximum number of character devices (MAX_CHRDEV). Valid values are zero (0) or greater (MAXINT). The default value is MAX_CHRDEV (256). This is a read-only system control.
sys.streams.max_strmod
Defines the maximum number of streams modules. This is normally the maximum number of character devices (MAX_CHRDEV). Valid values are zero (0) or greater (MAXINT). The default value is MAX_CHRDEV (256). This is a read-only system control.
sys.streams.msg_priority
Defines whether allocation priority will be honoured or whether all allocations will be treated the same. See allocb(9). When true (non-zero), allocation priority will be honoured when allocating message blocks. When false (zero), allocation priority will be ignored. Valid values are zero (0) or non-zero. The default value is zero (0). Changing this value may have a positive or negative impact on system performance.
sys.streams.nband
Defines the number of queue bands available. Valid values are zero (0) or greater (MAXINT). The default value is the traditional UNIX value of 256. This system control defines the system wide value. This system control is read-only.
sys.streams.nstrmsgs
Defines the maximum number of combined message data blocks that will be allocated. Valid values are zero (0) or greater (MAXINT). The default value is 2^12. Changing this value may have a positive or negative impact on system performance. Setting this value to a small number may be useful for debugging STREAMS drivers and modules.
sys.streams.nstrpush
Defines the maximum number of modules that can be pushed on a stream. This includes both autopushed modules and modules pushed using the I_PUSH IO control of streamio(7). Valid values are zero (0) or greater (MAXINT). The default value is the traditional UNIX value of 64. This is the default values for all new streams. Existing streams are unaffected.
sys.streams.hiwat
Defines the default high water mark (in message bytes) for the stream head. Valid values are zero (0) or greater (MAXINT). The default value is 5120. This is the default value for all new stream heads. Existing stream heads are unaffected. The value on existing stream heads can be changed by a driver or module by sending an M_SETOPTS(9) message to the stream head.
sys.streams.lowat
Defines the default low water mark (in mesasge bytes) for the stream head. Valid values are zero (0) or greater (MAXINT). The default value is 1024. This is the default value for all new stream heads. Existing stream heads are unaffected. The value on existing stream heads can be changed by a driver or module by sending an M_SETOPTS(9) message to the stream head.
sys.streams.maxpsz
Defines the maximum packet size accepted (in message bytes) for the stream head. Valid values are zero (0) or greater (MAXINT). The default value is 2^12. This is the default value for all new stream heads. Existing stream heads are unaffected. The value on existing stream heads can be changed by a driver or module by sending an M_SETOPTS(9) message to the stream head.
sys.streams.minpsz
Defines the minimum packet size accepted (in message bytes) for the stream head. Valid values are zero (0) or greater (MAXINT). The default value is 0. This is the default value for all new stream heads. Existing stream heads are unaffected. The value on existing stream heads can be changed by a driver or module by sending an M_SETOPTS(9) message to the stream head.
sys.streams.reuse_fmodsw
Defines whether fmodsw table entries will be reused. When false (zero), fmodsw table entries will not be reused. When true (non-zero), fmodsw table entries will be reused. Valid values are zero (0) and non-zero. The default value is false (zero).
sys.streams.rtime
Defines the time interval (in milliseconds) that the stream head will wait to forward held messages when SNDHOLD is set for the stream head. Valid values are zero (0) or greater (MAXINT). The default value is 10 milliseconds (one clock tick). This is the system wide value for all streams. Changing this value may have a positive or negative impact on system performance.
sys.streams.strhold
Defines whether the SNDHOLD feature is active or not. When false (0), the SNDHOLD feature is deactivated. When true (non-zero), the SNDHOLD feature is activated. Valid values are zero (0) or non-zero. The default value is false (0). This is the default value for all new streams. Existing streams are unaffected. This setting can be examined and altered on an open stream using the I_GWROPT and I_SWROPT IO controls of streamio(7).
sys.streams.strctlsz
Defines the maximum STREAMS control part size. Valid values are zero (0) or greater (MAXINT). The default value is 2^12. This is the system wide maximum. Existing allocations are unaffected by lowering this value. Changing this value can have an impact on users of putpmsg(2s).
sys.streams.strmsgsz
Defines the maximum STREAMS message size. Valid values are zero (0) or greater (MAXINT). The default value is 2^18. This is the system wide maximum. Existing allocations are unaffected by lowering this value. Changing this value can have an impact on users of write(2s), writev(2s), and putpmsg(2s).
sys.streams.strthresh
Defines the maximum amount of memory that will be allocated for use by the STREAMS subsystem via kmem_alloc(9) or kmem_zalloc(9), or indirectly using allocb(9) or allocating other STREAMS data structures. Valid values are zero (0) or greater (MAXINT). This is the system wide maximum. Existing allocations are unaffected by lowering this value. Changing this value to a low value may have some use in debugging STREAMS drivers and modules.

SEE ALSO

adjmsg(9), allocb(9), allocb_physreq(9), allocq(9), appq(9), autopush_add(9), autopush_del(9), autopush_find(9), autopush_vml(9), backq(9), bcanget(9), bcanput(9), bcanputnext(9), bcopy(9), bufcall(9), bzero(9), canenable(9), canget(9), canput(9), canputnext(9), cdevsw(9), cmn_err(9), copyb(9), copyin(9), copymsg(9), copyout(9), cred_t(9), datab(9), datamsg(9), ddi_get_cred(9), ddi_getiminor(9), ddi_get_lbolt(9), ddi_get_pid(9), ddi_get_time(9), ddi_umem_alloc(9), ddi_umem_free(9), delay(9), drv_getparm(9), drv_hztomsec(9), drv_hztousec(9), drv_msectohz(9), drv_priv(9), drv_usectohz(9), drv_usecwait(9), dupb(9), dupmsg(9), enableok(9), esballoc(9), esbbcall(9), flushband(9), flushq(9), fmodsw(9), freeb(9), freemsg(9), freeq(9), freezestr(9), getemajor(9), geteminor(9), getmajor(9), getminor(9), getq(9), insq(9), isdatablk(9), isdatamsg(9), kmem_alloc(9), kmem_free(9), kmem_zalloc(9), kmem_zalloc_node(9), linkb(9), linkmsg(9), lis_adjmsg(9), lis_allocb(9), lis_allocb_physreq(9), lis_allocq(9), lis_appq(9), lis_backq(9), lis_bcanput(9), lis_bcanputnext(9), lis_bcopy(9), lis_bufcall(9), lis_bzero(9), lis_canenable(9), lis_canput(9), lis_canputnext(9), lis_cmn_err(9), lis_copyb(9), lis_copymsg(9), lis_datamsg(9), lis_date(9), lis_dupb(9), lis_dupmsg(9), lis_enableok(9), lis_esballoc(9), lis_esbbcall(9), lis_find_strdev(9), lis_flushband(9), lis_flushq(9), lis_freeb(9), lis_freemsg(9), lis_freeq(9), lis_getq(9), lis_insq(9), lis_isdatablk(9), lis_isdatamsg(9), lis_linkb(9), lis_mknod(9), lis_mount(9), lis_msgdsize(9), lis_msgpullup(9), lis_msgsize(9), lis_noenable(9), lis_OTHER(9), lis_OTHERQ(9), lis_pullupmsg(9), lis_putbq(9), lis_putctl1(9), lis_putctl(9), lis_putnext(9), lis_putnextctl1(9), lis_putnextctl(9), lis_putq(9), lis_qattach(9), lis_qclose(9), lis_qdetach(9), lis_qenable(9), lis_qprocsoff(9), lis_qprocson(9), lis_qreply(9), lis_qsize(9), lis_RD(9), lis_register_strdev(9), lis_register_strmod(9), lis_rmvb(9), lis_rmvq(9), lis_safe_canenable(9), lis_safe_enableok(9), lis_safe_noenable(9), lis_safe_OTHERQ(9), lis_safe_putnext(9), lis_safe_qreply(9), lis_safe_RD(9), lis_safe_SAMESTR(9), lis_safe_WR(9), lis_SAMESTR(9), lis_strqget(9), lis_strqset(9), lis_testb(9), lis_timeout(9), lis_umount2(9), lis_umount(9), lis_unbufcall(9), lis_unlink(9), lis_unlinkb(9), lis_unregister_strdev(9), lis_unregister_strmod(9), lis_untimeout(9), lis_version(9), lis_WR(9), lis_xmsgsize(9), makedevice(9), max(9), mblk_t(9), mi_bufcall(9), mi_close_comm(9), mi_next_ptr(9), mi_open_comm(9), mknod(9), module_info(9), mount(9), msgb(9), msgdsize(9), msgpullup(9), msgsize(9), noenable(9), OTHERQ(9), pullupmsg(9), put(9), putbq(9), putctl1(9), putctl2(9), putctl(9), putnext(9), putnextctl1(9), putnextctl2(9), putnextctl(9), putq(9), qattach(9), qband(9), qbufcall(9), qi_qclose(9), qcountstrm(9), qdetach(9), qenable(9), qinit(9), qi_qopen(9), qprocsoff(9), qprocson(9), qreply(9), qsize(9), qtimeout(9), queclass(9), queinfo(9), queue(9), queue_t(9), qunbufcall(9), quntimeout(9), qwait(9), qwait_sig(9), qwriter(9), RD(9), register_inode(9), register_inode_major(9), register_inode_minor(9), register_strdev(9), register_strdev_major(9), register_strdev_minor(9), register_strmod(9), rmvb(9), rmvq(9), SAMESTR(9), setq(9), streamtab(9), strlog(9), strqget(9), strqset(9), testb(9), timeout(9), umount(9), unbufcall(9), unfreezestr(9), unlink(9), unlinkb(9), unregister_inode(9), unregister_inode_major(9), unregister_inode_minor(9), unregister_strdev(9), unregister_strdev_major(9), unregister_strdev_minor(9), unregister_strmod(9), untimeout(9), unweldq(9), wantio(9), wantmsg(9), weldq(9), WR(9), xmsgsize(9).

HISTORY

STREAMS first appeared in SVR 3[16].

REFERENCES

[1]
A Stream Input-Output System, AT&T Bell Laboratories Technical Journal, Vol. 63, No. 8, October 1984, (New Jersey), D. M. Ritchie, AT&T. pp. 1879-1910.
[2]
SVR 3, UNIX® System V Release 3 Programmer's Manual, (Englewood Cliffs, New Jersey), AT&T UNIX System Laboratories, Inc., Prentice Hall.
[3]
SVR 4, UNIX® System V Release 4 Programmer's Manual, 1990, (Englewood Cliffs, New Jersey), AT&T UNIX System Laboratories, Inc., Prentice Hall.
[4]
SVR 4.2, UNIX® System V Release 4.2 Programmer's Manual, 1992, (Englewood Cliffs, New Jersey), AT&T UNIX System Laboratories, Inc., Prentice Hall.
[5]
AIX® 5L Version 5.1, AIX STREAMS Programmers Guide, 2001, (Boulder, Colorado), Internatonal Business Machines Corp., IBM. <http://publibn.boulder.ibm.com/>
[6]
HP-UX STREAMS, STREAMS Programmer's Guide -- HP 9000 and Integrity Server Computer Systems, October 2005, (Palo Alto, California), Hewlett-Packard Development Company L.P., HP. <http://docs.hp.com/>
[7]
IRIX® 6.5.17, IRIX® Device Driver Programmer's Guide, 2001, (Mountainview, California), Silicon Graphics, Inc., SGI Technical Publications. <http://techpubs.sgi.com/>
[8]
Revision 1.5d2, Open Transport Module Developer Note, June 18, 1996, (Cupertino, California), Apple Computer, Inc., Apple. <http://developer.apple.com/macos/opentransport/>
[9]
Digital® UNIX (OSF/1.2), Digital UNIX: Network Programmers Guide, 1996, (Palo Alto, California), Digital Equipment Corporation, Hewlett-Packard Company. <http://www.true64unix.compaq.com/docs/>
[10]
Solaris® 8, STREAMS Programming Guide, August 1999, (Palo Alto, California), Sun Microsystems, Inc., Sun. [Part No: 805-7478-05] <http://docs-pdf.sun.com/>
[11]
SUPER-UX® Release 9.2, SUPER-UX STREAMS Programmers Guide, 1999, NEC Corporation, NEC.
[12]
UnixWare® 7.1.3, UnixWare® 7 STREAMS Programmer's Guide, 2002, (Lindon, Utah), Caldera International, Inc., Caldera. <http://uw713doc.sco.com/>
[13]
UXP/V® V10L10, UXP/V Programmer's Guide: STREAMS V10, 1997, Fujitsu Limited, Fujitsu.
[14]
USL DDI/DKI, Device Driver Interface/Driver-Kernel Interface (DDI/DKI) Reference Manual for Intel Processors, 1992, (Englewood Cliffs, New Jersey), AT&T UNIX System Laboratories, Inc., Prentice Hall.
[15]
UnixWare® 7.1.3, UnixWare 7.1.3 (OpenUnix 8) Documentation, 2002, (Lindon, Utah), Caldera International, Inc., Caldera. <http://uw713doc.sco.com/>
[16]
SVR 3, UNIX® System V Release 3 STREAMS Programmer's Guide, (Englewood Cliffs, New Jersey), AT&T UNIX System Laboratories, Inc., Prentice Hall.

TRADEMARKS

OpenSS7tm
is a trademark of OpenSS7 Corporation.
Linux®
is a registered trademark of Linus Torvalds.
UNIX®
is a registered trademark of The Open Group.
Solaris®
is a registered trademark of Sun Microsystems.

Other trademarks are the property of their respective owners.

IDENTIFICATION


Linux Fast-STREAMS: Package streams version 0.9.2.4 released 2008-10-31.

Copyright©1997-2008OpenSS7 Corp. All Rights Reserved.
(See roff source for permission notice.)



Index

NAME
SYNOPSIS
INTERFACE
OVERVIEW
Background
What is STREAMS?
Why STREAMS?
Why STREAMS for Linux?
History of STREAMS for Linux
Why Fast?
DESCRIPTION
Header Files
Common Drivers
Common Modules
System Calls
STREAMS Module Entry Points
STREAMS Structures
Module and Driver Registration Functions
Message Handling Functions
Queue Handling Functions
Miscellaneous Functions
EXTENSIONS
Common Extensions
Linux Fast-STREAMS Extensions
Linux Fast-STREAMS Extensions from LiS
COMPATIBILITY
SVR 4.2 MP DDI/DKI Compatibility Functions
AIX® 5L Version 5.1 Compatibility Functions
HP-UX® 11.0i v2 Compatibility Functions
OSF/1 1.2---Digial UNIX® Compatibility Functions
UnixWare® 7.1.3 (OpenUnix 8) Compatibility Functions
Solaris® 9/SunOS 5.9 Compatibility Functions
MacOT 1.5r2 Compatibility Functions
LiS 2.16 Compatibility Functions
LiS 2.16 Compatibility Functions
Compatibility
IOCTLS
SYSCTLS
SEE ALSO
HISTORY
REFERENCES
TRADEMARKS
IDENTIFICATION

This document was created by man2html, using the manual pages.
Time: 17:47:09 GMT, November 11, 2014
Last modified: Sun, 05 Mar 2006 08:34:18 GMT  
Copyright © 2014 OpenSS7 Corporation All Rights Reserved.