下载
第17章 Unix域协议:实现
17.1 概述
在u i p c _ u s r r e q . c 文件中实现U n i x 域协议的源代码包含1 6个函数,总共大约有1 0 0 0行C
语言源程序,这与在卷 2中实现U D P的8 0 0 行源程序长度差不多,比实现 T C P 的4 5 0 0行源程序
要短得多。
我们分两章来描述U n i x 域协议的实现,下一章讨论 I / O 和描述符传递,其他的内容都在本
章讨论。
17.2 代码介绍
在一个C文件中有1 6 个U n i x 域函数,在其他 C文件和两个头文件中还有其他有关的定义,
如图1 7 - 1所示。
文 件 说 明
s y s / u n . h s o c k a d d r _ u n 结构的定义
s y s / u n p c b . h u n p c b 结构的定义
k e r n / u i p c _ p r o t o . c U n i x 域p r o t o s w { } 和d o m a i n { }的定义
k e r n / u i p c _ u s r r e q . c U n i x 域函数
k e r n / u i p c _ s y s c a l l s . c p i p e 和s o c k e t p a i r系统调用
图17-1 在本章中讨论的文件
在本章我们也介绍p i p e 和s o c k e t p a i r 系统调用,它们都使用本章描述的 U n i x 域函数。
全局变量
图1 7 - 2列出了在本章和下一章中讨论的 11个全局变量。
变 量 数 据 类 型 说 明
u n i x d o m a i n struct domain 域定义(图1 7 - 4 )
u n i x s w struct protosw 协议定义(图1 7 - 5 )
s u n _ n o n a m e struct sockaddr 包含空路径名的插口地址结构
u n p _ d e f e r i n t 延迟入口的无用单元收集计数器
u n p _ g c i n g i n t 如果当前执行无用单元收集函数,就设置
u n p _ i n o i n o _ t 下一个分配的伪i _ n o d e 号的值
u n p _ r i g h t s i n t 当前传送中的文件描述符数
u n p d g _ r e c v s p a c e u _ l o n g 数据报插口接收缓存的默认范围, 4 0 9 6 字节
u n p d g _ s e n d s p a c e u _ l o n g 数据报插口发送缓存的默认范围, 2 0 4 8 字节
u n p s t _ r e c v s p a c e u _ l o n g 流插口接收缓存的默认范围, 4 0 9 6字节
u n p s t _ s e n d s p a c e u _ l o n g 流插口接收缓存的默认范围, 4 0 9 6字节
图17-2 在本章中介绍的全局变量