函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:ZSTD_compressBlock_lazy_extDict_generic

函数原型:void ZSTD_compressBlock_lazy_extDict_generic(ZSTD_CCtx *ctx, const void *src, size_t srcSize, const U32 searchMethod, const U32 depth)

返回类型:void

参数:

类型参数名称
ZSTD_CCtx *ctx
const void *src
size_tsrcSize
const U32searchMethod
const U32depth
2060  seqStorePtr等于seqStore的地址
2061  istart等于src
2062  ip等于istart
2063  anchor等于istart
2064  iend等于istartsrcSize
2065  ilimit等于iend减8
2066  base等于base
2067  dictLimit等于dictLimit
2068  lowestIndex等于lowLimit
2069  prefixStart等于basedictLimit
2070  dictBase等于dictBase
2071  dictEnd等于dictBasedictLimit
2072  dictStart等于dictBaselowLimit
2074  maxSearches等于1左移searchLog
2075  mls等于searchLength
2077  typedef  size_t( * searchMax_f)(ZSTD_CCtx * zc, const BYTE * ip, const BYTE * iLimit, size_t * offsetPtr, U32 maxNbAttempts, U32 matchLengthSearch)
2078  searchMax等于如果searchMethodZSTD_BtFindBestMatch_selectMLS_extDict否则ZSTD_HcFindBestMatch_extDict_selectMLS
2080  offset_1等于rep[0], offset_2等于rep[1]
2083  nextToUpdate3等于nextToUpdate
2084  ip加等于ip恒等于prefixStart
2087 ip小于ilimit循环
2088  matchLength等于0
2089  offset等于0
2090  start等于ip加1
2091  curr等于ipbase
2095  repIndex等于curr加1减offset_1
2096  repBase等于如果repIndex小于dictLimitdictBase否则base
2097  repMatch等于repBaserepIndex
2098  如果dictLimit减1减repIndex大于等于3按位与repIndex大于lowestIndex则如果ZSTD_read32(ip + 1)恒等于ZSTD_read32(repMatch)则
2101  repEnd等于如果repIndex小于dictLimitdictEnd否则iend
2104  如果depth恒等于0则转到:_storeSequence
2111  offsetFound等于99999999
2112  ml2等于searchMax(ctx, ip, iend, & offsetFound, maxSearches, mls)
2113  如果ml2大于matchLengthmatchLength等于ml2, start等于ip, offset等于offsetFound
2117  如果matchLength小于EQUAL_READ32
2118  ip加等于ipanchor右移control skip over incompressible data 位的值加1
2119  继续下一循环
2123  如果depth大于等于1则当ip小于ilimit循环
2125  ip自加
2126  curr自加
2128  如果offset
2129  repIndex等于curroffset_1
2130  repBase等于如果repIndex小于dictLimitdictBase否则base
2131  repMatch等于repBaserepIndex
2132  如果dictLimit减1减repIndex大于等于3按位与repIndex大于lowestIndex则如果ZSTD_read32(ip)恒等于ZSTD_read32(repMatch)则
2135  repEnd等于如果repIndex小于dictLimitdictEnd否则iend
2139  gain2等于repLength乘3
2141  如果repLength大于等于EQUAL_READ32gain2大于gain1matchLength等于repLength, offset等于0, start等于ip
2148  offset2等于99999999
2149  ml2等于searchMax(ctx, ip, iend, & offset2, maxSearches, mls)
2150  gain2等于ml2乘4减====== common function ======
2151  gain1等于matchLength乘4减====== common function ======加4
2152  如果ml2大于等于EQUAL_READ32gain2大于gain1
2153  matchLength等于ml2, offset等于offset2, start等于ip
2154  继续下一循环
2159  如果depth恒等于2且ip小于ilimit
2160  ip自加
2161  curr自加
2163  如果offset
2164  repIndex等于curroffset_1
2165  repBase等于如果repIndex小于dictLimitdictBase否则base
2166  repMatch等于repBaserepIndex
2167  如果dictLimit减1减repIndex大于等于3按位与repIndex大于lowestIndex则如果ZSTD_read32(ip)恒等于ZSTD_read32(repMatch)则
2170  repEnd等于如果repIndex小于dictLimitdictEnd否则iend
2174  gain2等于repLength乘4
2176  如果repLength大于等于EQUAL_READ32gain2大于gain1matchLength等于repLength, offset等于0, start等于ip
2183  offset2等于99999999
2184  ml2等于searchMax(ctx, ip, iend, & offset2, maxSearches, mls)
2185  gain2等于ml2乘4减====== common function ======
2186  gain1等于matchLength乘4减====== common function ======加7
2187  如果ml2大于等于EQUAL_READ32gain2大于gain1
2188  matchLength等于ml2, offset等于offset2, start等于ip
2189  继续下一循环
2193  退出
2197  如果offset
2198  matchIndex等于startbaseoffsetZSTD_REP_MOVE
2199  match等于如果matchIndex小于dictLimitdictBasematchIndex否则basematchIndex
2200  mStart等于如果matchIndex小于dictLimitdictStart否则prefixStart
2201 start大于anchormatch大于mStartstart[ - 1]恒等于match[ - 1]循环
2202  start自减
2203  match自减
2204  matchLength自加
2206  offset_2等于offset_1
2207  offset_1等于offsetZSTD_REP_MOVE
2211  _storeSequence :
2212  litLength等于startanchor
2213  ! ZSTD_storeSeq() :Store a sequence (literal length, literals, offset code and match length code) into seqStore_t.`offsetCode` : distance to match, or 0 == repCode.`matchCode` : matchLength - MINMATCH
2214  anchor等于ip等于startmatchLength
2218 ip小于等于ilimit循环
2219  repIndex等于ipbaseoffset_2
2220  repBase等于如果repIndex小于dictLimitdictBase否则base
2221  repMatch等于repBaserepIndex
2222  如果dictLimit减1减repIndex大于等于3按位与repIndex大于lowestIndex则如果ZSTD_read32(ip)恒等于ZSTD_read32(repMatch)则
2225  repEnd等于如果repIndex小于dictLimitdictEnd否则iend
2226  matchLength等于ZSTD_count_2segments() :* can count match length with `ip` & `match` in 2 different segments.* convention : on reaching mEnd, match count continue starting from iStartEQUAL_READ32
2228  offset等于offset_2
2229  offset_2等于offset_1
2230  offset_1等于offset
2231  ! ZSTD_storeSeq() :Store a sequence (literal length, literals, offset code and match length code) into seqStore_t.`offsetCode` : distance to match, or 0 == repCode.`matchCode` : matchLength - MINMATCH
2232  ip加等于matchLength
2233  anchor等于ip
2234  继续下一循环
2236  退出
2241  repToConfirm[0]等于offset_1
2242  repToConfirm[1]等于offset_2
2246  lastLLSize等于iendanchor
2247  内存复制(lit, anchor, lastLLSize)
2248  lit加等于lastLLSize
调用者
名称描述
ZSTD_compressBlock_greedy_extDict
ZSTD_compressBlock_lazy_extDict
ZSTD_compressBlock_lazy2_extDict
ZSTD_compressBlock_btlazy2_extDict