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

1990/1231/ss/dat.h (diff list | history)

1990/1226/sys/src/9/ss/dat.h:8,161990/1231/sys/src/9/ss/dat.h:8,19 (short | long | prev | next)
1990/1223    
typedef struct Env	Env; 
typedef struct Envp	Envp; 
typedef struct Envval	Envval; 
1990/1231    
typedef struct Etherpkt	Etherpkt; 
1990/1223    
typedef struct FFrame	FFrame; 
typedef struct FPsave	FPsave; 
typedef struct KMap	KMap; 
1990/1231    
typedef struct Lance	Lance; 
typedef struct Lancemem	Lancemem; 
1990/1223    
typedef struct Label	Label; 
typedef struct List	List; 
typedef struct Lock	Lock; 
1990/1226/sys/src/9/ss/dat.h:19,251990/1231/sys/src/9/ss/dat.h:22,33
1990/1223    
typedef struct Mach	Mach; 
typedef struct Mount	Mount; 
typedef struct Mtab	Mtab; 
1990/1231    
typedef struct Noconv	Noconv; 
typedef struct Nohdr	Nohdr; 
typedef struct Noifc	Noifc; 
1990/1223    
typedef struct Note	Note; 
1990/1231    
typedef struct Nomsg	Nomsg; 
typedef struct Nocall	Nocall; 
1990/1223    
typedef struct Orig	Orig; 
typedef struct PTE	PTE; 
typedef struct Page	Page; 
1990/1226/sys/src/9/ss/dat.h:146,1511990/1231/sys/src/9/ss/dat.h:154,161
1990/1223    
	int	nbitmap;	/* bitmap structs (devbit.c) */ 
	int	nbitbyte;	/* bytes of bitmap data (devbit.c) */ 
	int	nfont;		/* font structs (devbit.c) */ 
1990/1231    
	ulong	nnoifc;		/* number of nonet interfaces */ 
	ulong	nnoconv;	/* number of nonet conversations/ifc */ 
1990/1223    
	int	nurp;		/* max urp conversations */ 
	int	nasync;		/* number of async protocol modules */ 
	int	npipe;		/* number of pipes */ 
1990/1226/sys/src/9/ss/dat.h:497,5021990/1231/sys/src/9/ss/dat.h:507,641
1990/1223    
	Streambhi= 32,		/* block count high water mark */ 
}; 
 
1990/1231    
/* 
 *  Ethernet packet buffers. 
 */ 
struct Etherpkt { 
	uchar d[6]; 
	uchar s[6]; 
	uchar type[2]; 
	uchar data[1500]; 
	uchar crc[4]; 
}; 
 
/* 
 *  nonet constants 
 */ 
enum { 
	Nnomsg = 128,		/* max number of outstanding messages */ 
	Nnocalls = 5,		/* maximum queued incoming calls */ 
}; 
 
/* 
 *  generic nonet header 
 */ 
struct Nohdr { 
	uchar	circuit[3];	/* circuit number */ 
	uchar	flag; 
	uchar	mid;		/* message id */ 
	uchar	ack;		/* piggy back ack */ 
	uchar	remain[2];	/* count of remaing bytes of data */ 
	uchar	sum[2];		/* checksum (0 means none) */ 
}; 
#define NO_HDRSIZE 10 
#define NO_NEWCALL	0x1	/* flag bit marking a new circuit */ 
#define NO_HANGUP	0x2	/* flag bit requesting hangup */ 
#define NO_ACKME	0x4	/* acknowledge this message */ 
#define NO_SERVICE	0x8	/* message includes a service name */ 
 
/* 
 *  a buffer describing a nonet message 
 */ 
struct Nomsg { 
	Blist; 
	Rendez	r; 
	int	mid;		/* sequence number */ 
	int	rem;		/* remaining */ 
	long	time; 
	int	acked; 
	int	inuse; 
}; 
 
/* 
 *  one exists for each Nonet conversation. 
 */ 
