M
- M_BREAKM_BREAK
- M_COPYINM_COPYIN
- M_COPYOUTM_COPYOUT
- transparent ioctl exampleBidirectional Data Transfer Example
- with M_IOCTLM_IOCTL
- M_COPYOUT using transparent ioctl
- exampleM_COPYOUT
- M_CTLM_CTL
- M_STOPSO_MREADOFF and M_STOP
- SO_MREADOFFSO_MREADOFF and M_STOP
- with line discipline moduleLine-Discipline Module
- M_DATAM_DATA
- M_DELAYM_DELAY
- M_ERRORM_ERROR
- M_FLUSHM_FLUSH
- flagsM_FLUSH
- flush read and write queuesM_FLUSH Arguments
and bi_flag values
- flush read side of streamM_FLUSH Arguments
and bi_flag values
- flush write side of streamM_FLUSH Arguments
and bi_flag values
- FLUSHRM_FLUSH Arguments
and bi_flag values
- FLUSHRWM_FLUSH Arguments
and bi_flag values
- FLUSHWM_FLUSH Arguments
and bi_flag values
- in module exampleFlushing a Queue
- packet modePacket Mode
- M_FLUSH message handling
- descriptionM_FLUSH Message Handling
- M_HANGUPM_HANGUP
- M_IOCACKM_IOCACK
- with M_COPYOUTM_COPYOUT
- with M_IOCTLM_IOCTL
- M_IOCDATAM_IOCDATA
- M_IOCDATA processing
- example
- Bidirectional Data Transfer
- M_COPYIN: Copy the address Structure
- M_IOCNAKM_IOCNAK
- with M_COPYOUTM_COPYOUT
- with M_IOCTLM_IOCTL
- M_IOCTL
- M_IOCTL
- M_IOCTL
- transparentM_IOCTL
- with M_COPYOUTM_COPYOUT
- M_PASSFPM_PASSFP
- M_PCPROTOM_PCPROTO
- M_PCRSEM_PCRSE
- M_PCSIGM_PCSIG
- M_PROTO
- M_PROTO
- M_PROTO
- M_READM_READ
- M_RSEM_RSE
- M_SETOPTSM_SETOPTS
- SO_FLAGM_SETOPTS
- SO_ISTTYM_SIG
- so_readopt optionsRead Options
- M_SIGM_SIG
- in signalingsignal Message
- M_STOPSO_MREADOFF and M_STOP
- M_STOPISO_MREADOFFI and M_STOPI
- M_UNHANGUPM_UNHANGUP
- managing extended buffers in multithreaded environment
- exampleesballoc Example
- manipulating modulesManipulating Modules
- master driver
- in pseudo-tty subsystemSTREAMS-based Pseudo-Terminal Subsystem
- openPseudo-TTY Drivers: ptm and pts
- mdbadb Command
- memory-mapped I/OExtended STREAMS Buffers
- messageStream in More Detail
- accessing queue informationUsing Queue Information
- allocationMessage Allocation and Freeing
- container for data and control informationOverview of Streams in Kernel Space
- create priority band messageMessage Direction
- data alignmentData Alignment
- definitions of priority band fieldsUsing Queue Information
- flow controlControlling Data Flow and Priorities
- freeingMessage Allocation and Freeing
- getmsgSend and Receive Messages
- getpmsgSend and Receive Messages
- high-priority
- Flow Control Mechanism
- Message Ordering with One Priority Band
- linkingMessage Linkage
- M_BREAK
- M_BREAK
- Ordinary Messages, Description
of Communication Flow
- M_COPYIN
- M_COPYIN
- High-Priority Messages, Description
of Communication Flow
- M_COPYOUT
- M_COPYOUT
- High-Priority Messages, Description
of Communication Flow
- M_CTL
- SO_MREADOFF and M_STOP
- M_CTL
- Ordinary Messages, Description
of Communication Flow
- M_DATA
- M_DATA
- Ordinary Messages, Description
of Communication Flow
- M_DELAY
- M_DELAY
- Ordinary Messages, Description
of Communication Flow
- M_ERROR
- M_ERROR
- High-Priority Messages, Description
of Communication Flow
- M_FLUSH High-Priority Messages, Description
of Communication Flow
- M_FLUSHM_FLUSH
- M_HANGUP
- M_HANGUP
- High-Priority Messages, Description
of Communication Flow
- M_IOCACK
- M_IOCACK
- High-Priority Messages, Description
of Communication Flow
- M_IOCDATA
- M_IOCDATA
- High-Priority Messages, Description
of Communication Flow
- M_IOCNAK
- M_IOCNAK
- High-Priority Messages, Description
of Communication Flow
- M_IOCTL
- M_IOCTL
- Ordinary Messages, Description
of Communication Flow
- M_PASSFP
- M_PASSFP
- Ordinary Messages, Description
of Communication Flow
- M_PCPROTO
- M_PCPROTO
- High-Priority Messages, Description
of Communication Flow
- M_PCRSEM_PCRSE
- M_PCSIG
- M_PCSIG
- High-Priority Messages, Description
of Communication Flow
- M_PROTO
- M_PROTO
- Ordinary Messages, Description
of Communication Flow
- M_READ
- M_READ
- High-Priority Messages, Description
of Communication Flow
- M_RSEM_RSE
- M_SETOPTS
- M_SETOPTS
- Ordinary Messages, Description
of Communication Flow
- M_SIGOrdinary Messages, Description
of Communication Flow
- M_STARTHigh-Priority Messages, Description
of Communication Flow
- M_STARTIHigh-Priority Messages, Description
of Communication Flow
- M_STOPHigh-Priority Messages, Description
of Communication Flow
- M_STOPI
- SO_MREADOFFI and M_STOPI
- High-Priority Messages, Description
of Communication Flow
- M_UNHANGUP
- M_UNHANGUP
- High-Priority Messages, Description
of Communication Flow
- msgb structure
- Simple Message Referencing
the Data Block
- Message Structure
- priorityMessage Queues and Message Priority
- putmsgSend and Receive Messages
- putpmsgSend and Receive Messages
- qband structureqband Structure
- qinit structureEntry Points
- queue
- Message Queues
- Message Ordering in a Queue
- queue priorityMessage Ordering in
a Queue
- queue structurequeue Structure
- queues
- Queued Messages
- Message Queueing and Priorities
- read optionsRead Options
- recovering from allocation failureRecovering From No Buffers
- recovering from no buffersRecovering From No Buffers
- retrieve priority band messageMessage Direction
- service interfaceDriver and Module Service Interfaces
- shared dataShared Data
- SO_MREADOFISO_MREADOFFI and M_STOPI
- translation between user application and kernelOverview of Streams in Kernel Space
- typesMessage Types
- using qband informationUsing qband Information
- write optionWrite Options
- message (STREAMS)
- directionSending and Receiving Messages
- flowMessage Processing Procedures
- handled by ptemPseudo-TTY Emulation Module: ptem
- handled by pcktPacket Mode
- high-priority
- High-Priority Messages
- High-Priority Messages, Description
of Communication Flow
- ldterm read sideRead-Side Processing
- ldterm write sideWrite-Side Processing
- linking into queuesSimple Message Referencing
the Data Block
- M_DATASending and Receiving Messages
- M_PCPROTOSending and Receiving Messages
- M_PROTOSending and Receiving Messages
- ordinary
- M_SIG
- Ordinary Messages
- Ordinary Messages, Description
of Communication Flow
- processingMessage Processing Procedures
- sending/receivingSending and Receiving Messages
- structuresMessage Structure
- typesMessage Types
- message blockmessage block
- message block structure
- exampleSimple Message Referencing
the Data Block
- message orderingShared Data Block
- message prioritiesMessage Ordering in a Queue
- message queuemessage queue
- priorityControlling Data Flow and Priorities
- priority levelsMessage Queueing Priority
- message types
- rules for changingMessage Type Change Rules
- messages
- kernelMessage Types
- messages sent by driver to stream head
- M_ERROROpening the Loop-Around Driver
- M_HANGUPOpening the Loop-Around Driver
- M_SIG/M_PCSIGOpening the Loop-Around Driver
- modldrv structure
- driver operations and linkage informationmodldrv
- modlinkage structure
- module link informationmodlinkage
- revision level of loadable modulesmodlinkage
- modlstrmod structure
- module operations and linkage informationmodlstrmod
- modulemodule
- difference with driverPushing a Module
- drainingClosing the Stream
- ioctl controlModule and Driver Control
- line disciplineline discipline
- manipulationManipulating Modules
- pushablepushable module
- reusabilityModule Reusability
- module entry point structure
- exampleEntry Points
- module information structure
- exampleEntry Points
- module put
- exampleExample of a Module put Procedure
- module service procedure
- exampleModule service Procedure
- module unloading
- outstanding esballoc callbackUnloading a Module that Uses esballoc
- module_info structure
- exampleEntry Points
- monitor streams eventsInput and Output Polling
- msgb structureSimple Message Referencing
the Data Block
- msgdsizeKernel Utility Interfaces
- MT SAFE
- cb_flag for driverMT SAFE Driver
- driverMT SAFE Driver
- f_flag for moduleMT SAFE Module
- moduleMT SAFE Module
- multiple process write
- same pipeAtomic Writes
- multiplexermultiplexer
- building
- Streams Before
Link
- Building a Multiplexer
- controlling streamStreams Before
Link
- data routingRouting Data Through a Multiplexer
- declarationsMultiplexing Driver Example
- definitionConfiguring Multiplexed Streams
- design guidelinesDesign Guidelines
- dismantlingDismantling a Multiplexer
- driver
- Lower Read put Procedure
- Multiplexing Driver Example
- example
- Multiplexer Construction Example
- Multiplexer Construction Example
- lowerSTREAMS Multiplexers
- lower connection
- Connecting Lower Streams
- Connecting Lower Streams
- lower disconnectionDisconnecting Lower Streams
- lower read put procedure
- Lower Read put Procedure
- Lower Read put Procedure
- lower stream
- lower stream
- Configuring Multiplexed Streams
- lower write service procedureLower Write service Procedure
- lower write service procedureLower Write service Procedure
- minor device connectConnecting And Disconnecting Lower Streams
- minor device disconnectDisconnecting Lower Streams
- pseudo-device driverConfiguring Multiplexed Streams
- upperSTREAMS Multiplexers
- upper stream
- upper stream
- Configuring Multiplexed Streams
- upper write service procedureUpper Write service Procedure
Sample
- upper-queue write put procedureUpper Write put Procedure
Sample
- multiplexer ID
- in multiplexer buildingStreams Before
Link
- in multiplexer dismantlingDismantling a Multiplexer
- multiplexing STREAMSConfiguring Multiplexed Streams
- multithread framework
- MT SAFEMT SAFE Modules and Drivers
- perimetersMT SAFE Modules and Drivers
- multithreaded kernelMultithreading the Kernel
- porting toPreparing to Port
- multithreaded module
- explicit locksMT SAFE Modules Using Explicit Locks
- explicit locks, constraintsConstraints When Using Locks
- preserving message orderingPreserving Message Ordering
- multithreaded perimeter
- choosing a typeChoosing a Perimeter Type
- defining a typeDefining Perimeter Types
- descriptionMT STREAMS Perimeters
- exclusive/shared access flagsOuter Perimeter Flag
- flagsChoosing a Perimeter
Type
- fully-hotHot Perimeters
- innerInner Perimeters
- inner perimeter flagsChoosing a Perimeter
Type
- outerOuter Perimeters
- outer perimeter flagsInner Perimeter Flags
- PERMODPERMOD Perimeter
- routines used inside a perimeterRoutines Used Inside a Perimeter
- multithreaded STREAMS
- concepts and terminologyMultithreaded (MT) STREAMS Overview
- multithreaded STREAMS module with outer perimeter
- exampleMultithread Module with Outer Perimeter
- multithreaded STREAMS pseudo-driver using an inner perimeter
- exampleMultithreaded, Loadable, STREAMS
Pseudo-Driver
- muxuwput
- upper-queue write put procedureUpper Write put Procedure
Sample