PK(4) UNIX Programmer's Manual PK(4) NAME pk - packet driver DESCRIPTION The packet driver implements a full-duplex end-to-end flow control strategy for machine-to-machine communication. Packet driver protocol is established by calling _p_k_o_n(2) with a character device file descriptor and a desired packet size in bytes. The packet size must be a power of 2, 32<__s_i_z_e<_4096. The file descriptor must represent an 8-bit data path. This is normally obtained by setting the device in raw mode (see _i_o_c_t_l(2)). The actual packet size, which may be smaller than the desired packet size, is arrived at by negotiation with the packet driver at the remote end of the data link. The packet driver maintains two data areas for incoming and outgoing packets. The output area is needed to implement retransmission on errors, and arriving packets are queued in the input area. Data arriving for a file not open for read- ing are discarded. Initially the size of both areas is set to two packets. It is not necessary that reads and writes be multiples of the packet size although there is less system overhead if they are. Read operations return the maximum amount of data available from the input area up to the number of bytes specified in the system call. The buffer sizes in write operations are not normally transmitted across the link. However, writes of zero length are treated specially and are reflected at the remote end as a zero-length read. This facilitates marking the serial byte stream, usually for del- imiting files. When one side of a packet driver link is shut down by _c_l_o_s_e(2) or _p_k_o_f_f (see _p_k_o_n(2)), _r_e_a_d(2) on the other side will return 0, and _w_r_i_t_e on the other side will raise a SIG- PIPE signal. SEE ALSO pkon(2), pkopen(3) Printed 5/17/83 1