⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 thwack.h

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 H
字号:
typedef struct Thwack		Thwack;typedef struct Unthwack		Unthwack;typedef struct ThwBlock		ThwBlock;typedef struct UnthwBlock	UnthwBlock;enum{	ThwStats	= 8,	ThwErrLen	= 64,		/* max length of error message from thwack or unthwack */	ThwMaxBlock	= 1600,		/* max size of compressible block */	HashLog		= 12,	HashSize	= 1<<HashLog,	HashMask	= HashSize - 1,	MinMatch	= 3,		/* shortest match possible */	MaxOff		= 8,	OffBase		= 6,	MinDecode	= 8,		/* minimum bits to decode a match or lit; >= 8 */	CompBlocks	= 10,		/* max blocks used to encode data */	EWinBlocks	= 64,		/* blocks held in encoder window */	DWinBlocks	= EWinBlocks,	/* blocks held in decoder window */	MaxSeqMask	= 8,		/* number of bits in coding block mask */	MaxSeqStart	= 256		/* max offset of initial coding block */};struct ThwBlock{	ulong	seq;			/* sequence number for this data */	uchar	acked;			/* ok to use this block; the decoder has it */	ushort	begin;			/* time of first byte in hash */	uchar	*edata;			/* last byte of valid data */	ushort	maxoff;			/* time of last valid hash entry */	ushort	*hash;	uchar	*data;};struct Thwack{	QLock		acklock;	/* locks slot, blocks[].(acked|seq) */	int		slot;		/* next block to use */	ThwBlock	blocks[EWinBlocks];	ushort		hash[EWinBlocks][HashSize];	Block		*data[EWinBlocks];};struct UnthwBlock{	ulong	seq;			/* sequence number for this data */	ushort	maxoff;			/* valid data in each block */	uchar	*data;};struct Unthwack{	int		slot;		/* next block to use */	char		err[ThwErrLen];	UnthwBlock	blocks[DWinBlocks];	uchar		data[DWinBlocks][ThwMaxBlock];};void	thwackinit(Thwack*);void	thwackcleanup(Thwack *tw);void	unthwackinit(Unthwack*);int	thwack(Thwack*, int mustadd, uchar *dst, int ndst, Block *bsrc, ulong seq, ulong stats[ThwStats]);void	thwackack(Thwack*, ulong seq, ulong mask);int	unthwack(Unthwack*, uchar *dst, int ndst, uchar *src, int nsrc, ulong seq);ulong	unthwackstate(Unthwack *ut, uchar *mask);int	unthwackadd(Unthwack *ut, uchar *src, int nsrc, ulong seq);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -