thwack.h
来自「著名操作系统Plan 9的第三版的部分核心源代码。现在很难找到了。Plan 9是」· C头文件 代码 · 共 68 行
H
68 行
typedef struct Thwack Thwack;typedef struct Unthwack Unthwack;typedef struct ThwBlock ThwBlock;typedef struct UnthwBlock UnthwBlock;enum{ ThwStats = 8, 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 */ EWinBlocks = 32, /* blocks held in encoder window */ DWinBlocks = 32, /* blocks held in decoder window */ CompBlocks = 10, /* max blocks used to encode data */ 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{ int slot; /* next block to use */ ThwBlock blocks[EWinBlocks]; ushort hash[EWinBlocks][HashSize]; uchar data[EWinBlocks][ThwMaxBlock];};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 */ UnthwBlock blocks[DWinBlocks]; uchar data[DWinBlocks][ThwMaxBlock];};void thwackinit(Thwack*);void unthwackinit(Unthwack*);int thwack(Thwack*, uchar *dst, uchar *src, int nsrc, 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);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?