| plan 9 kernel history: overview | file list | diff list |
1999/1007/port/thwack.h (diff list | history)
| 1999/1007/sys/src/9/port/thwack.h:1,76 – 1999/1022/sys/src/9/port/thwack.h:1,72 (short | long | prev | next) | ||
|
Increase HashLog to 12. Add Thwstats. Reduce MinDecode to 8. Format edit. Remove Thwack bit buffer.
rsc Fri Mar 4 12:44:25 2005 | ||
| 1999/1001 | typedef struct Thwack Thwack; typedef struct Unthwack Unthwack; typedef struct ThwBlock ThwBlock; typedef struct UnthwBlock UnthwBlock; enum { | |
| 1999/1022 | ThwStats = 8, | |
| 1999/1001 | ThwMaxBlock = 1600, /* max size of compressible block */ MinMatch = 3, /* shortest match possible */ | |
| 1999/1022 | HashLog = 12, | |
| 1999/1001 | HashSize = 1<<HashLog, HashMask = HashSize - 1, | |
| 1999/1007 | MaxFastLen = 9, BigLenCode = 0xf4, /* minimum code for large lenth encoding */ BigLenBase = 4, /* starting items to encode for big lens */ BigLenBits = 8, | |
| 1999/1001 | MaxOff = 8, OffBase = 6, | |
| 1999/1022 | MinDecode = 8, /* minimum bits to decode a match or lit; >= 8 */ | |
| 1999/1007 | MaxOffDecode = 4 + MaxOff + OffBase - 1, MaxLenDecode = 16, | |
| 1999/1001 | EWinBlocks = 32, /* blocks held in encoder window */ DWinBlocks = 32, /* blocks held in decoder window */ CompBlocks = 5, /* max blocks used to encode data */ MaxSeqMask = 8, /* number of bits in coding block mask */ | |
| 1999/1022 | MaxSeqStart = 256 /* max offset of initial coding block */ | |
| 1999/1001 | }; 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 { | |
| 1999/1007 | int slot; /* next block to use */ | |
| 1999/1001 | 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*); | |
| 1999/1022 | int thwack(Thwack*, uchar *dst, uchar *src, int nsrc, ulong seq, ulong stats[ThwStats]); | |
| 1999/1001 | void thwackack(Thwack*, ulong seq, ulong mask); int unthwack(Unthwack*, uchar *dst, int ndst, uchar *src, int nsrc, ulong seq); | |