OpenSS7
SS7 for the
Common Man
© Copyright 1997-2007 OpenSS7 Corporation All Rights Reserved.
Last modified: Sat, 01 Nov 2008 10:41:55 GMT
Home TopIndex FirstPrev Next LastMore Download Info FAQ Mail  Home -> Documentation -> Man Pages -> Manpage of NOENABLE
Quick Links

Download

SCTP

SIGTRAN

SS7

Hardware

STREAMS

Asterisk

Related

Package

Manual

FAQ

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

Manpage of NOENABLE

Description: Manual Page

Keywords: ss7 ss7/ip ss7 over ip ss7 mtp ss7 sccp ss7 tcap sigtran mtp sccp tcap openss7 acb56 linux telephony pstn linux telephony linux nebs linux compactpci


NOENABLE

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

NAME

noenable - disables a STREAMS message queue from being scheduled

SYNOPSIS

#include <sys/stream.h>

void noenable(queue_t *q);

ARGUMENTS

q

the queue for which to suppress scheduling.

INTERFACE

STREAMS.

DESCRIPTION

noenable() sets the QNOENB flag on the specified queue, q. This tells the STREAMS scheduler that the queue not be enabled (scheduled for service by runqueues(9)) when a ordinary priority message is enqueued by putq(9) or putbq(9), or which any messae is enqueued by insq(9). noenable() has no effect on the enablig of queues (scheduling of queue qi_srvp(9) procedures) when the queue is back-enabled, when qenable(9) is called explicitly, or when a message of a high priority message type is enqueued with putq(9) or putbq(9).

noenable() can be cancelled with enableok(9). If noenable() has been called for a queue and enableok(9) has not subsequently been called for the same queue, a second call to noenable() for the queue will have no effect. Whether a queue has been disabled with a call to noenable() can be tested with canenable(9).

USAGE

