函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:lib\zstd\zstd_opt.h Create Date:2022-07-27 08:02:15
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:-************************************** Binary Tree search

函数原型:static U32 ZSTD_insertBtAndGetAllMatches(ZSTD_CCtx *zc, const BYTE *const ip, const BYTE *const iLimit, U32 nbCompares, const U32 mls, U32 extDict, ZSTD_match_t *matches, const U32 minMatchLen)

返回类型:U32

参数:

类型参数名称
ZSTD_CCtx *zc
const BYTE *constip
const BYTE *constiLimit
U32nbCompares
const U32mls
U32extDict
ZSTD_match_t *matches
const U32minMatchLen
238  base等于base
239  curr等于ipbase
240  hashLog等于hashLog
241  h等于ZSTD_hashPtr(ip, hashLog, mls)
242  hashTable等于hashTable
243  matchIndex等于hashTable[h]
244  bt等于chainTable
245  btLog等于chainLog减1
246  btMask等于1U左移btLog位的值减1
247  commonLengthSmaller等于0, commonLengthLarger等于0
248  dictBase等于dictBase
249  dictLimit等于dictLimit
250  dictEnd等于dictBasedictLimit
251  prefixStart等于basedictLimit
252  btLow等于如果btMask大于等于curr则0否则currbtMask
253  windowLow等于lowLimit
254  smallerPtr等于bt加2乘curr按位与btMask的值
255  largerPtr等于bt加2乘curr按位与btMask的值加1
256  matchEndIdx等于curr加8
258  mnum等于0
260  minMatch等于如果mls恒等于3则3否则4
261  bestLength等于minMatchLen减1
263  如果minMatch恒等于3则
264  matchIndex3等于ZSTD_insertAndFindFirstIndexHash3(zc, ip)
265  如果matchIndex3大于windowLowcurrmatchIndex3小于1左移18位则
267  currMl等于0
268  如果非extDictmatchIndex3大于等于dictLimit
269  match等于basematchIndex3
270  如果match[bestLength]恒等于ip[bestLength]则currMl等于ZSTD_count(ip, match, iLimit)
272  否则
280  如果currMl大于bestLength
281  bestLength等于currMl
283  len等于currMl
284  mnum自加
287  如果ipcurrMl恒等于iLimit则转到:update
293  hashTable[h]等于curr
295 nbCompares自减且matchIndex大于windowLow循环
296  nextPtr等于bt加2乘matchIndex按位与btMask的值
297  matchLength等于-************************************** shared macros(commonLengthSmaller, commonLengthLarger)
300  如果非extDictmatchIndexmatchLength大于等于dictLimit
301  match等于basematchIndex
302  如果match[matchLength]恒等于ip[matchLength]则
303  matchLength加等于ZSTD_count(ip + matchLength + 1, match + matchLength + 1, iLimit)加1
305  否则
306  match等于dictBasematchIndex
308  如果matchIndexmatchLength大于等于dictLimitmatch等于basematchIndex
312  如果matchLength大于bestLength
315  bestLength等于matchLength
317  len等于matchLength
318  mnum自加
321  如果ipmatchLength恒等于iLimit退出
325  如果match[matchLength]小于ip[matchLength]则
327  smallerPtr等于matchIndex
329  如果matchIndex小于等于btLow
330  smallerPtr等于dummy32
331  退出
333  smallerPtr等于nextPtr加1
334  matchIndex等于nextPtr[1]
335  否则
337  largerPtr等于matchIndex
339  如果matchIndex小于等于btLow
340  largerPtr等于dummy32
341  退出
343  largerPtr等于nextPtr
344  matchIndex等于nextPtr[0]
348  smallerPtr等于largerPtr等于0
350  update :
351  nextToUpdate等于如果matchEndIdx大于curr加8则matchEndIdx减8否则curr加1
352  返回:mnum
调用者
名称描述
ZSTD_BtGetAllMatchesTree updater, providing best match
ZSTD_BtGetAllMatches_extDictTree updater, providing best match