struct Noconv { 
	QLock; 
 
	Stream	*s; 
	Queue	*rq;		/* input queue */ 
	int	version;	/* incremented each time struct is changed */ 
	int	state;		/* true if listening */ 
 
	Nomsg	in[Nnomsg];	/* messages being received */ 
	int	rcvcircuit;	/* circuit number of incoming packets */ 
 
	uchar	ack[Nnomsg];	/* acknowledgements waiting to be sent */ 
	int	afirst; 
	int	anext; 
 
	QLock	xlock;		/* one trasmitter at a time */ 
	Rendez	r;		/* process waiting for an output mid */ 
	Nomsg	ctl;		/* for control messages */ 
	Nomsg	ackmsg;		/* for acknowledge messages */ 
	QLock	mlock;		/* lock for out */ 
	Nomsg	out[Nnomsg];	/* messages being sent */ 
	int	first;		/* first unacknowledged message */ 
	int	next;		/* next message buffer to use */ 
	int	lastacked;	/* last message acked */		 
	Block	*media;		/* prototype media output header */ 
	Nohdr	*hdr;		/* nonet header inside of media header */ 
 
	Noifc	*ifc; 
	char	raddr[NAMELEN];	/* remote address */ 
	char	ruser[NAMELEN];	/* remote user */ 
	char	addr[NAMELEN];	/* local address */ 
	int	rexmit;		/* statistics */ 
	int	retry; 
	int	bad; 
	int	sent; 
	int	rcvd; 
}; 
 
/* 
 *  an incoming call 
 */ 
struct Nocall { 
	Block	*msg; 
	char	raddr[NAMELEN]; 
	long	circuit; 
}; 
 
/* 
 *  a nonet interface.  one exists for every stream that a  
 *  nonet multiplexor is pushed onto. 
 */ 
struct Noifc { 
	Lock; 
	int	ref; 
	char	name[NAMELEN];	/* interface name */		 
	Queue	*wq;		/* interface output queue */ 
	Noconv	*conv; 
 
	/* 
	 *  media dependent 
	 */ 
	int	maxtu;		/* maximum transfer unit */ 
	int	mintu;		/* minimum transfer unit */ 
	int	hsize;		/* media header size */ 
	void	(*connect)(Noconv *, char *); 
 
	/* 
	 *  calls and listeners 
	 */ 
	QLock	listenl; 
	Rendez	listenr; 
	Lock	lock; 
	Nocall	call[Nnocalls]; 
	int	rptr; 
	int	wptr; 
}; 
 
1990/1223    
#define NSTUB 32 
struct Service 
{ 
1990/1226/sys/src/9/ss/dat.h:509,5141990/1231/sys/src/9/ss/dat.h:648,676
1990/1223    
	char	name[NAMELEN]; 
}; 
 
1990/1231    
 
/* 
 *  system dependent lance stuff 
 *  filled by lancesetup()  
 */ 
struct Lance 
{ 
	ushort	lognrrb;	/* log2 number of receive ring buffers */ 
	ushort	logntrb;	/* log2 number of xmit ring buffers */ 
	ushort	nrrb;		/* number of receive ring buffers */ 
	ushort	ntrb;		/* number of xmit ring buffers */ 
	ushort	*rap;		/* lance address register */ 
	ushort	*rdp;		/* lance data register */ 
	uchar	ea[6];		/* our ether addr */ 
	int	sep;		/* separation between shorts in lance ram 
				    as seen by host */ 
	ushort	*lanceram;	/* start of lance ram as seen by host */ 
	Lancemem *lm;		/* start of lance ram as seen by lance */ 
	Etherpkt *rp;		/* receive buffers (host address) */ 
	Etherpkt *tp;		/* transmit buffers (host address) */ 
	Etherpkt *lrp;		/* receive buffers (lance address) */ 
	Etherpkt *ltp;		/* transmit buffers (lance address) */ 
}; 
1990/1223    
 
#define	PRINTSIZE	256 
 


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