.help zfiobf May84 "System Interface" .ih NAME zfiobf -- binary file driver .ih SYNOPSIS .nf zopnbf (osfn, mode, chan) # open or create binary file zclsbf (chan, status) # close binary file zardbf (chan, buf, maxbytes, loffset) # asynchronous read zawrbf (chan, buf, nbytes, loffset) # asynchronous write zawtbf (chan, status) # wait for transfer zsttbf (chan, param, lvalue) # get file/device status packed char osfn[] char buf[] int mode, chan, maxbytes, nbytes, param, status long loffset, lvalue .fi .ih DESCRIPTION A binary file is an extendable array of machine bytes. There are two types of binary files: \fBblocked\fR files, which are randomly accessible in chunks the size of a device block, and \fBstreaming\fR binary files, which are restricted to sequential access and characterized by a variable block size. A binary file is effectively an extension of host memory, i.e., arbitrary regions of memory may be written to a binary file and later restored (possibly at a different location) without modification of the data. Unlike the text file, there are no restrictions on the contents of a binary file. .ih RETURN VALUES When a binary file is opened the kernel assigns a channel to the file and all subsequent file operations refer to the file by the channel number. The asynchronous read and write primitives do not return a status value; the number of bytes read or written or ERR is returned in a subsequent call to \fBzawtbf\fR. Every i/o transfer must be followed by a call to \fBzawtbf\fR. Only one transfer is permitted on a file at a time. .ih NOTES If a file is accessed by name (rather than by channel number) while the file is open the results are machine dependent. If a file is blocked reads and writes must be aligned on block boundaries; file offsets are one-indexed. A binary file may be extended by writing at EOF or by overwriting EOF. All blocks but the last in a blocked file are the same size; the last block may be partially full. A write to a streaming file appends a new block of size \fInbytes\fR to the file; successive blocks may vary in size. Each read from a streaming file returns a single variable length block. .ih SEE ALSO zfiotx, manual pages for the individual routines .endhelp