noenable() can be used to temporarily suspend queue qi_srvp(9) procedure processing for a queue for ordinary priority messages enqueued with putq(9) and putbq(9), and any messages enqueued with insq(9). This permits data messages to be enqueued with putq(9) or putbq(9), and any message to be enqueued with insq(9), without enabling the queue (invoking the queue's qi_srvp(9) procedure).

This facility can be used to provide message coallescing capabilities on read or write queues. For example, multiple messages can be enqueued by a queue's qi_putp(9) procedure without invoking the queue's qi_srvp(9) procedure until a criteria is met. Once the a sufficient time period has elapsed, or once a sufficient number of bytes have been enqueued, the qi_putp(9) procedure, or a timeout(9) callback, can explicity invoke the qi_srvp(9) procedure with qenable(9). The queue's qi_srvp(9) procedure, thus invoked, may coalesce smaller messages into larger ones.

Canonical processing in the Line Discipline, ldterm(4), module can use this capability to perform a similar function.

RETURN

noenable() sets the QNOENB flag and returns void.

ERRORS

noenable() always succeeds.

NOTICES

noenable() does not remove the queue from the current runqueues(9) schedule list. It only sets the QNOENB flag to indicate whether the queue should be subsequently scheduled. To stop a queue from being scheduled, use qprocsoff(9).

CONTEXT

noenable() can be called from any context, including user context, module procedures, callouts, callbacks, soft interrupts (tasklets and bottom halves), and interrupt service routines.

MP-STREAMS

noenable() is MP-safe. noenable() uses atomic bit operations and does not write lock the queue. Therefore, noenable() can be called for a queue that has been frozen with freezestr(9). No global locks need to be held across a call to noenable() and noenable() takes no locks.

If one thread disables a queue with noenable() and another enables the queue with enableok(9), there will be a race condition on the QNOENB flag.

SEE ALSO

appq(9), canenable(9), enableok(9), freezestr(9), insq(9), putbq(9), putq(9), qenable(9), runqueues(9).

BUGS

noenable() has no known bugs.

COMPATIBILITY

noenable() is compatible with SVR 4.2 MP DDI/DKI[1], and systems based on SVR 4[2], with the following portability considerations:

---
The function of noenable() on all implementations is presumably the same: noenable() simply sets the QNOENB flag in the q_flag member of the queue(9) structure. It is the effect of setting this flag on other STREAMS utility functions and the STREAMS scheduler and flow control mechanisms that tend to differ, at least in the documentation.
---
noenable() uses atomic bit operations and does not require taking the queue write lock. This makes noenable() safe for use on a write locked stream that has been frozen with freezestr(9). LiS takes the queue spin lock and uses normal bit operations to set the flag.
---
noenable() may be called on a stream frozen with freezestr(9). SVR 4.2MP DDI/DKI[1], SUPER-UX®[3] and UnixWare®[4] do not permit noenable() to be called on a stream frozen with freezestr(9). Solaris®[5] permits noenable() to be called on a stream frozen with freezestr(9).
Portable STREAMS drivers and modules will not invoke noenable() on a stream that has previously been frozen with freezestr(9).
---
noenable() called with an invalid q argument will have an undefined result. In referenced versions of LiS[6] the result is undefined in the same situations due to an LiS coding error. Repaired versions of LiS will make noenable() fail silently in these situations.
Portable STREAMS drivers and modules will not invoke noenable() with an invalid q argument.
---
noenable() supresses the scheduling of queues for both high priority and ordinary priority messages enqueued with appq(9). Only LiS provides the appq(9) function so the behaviour of noenable() with regard to appq(9) is non-portable anyway. As with insq(9) LiS suppresses the scheduling of queues for any message enqueued with appq(9).
Portable STREAMS drivers and modules will not use the appq(9) function call. STREAMS drivers and modules using the appq(9) function call should not rely on the LiS behavior with regard to noenable().
---
noenable() does not suppress the scheduling of queues when back-enabling is performed, when qenable(9) is explicitly called, or when high priority messages are enqueued with putq(9) or putbq(9).
AIX®, HP-UX® and UXP/V® state that noenable() disables the scheduling of queues resulting from a ordinary priority message being placed on the queue with putq(9) or putbq(9) and that it disables scheduling of queues resulting from any message being placed on the queue with insq(9)[7,8]. LiS also follows this behaviour[6].
OSF/1® and Solaris®, document noenable() a suppressing enabling of queues when an ordinary priority message is enqueued with putq(9), putbq(9), or insq(9), but makes no mention of high priority messages.
Solaris® states that queue class is ignored by insq(9), but lump insq(9) together with putbq(9) and putq(9) when describing noenable()[9,10]. OSF/1®, Solaris®, SUPER-UX® and UnixWare® state that noenable() disables the scheduling of queues resulting from a ordinary priority message being placed on the queue with putq(9), putbq(9) or insq(9), and that the scheduling of queues resulting from back-enabling or high priority messages being enqueued is never suppressed with noenable()[9..12]. Yet SUPER-UX® documents insq(9) as enabling the queue when any message is enqueued by insq(9) unless noenable() has been called for the queue[11]. HP-UX®[13] does not talk about insq(9) behaviour.
Portable STREAMS drivers and modules should not rely upon the behaviour of insq(9) with regard to high priority messages when noenable() is in effect. The best practice is to explicitly enable, using qenable(9), the queue immediately after a high priority message is inserted into the queue with insq(9); thus yeilding like behaviour across all these systems.
---
Binary compatibility is not guaranteed.

See STREAMS(9) for additional compatibility information.

CONFORMANCE

SVR 4.2 MP DDI/DKI[1].

HISTORY

noenable() appears as part of SVR 4.0 STREAMS[2].

noenable() first appeared in SVR 3[14].

REFERENCES

[1]
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.
[2]
SVR 4, UNIX® System V Release 4 STREAMS Programmer's Guide, 1990, (Englewood Cliffs, New Jersey), AT&T UNIX System Laboratories, Inc., Prentice Hall.
[3]
SUPER-UX® Release 9.2, SUPER-UX STREAMS Programmers Guide, 1999, NEC Corporation, NEC.
[4]
UnixWare® 7.1.3, UnixWare® 7 STREAMS Programmer's Guide, 2002, (Lindon, Utah), Caldera International, Inc., Caldera. <http://uw713doc.sco.com/>
[5]
Solaris® 8, STREAMS Programming Guide, August 1999, (Palo Alto, California), Sun Microsystems, Inc., Sun. [Part No: 805-7478-05] <http://docs-pdf.sun.com/>
[6]
LIS 2.18, Linux STREAMS (LiS) 2.18.6 Source Code, Brian Bidulock, ed., OpenSS7 Corporation. <http://www.openss7.org/>
[7]
AIX® 5L Version 5.1, AIX 5L Version 5.1 Documentation, 2001, (Boulder, Colorado), Internatonal Business Machines Corp., IBM. <http://publibn.boulder.ibm.com/>
[8]
UXP/V® V10L10, UXP/V V10L10 Documentation, 1997, Fujitsu Limited, Fujitsu.
[9]
Digital® UNIX (OSF/1.2), Digital UNIX Documentation Library, 2003, (Palo Alto, California), Digital Equipment Corporation, Hewlett-Packard Company. <http://www.true64unix.compaq.com/docs/>
[10]
Solaris® 8, Solaris 8 Docmentation, 2001, (Santa Clara, California), Sun Microsystems, Inc., Sun. <http://docs.sun.com/>
[11]
SUPER-UX® Release 9.2, SUPER-UX Release 9.2 Documentation, 1999, NEC Corporation, NEC.
[12]
UnixWare® 7.1.3, UnixWare 7.1.3 (OpenUnix 8) Documentation, 2002, (Lindon, Utah), Caldera International, Inc., Caldera. <http://uw713doc.sco.com/>
[13]
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/>
[14]
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
ARGUMENTS
INTERFACE
DESCRIPTION
USAGE
RETURN
ERRORS
NOTICES
CONTEXT
MP-STREAMS
SEE ALSO
BUGS
COMPATIBILITY
CONFORMANCE
HISTORY
REFERENCES
TRADEMARKS
IDENTIFICATION

This document was created by man2html, using the manual pages.
Time: 21:40:15 GMT, May 21, 2013
OpenSS7
SS7 for the
Common Man
Home TopIndex FirstPrev Next LastMore Download Info FAQ Mail  Home -> Documentation -> Man Pages -> Manpage of NOENABLE
Last modified: Sat, 01 Nov 2008 10:41:55 GMT
© Copyright 1997-2007 OpenSS7 Corporation All Rights Reserved.