[manual index][section index]


fversion - initialize 9P connection and negotiate version


include "sys.m";
sys := load Sys Sys->PATH;

fversion: fn(fd: ref FD, bufsize: int, version: string): (int, string);


Fversion initialises the 9P connection represented by fd and negotiates the maximum message size and the version of the protocol to be used.

The bufsize determines the size of the I/O buffer used to stage 9P requests to the server, subject to the constraints of the server itself. The version is a text string that represents the highest version level the protocol will support.

Fversion returns a tuple (n,useversion) where n is -1 if the request was rejected, and otherwise n is bufsize and useversion is a string representing the negotiated, possibly lower, version of the protocol.

Default values of zero for bufsize and the empty string for version will negotiate sensible defaults for the connection.

The interpretation of the version strings is defined in version(5).

It is rare to use fversion directly; usually the default negotiation performed by the kernel during mount (see sys-bind(2)) is sufficient.


sys-fauth(2), intro(5), version(5).


Fversion returns a value of -1 for n on error, including failure to negotiate acceptable values, and sets the system error string.


The returned value of n when no error occurs should be the negotiated message size but is currently the original bufsize parameter.

SYS-FVERSION(2 ) Rev:  Tue Mar 31 02:42:39 GMT 2015