plan 9 kernel history: overview | file list | diff list

1992/0318/boot/nopsession.c (diff list | history)

boot/nopsession.c on 1992/0318
1992/0318    
#include <u.h> 
#include <libc.h> 
#include <fcall.h> 
#include "../boot/boot.h" 
 
static Fcall	hdr; 
static char	buf[4*1024]; 
 
void 
nop(int fd) 
{ 
	long n; 
 
	print("nop..."); 
	hdr.type = Tnop; 
	hdr.tag = NOTAG; 
	n = convS2M(&hdr, buf); 
	if(write(fd, buf, n) != n) 
		fatal("write nop"); 
	n = read(fd, buf, sizeof buf); 
	if(n==2 && buf[0]=='O' && buf[1]=='K') 
		n = read(fd, buf, sizeof buf); 
	if(n <= 0) 
		fatal("read nop"); 
	if(convM2S(buf, &hdr, n) == 0) { 
		print("n = %d; buf = %#.2x %#.2x %#.2x %#.2x\n", 
			n, buf[0], buf[1], buf[2], buf[3]); 
		fatal("format nop"); 
	} 
	if(hdr.type != Rnop) 
		fatal("not Rnop"); 
} 
 
void 
session(int fd) 
{ 
	long n; 
 
	print("session..."); 
	hdr.type = Tsession; 
	hdr.tag = NOTAG; 
	n = convS2M(&hdr, buf); 
	if(write(fd, buf, n) != n) 
		fatal("write session"); 
	n = read(fd, buf, sizeof buf); 
	if(n <= 0) 
		fatal("read session"); 
	if(convM2S(buf, &hdr, n) == 0) 
		fatal("format session"); 
	if(hdr.type == Rerror){ 
		print("error %s;", hdr.ename); 
		fatal(hdr.ename); 
	} 
	if(hdr.type != Rsession) 
		fatal("not Rsession"); 
} 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)