星期四 九月 27, 2007
STREAMS流控机制的实现
STREAMS在Solaris中有广泛的应用,如字符设备驱动程序、网络协议、网卡驱动程序等。如用strconf查询shell STDIN的流配置。
# strconf
ttcompat
ldterm
pterm
pts
STREAMS的流控(flow-control)机制比较简单,STREAMS中的模块(module)或驱动程序(driver)调用canputnext(9f) 检查下个队列(queue)能否接收消息(message),如果下个queue“满”,或者说下个queue中的数据量大于q_hiwat(high-water mark),模块就调用putq(9f) 或putbp(9f)
把消息放到本地queue中,并设置其service函数稍后被调度执行。如果service函数在这一次的运行中没能处理完本地queue中的所有数
据,则有两种方式可以再次调度执行service函数,一是显示地调用qenable(9f);二是隐含地当下个queue的数据量小于q_lowat(low-
water mark)时该模块的service函数即被执行。ttcompat
ldterm
pterm
pts
支持流控的模块都需要定义service入口,流控发生在两个相邻且定义了service入口的queue之间。更加详细的描述请参考《STREAMS programming guide》 或《UNIX System V Networking Programming》 。或者请参考Solaris的源代码 中canputnext() 、putq() 、getq() 的具体实现。 Posted by Judy Chen in STREAMS at 20070927 Comments[0]
Comments:
Search This Site
Recent Entries
- Wake On LAN及其在Solaris中的实现
- Solaris如何配置SpeedStep
- Solaris 3D桌面:Compiz Fusion
- Solaris无线局域网系统架构
- MDB调试STREAMS
- STREAMS流控机制的实现
- 有用的DTrace资源
- 什么是802.11n
- 什么是ZigBee
- SUN服务器获InfoWorld 2007最佳技术奖
- 用dtrace脚本监测进程网络状态
- 在Solaris上Mount NTFS / FAT32 / FAT16 / EXT2 / EXT3文件系统
- 在Solaris上运行Windows
- Solaris又添一Marvell Libertas 8335/8310 802.11b/g无线网卡驱动
- 推荐一个小工具SPC(Solaris Package Companion)
- OpenSolaris和Ubuntu双系统安装
- Solariss无线局域网(WLAN)
- 在MacBook Pro上安装Solaris
- 在Solaris上用cdrecord刻录CD/DVD
- Solaris如何在64位平台上加载32位核心
Photos
| www.flickr.com |
Referrers & Other Stats
View My Stats