函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:ZSTD_compressBlock_opt_generic

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

返回类型:void

参数:

类型参数名称
ZSTD_CCtx *ctx
const void *src
size_tsrcSize
const intultra
409  seqStorePtr等于seqStore的地址
410  istart等于src
411  ip等于istart
412  anchor等于istart
413  iend等于istartsrcSize
414  ilimit等于iend减8
415  base等于base
416  prefixStart等于basedictLimit
418  maxSearches等于1U左移searchLog
419  sufficient_len等于targetLength
420  mls等于searchLength
421  minMatch等于如果searchLength恒等于3则3否则4
423  opt等于 opt
424  matches等于matchTable
429  nextToUpdate3等于nextToUpdate
430  ZSTD_rescaleFreqs(seqStorePtr, (constBYTE * )src, srcSize)
431  ip加等于ip恒等于prefixStart
434 i小于umber of repcodes 循环rep[i]等于rep[i]
439 ip小于ilimit循环
442  memset(opt, 0, sizeof(ZSTD_optimal_t))
443  last_pos等于0
444  litlen等于ipanchor
449 i小于last_i循环
450  repCur等于如果i恒等于ZSTD_REP_MOVE_OPTrep[0]减1否则rep[i]
455  best_mlen等于mlen
456  best_off等于i
457  cur等于0
458  last_pos等于1
459  转到:_storeSequence
461  best_off等于iip恒等于anchor的值
462  循环
464  如果mlen大于last_posprice小于price
466  mlen自减
467 mlen大于等于minMatch循环
472  match_num等于ZSTD_BtGetAllMatches_selectMLS(ctx, ip, iend, maxSearches, mls, matches, minMatch)
474  如果非last_pos且非match_num
475  ip自加
476  继续下一循环
480  best_mlen等于len
481  best_off等于off
482  cur等于0
483  last_pos等于1
484  转到:_storeSequence
488  best_mlen等于如果last_poslast_pos否则minMatch
489 u小于match_num循环
490  mlen等于如果u大于0则len加1否则best_mlen
491  best_mlen等于len
492 mlen小于等于best_mlen循环
494  如果mlen大于last_posprice小于price
496  mlen自加
500  如果last_pos小于minMatch
501  ip自加
502  继续下一循环
508 i小于umber of repcodes 循环rep[i]等于rep[i]
511  mlen等于1
512  litlen等于litlen
515 cur小于等于last_pos循环
516  inr等于ipcur
518  如果mlen恒等于1则
519  litlen等于litlen加1
520  如果cur大于litlen
524  否则
525  litlen等于1
529  如果cur大于last_posprice小于等于price
532  如果cur恒等于last_pos退出
535  如果inr大于ilimit则继续下一循环
538  mlen等于mlen
539  如果off大于ZSTD_REP_MOVE_OPT
540  rep[2]等于rep[1]
541  rep[1]等于rep[0]
542  rep[0]等于offZSTD_REP_MOVE_OPT
543  否则
544  rep[2]等于如果off大于1则rep[1]否则rep[2]
545  rep[1]等于如果off大于0则rep[0]否则rep[1]
546  rep[0]等于如果off恒等于ZSTD_REP_MOVE_OPTmlen不等于1则rep[0]减1否则rep[off]
550  best_mlen等于minMatch
553 i小于last_i循环
554  repCur等于如果i恒等于ZSTD_REP_MOVE_OPTrep[0]减1否则rep[i]
560  best_mlen等于mlen
561  best_off等于i
562  last_pos等于cur加1
563  转到:_storeSequence
566  best_off等于imlen不等于1的值
567  如果mlen大于best_mlenbest_mlen等于mlen
570  循环
571  如果mlen恒等于1则
578  否则
579  litlen等于0
583  如果curmlen大于last_posprice小于等于price
585  mlen自减
586 mlen大于等于minMatch循环
594  best_mlen等于len
595  best_off等于off
596  last_pos等于cur加1
597  转到:_storeSequence
601 u小于match_num循环
602  mlen等于如果u大于0则len加1否则best_mlen
603  best_mlen等于len
605 mlen小于等于best_mlen循环
606  如果mlen恒等于1则
607  litlen等于litlen
608  如果cur大于litlenprice等于priceZSTD_getPrice(seqStorePtr, litlen, ip + cur - litlen, off - 1, mlen - MINMATCH, ultra)
613  否则
614  litlen等于0
618  如果curmlen大于last_posprice小于price
621  mlen自加
626  best_mlen等于mlen
627  best_off等于off
628  cur等于last_posbest_mlen
631  _storeSequence :
632  mlen等于1
634  当1循环
635  mlen等于mlen
636  offset等于off
637  mlen等于best_mlen
638  off等于best_off
639  best_mlen等于mlen
640  best_off等于offset
641  如果mlen大于cur退出
643  cur减等于mlen
646 u小于等于last_pos循环
647  u加等于mlen
650 cur小于last_pos循环
651  mlen等于mlen
652  如果mlen恒等于1则
653  ip自加
654  cur自加
655  继续下一循环
657  offset等于off
658  cur加等于mlen
659  litLength等于ipanchor
661  如果offset大于ZSTD_REP_MOVE_OPT
662  rep[2]等于rep[1]
663  rep[1]等于rep[0]
664  rep[0]等于offsetZSTD_REP_MOVE_OPT
665  offset自减
666  否则
667  如果offset不等于0则
668  best_off等于如果offset恒等于ZSTD_REP_MOVE_OPTrep[0]减1否则rep[offset]
669  如果offset不等于1则rep[2]等于rep[1]
671  rep[1]等于rep[0]
672  rep[0]等于best_off
674  如果litLength恒等于0则offset自减
680  anchor等于ip等于ipmlen
687 i小于umber of repcodes 循环repToConfirm[i]等于rep[i]
693  lastLLSize等于iendanchor
694  内存复制(lit, anchor, lastLLSize)
695  lit加等于lastLLSize
调用者
名称描述
ZSTD_compressBlock_btopt
ZSTD_compressBlock_btopt2