📄 streams.doc18.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><html><head><link rel="STYLESHEET" type="text/css" href="../../wrs.css"><title>Porting STREAMS Protocols to WindNet STREAMS WindNet STREAMS for Tornado </title></head><body bgcolor="FFFFFF"><p class="navbar" align="right"><a href="index.html"><img border="0" alt="[Contents]" src="../../icons/contents.gif"></a><a href="streams.doc17.html"><img border="0" alt="[Prev]" src="../../icons/prev.gif"></a><a href="streams.doc19.html"><img border="0" alt="[Next]" src="../../icons/next.gif"></a></p><font face="Helvetica, sans-serif" class="sans"><h3 class="H2"><i><a name="88514" class="autotag">4.6 WindNet STREAMS Utility Routines</a></i></h3></font><dl class="margin"><dd><dl class="margin"><dd><p class="Body"><a name="72107" class="autotag"> </a><a href="streams.doc18.html#73639"><i class="title">Table 7</i></a> summarizes the STREAMS utility routines provided with WindNet STREAMS. For details on how to use these routines, consult <i class="title">Programmer's Guide: STREAMS</i> by UNIX Press. <a href="streams.doc18.html#73639"><i class="title">Table 7</i></a> includes only implementation notes and clarifications of possible ambiguities.</p><p class="Body"><a name="81655" class="autotag"> </a>Routines included in <a href="streams.doc18.html#73639"><i class="title">Table 7</i></a> that are indicated as no-op for WindNet STREAMS provide compatibility with other STREAMS implementations.<p class="table"><h4 class="EntityTitle"><a name="73639" class="autotag"><font face="Helvetica, sans-serif" size="-1" class="sans">Table 7. WindNet STREAMS Utility Routines</font></a></h4><table border="0" cellpadding="3" cellspacing="0"><tr><td colspan="20"><hr class="tablerule"></td></tr><tr valign="middle"><th rowspan="1" colspan="1"><div class="CellHeading"><b><a name="73391" class="autotag"> </a><font face="Helvetica, sans-serif" size="-1" class="sans">Routine</font></b></div></th><th rowspan="1" colspan="1"><div class="CellHeading"><b><a name="73393" class="autotag"> </a><font face="Helvetica, sans-serif" size="-1" class="sans">Description</font></b></div></th></tr><tr><td colspan="20"><hr class="tablerule2"></td></tr><tr valign="middle"><th rowspan="1" colspan="1"></th><th rowspan="1" colspan="1"></th></tr><tr><td colspan="20"><hr class="tablerule2"></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73399" class="autotag"> </a><b class="routine"><i class="routine">adjmsg</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73401" class="autotag"> </a>Trim bytes from a message.</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73403" class="autotag"> </a><b class="routine"><i class="routine">allocb</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73405" class="autotag"> </a>Allocate a message block. </div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73407" class="autotag"> </a><b class="routine"><i class="routine">backq</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73412" class="autotag"> </a>Pointer to queue whose <b class="keyword">q_next</b> field points at queue argument.</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73414" class="autotag"> </a><b class="routine"><i class="routine">bcanput</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73416" class="autotag"> </a>Test flow control on a specified band.</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73418" class="autotag"> </a><b class="routine"><i class="routine">bcanputnext</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73420" class="autotag"> </a>Test flow control on a specified band of the next queue in the stream.</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73422" class="autotag"> </a><b class="routine"><i class="routine">bufcall</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73424" class="autotag"> </a>Recover from <b class="routine"><i class="routine">allocb</i></b><b>( )</b> failure. </div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73426" class="autotag"> </a><b class="routine"><i class="routine">canput</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73428" class="autotag"> </a>Test flow control on band 0.</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73430" class="autotag"> </a><b class="routine"><i class="routine">canputnext</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73440" class="autotag"> </a>SVR4 multi-threaded version of <b class="routine"><i class="routine">canput</i></b><b>( )</b>. <sup><b class="FootnoteMarker">1</b></sup></div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73442" class="autotag"> </a><b class="routine"><i class="routine">copyb</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73444" class="autotag"> </a>Copy a message block.</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73446" class="autotag"> </a><b class="routine"><i class="routine">copymsg</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73448" class="autotag"> </a>Copy a message.</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73450" class="autotag"> </a><b class="routine"><i class="routine">datamsg</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73452" class="autotag"> </a>Test if a message is a data message.</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73454" class="autotag"> </a><b class="routine"><i class="routine">dupb</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73456" class="autotag"> </a>Duplicate a message block. </div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73458" class="autotag"> </a><b class="routine"><i class="routine">dupmsg</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73460" class="autotag"> </a>Duplicate a message.</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73462" class="autotag"> </a><b class="routine"><i class="routine">enableok</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73464" class="autotag"> </a>Permit a queue to be scheduled.</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73466" class="autotag"> </a><b class="routine"><i class="routine">esballoc</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73468" class="autotag"> </a>Allocate message and data blocks referencing a user-supplied buffer.</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73470" class="autotag"> </a><b class="routine"><i class="routine">flushband</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73472" class="autotag"> </a>Flush messages from a specified band.</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73474" class="autotag"> </a><b class="routine"><i class="routine">flushq</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73476" class="autotag"> </a>Flush messages on a message queue.</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73478" class="autotag"> </a><b class="routine"><i class="routine">freeb</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73480" class="autotag"> </a>Free a message block.</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73482" class="autotag"> </a><b class="routine"><i class="routine">freemsg</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73484" class="autotag"> </a>Free all blocks in a message.</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73486" class="autotag"> </a><b class="routine"><i class="routine">freezestr</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73488" class="autotag"> </a>Disable message processing on a stream for purposes of updating queue structure fields. This is a no-op for WindNet STREAMS. </div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73490" class="autotag"> </a><b class="routine"><i class="routine">getadmin</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73492" class="autotag"> </a>Return pointer to module's <b>qadmin</b> structure.</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73494" class="autotag"> </a><b class="routine"><i class="routine">getmid</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73496" class="autotag"> </a>Return module ID value.</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73498" class="autotag"> </a><b class="routine"><i class="routine">getq</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73500" class="autotag"> </a>Remove first message from message queue.</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73502" class="autotag"> </a><b class="routine"><i class="routine">insq</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73504" class="autotag"> </a>Insert a message on the message queue.</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73506" class="autotag"> </a><b class="routine"><i class="routine">linkb</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73508" class="autotag"> </a>Concatenate two messages.</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73510" class="autotag"> </a><b class="routine"><i class="routine">msgdsize</i></b><b>( )</b></div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="73512" class="autotag"> </a>Compute number of data bytes in a message.</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="73514" class="autotag"> </a><b class="routine"><i class="routine">msgpullup</i></b><b>( )</b></div>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -