ref: a7f5ecaf636e38f407c951d0e86dcc4c4f424bd6
dir: /sys/src/cmd/venti/srv/whack.h/
typedef struct Whack Whack; typedef struct Unwhack Unwhack; enum { WhackStats = 8, WhackErrLen = 64, /* max length of error message from thwack or unthwack */ WhackMaxOff = 16*1024, /* max allowed offset */ HashLog = 14, HashSize = 1<<HashLog, HashMask = HashSize - 1, MinMatch = 3, /* shortest match possible */ MinDecode = 8, /* minimum bits to decode a match or lit; >= 8 */ MaxSeqMask = 8, /* number of bits in coding block mask */ MaxSeqStart = 256 /* max offset of initial coding block */ }; struct Whack { ushort begin; /* time of first byte in hash */ ushort hash[HashSize]; ushort next[WhackMaxOff]; uchar *data; }; struct Unwhack { char err[WhackErrLen]; }; void whackinit(Whack*, int level); void unwhackinit(Unwhack*); int whack(Whack*, uchar *dst, uchar *src, int nsrc, ulong stats[WhackStats]); int unwhack(Unwhack*, uchar *dst, int ndst, uchar *src, int nsrc); int whackblock(uchar *dst, uchar *src, int ssize);