函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:ZSTD_compressBlock_opt_extDict_generic

函数原型:void ZSTD_compressBlock_opt_extDict_generic(ZSTD_CCtx *ctx, const void *src, size_t srcSize, const int ultra)

返回类型:void

参数:

类型参数名称
ZSTD_CCtx *ctx
const void *src
size_tsrcSize
const intultra
702  seqStorePtr等于seqStore的地址
703  istart等于src
704  ip等于istart
705  anchor等于istart
706  iend等于istartsrcSize
707  ilimit等于iend减8
708  base等于base
709  lowestIndex等于lowLimit
710  dictLimit等于dictLimit
711  prefixStart等于basedictLimit
712  dictBase等于dictBase
713  dictEnd等于dictBasedictLimit
715  maxSearches等于1U左移searchLog
716  sufficient_len等于targetLength
717  mls等于searchLength
718  minMatch等于如果searchLength恒等于3则3否则4
720  opt等于 opt
721  matches等于matchTable
728 i小于umber of repcodes 循环rep[i]等于rep[i]
732  nextToUpdate3等于nextToUpdate
733  ZSTD_rescaleFreqs(seqStorePtr, (constBYTE * )src, srcSize)
734  ip加等于ip恒等于prefixStart
737 ip小于ilimit循环
740  curr等于ipbase
741  memset(opt, 0, sizeof(ZSTD_optimal_t))
742  last_pos等于0
743  litlen等于ipanchor
748 i小于last_i循环
749  repCur等于如果i恒等于ZSTD_REP_MOVE_OPTrep[0]减1否则rep[i]
750  repIndex等于currrepCur
751  repBase等于如果repIndex小于dictLimitdictBase否则base
752  repMatch等于repBaserepIndex
753  如果repCur大于0且repCur小于等于currdictLimit减1减repIndex大于等于3按位与repIndex大于lowestIndex safe only for comparisons 恒等于 safe only for comparisons
780  match_num等于ZSTD_BtGetAllMatches_selectMLS_extDict(ctx, ip, iend, maxSearches, mls, matches, minMatch)
782  如果非last_pos且非match_num
783  ip自加
784  继续下一循环
789 i小于umber of repcodes 循环rep[i]等于rep[i]
792  mlen等于1
795  best_mlen等于len
796  best_off等于off
797  cur等于0
798  last_pos等于1
799  转到:_storeSequence
802  best_mlen等于如果last_poslast_pos否则minMatch
805 u小于match_num循环
806  mlen等于如果u大于0则len加1否则best_mlen
807  best_mlen等于len
808  litlen等于litlen
809 mlen小于等于best_mlen循环
811  如果mlen大于last_posprice小于price
813  mlen自加
817  如果last_pos小于minMatch
818  ip自加
819  继续下一循环
823 cur小于等于last_pos循环
824  inr等于ipcur
826  如果mlen恒等于1则
827  litlen等于litlen加1
828  如果cur大于litlen
832  否则
833  litlen等于1
837  如果cur大于last_posprice小于等于price
840  如果cur恒等于last_pos退出
843  如果inr大于ilimit则继续下一循环
846  mlen等于mlen
847  如果off大于ZSTD_REP_MOVE_OPT
848  rep[2]等于rep[1]
849  rep[1]等于rep[0]
850  rep[0]等于offZSTD_REP_MOVE_OPT
851  否则
852  rep[2]等于如果off大于1则rep[1]否则rep[2]
853  rep[1]等于如果off大于0则rep[0]否则rep[1]
854  rep[0]等于如果off恒等于ZSTD_REP_MOVE_OPTmlen不等于1则rep[0]减1否则rep[off]
858  best_mlen等于minMatch
861 i小于last_i循环
862  repCur等于如果i恒等于ZSTD_REP_MOVE_OPTrep[0]减1否则rep[i]
863  repIndex等于currcurrepCur
864  repBase等于如果repIndex小于dictLimitdictBase否则base
865  repMatch等于repBaserepIndex
866  如果repCur大于0且repCur小于等于currcurdictLimit减1减repIndex大于等于3按位与repIndex大于lowestIndex safe only for comparisons 恒等于 safe only for comparisons
870  repEnd等于如果repIndex小于dictLimitdictEnd否则iend
874  best_mlen等于mlen
875  best_off等于i
876  last_pos等于cur加1
877  转到:_storeSequence
880  best_off等于imlen不等于1的值
881  如果mlen大于best_mlenbest_mlen等于mlen
884  循环
885  如果mlen恒等于1则
892  否则
893  litlen等于0
897  如果curmlen大于last_posprice小于等于price
899  mlen自减
900 mlen大于等于minMatch循环
908  best_mlen等于len
909  best_off等于off
910  last_pos等于cur加1
911  转到:_storeSequence
915 u小于match_num循环
916  mlen等于如果u大于0则len加1否则best_mlen
917  best_mlen等于len
919 mlen小于等于best_mlen循环
920  如果mlen恒等于1则
921  litlen等于litlen
922  如果cur大于litlenprice等于priceZSTD_getPrice(seqStorePtr, litlen, ip + cur - litlen, off - 1, mlen - MINMATCH, ultra)
927  否则
928  litlen等于0
932  如果curmlen大于last_posprice小于price
935  mlen自加
940  best_mlen等于mlen
941  best_off等于off
942  cur等于last_posbest_mlen
945  _storeSequence :
946  mlen等于1
948  当1循环
949  mlen等于mlen
950  offset等于off
951  mlen等于best_mlen
952  off等于best_off
953  best_mlen等于mlen
954  best_off等于offset
955  如果mlen大于cur退出
957  cur减等于mlen
960 u小于等于last_pos循环
961  u加等于mlen
964 cur小于last_pos循环
965  mlen等于mlen
966  如果mlen恒等于1则
967  ip自加
968  cur自加
969  继续下一循环
971  offset等于off
972  cur加等于mlen
973  litLength等于ipanchor
975  如果offset大于ZSTD_REP_MOVE_OPT
976  rep[2]等于rep[1]
977  rep[1]等于rep[0]
978  rep[0]等于offsetZSTD_REP_MOVE_OPT
979  offset自减
980  否则
981  如果offset不等于0则
982  best_off等于如果offset恒等于ZSTD_REP_MOVE_OPTrep[0]减1否则rep[offset]
983  如果offset不等于1则rep[2]等于rep[1]
985  rep[1]等于rep[0]
986  rep[0]等于best_off
989  如果litLength恒等于0则offset自减
995  anchor等于ip等于ipmlen
1002 i小于umber of repcodes 循环repToConfirm[i]等于rep[i]
1008  lastLLSize等于iendanchor
1009  内存复制(lit, anchor, lastLLSize)
1010  lit加等于lastLLSize
调用者
名称描述
ZSTD_compressBlock_btopt_extDict
ZSTD_compressBlock_btopt2_extDict