函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:LZ4HC_compress_generic

函数原型:static int LZ4HC_compress_generic(LZ4HC_CCtx_internal *const ctx, const char *const source, char *const dest, int const inputSize, int const maxOutputSize, int compressionLevel, limitedOutput_directive limit)

返回类型:int

参数:

类型参数名称
LZ4HC_CCtx_internal *constctx
const char *constsource
char *constdest
int constinputSize
int constmaxOutputSize
intcompressionLevel
limitedOutput_directivelimit
348  ip等于source
349  anchor等于ip
350  iend等于ipinputSize
351  mflimit等于iendMFLIMIT
352  matchlimit等于iendLASTLITERALS
354  op等于dest
355  oend等于opmaxOutputSize
359  const BYTE * ref = NULL
360  const BYTE * start2 = NULL
361  const BYTE * ref2 = NULL
362  const BYTE * start3 = NULL
363  const BYTE * ref3 = NULL
368  如果compressionLevel大于LZ4HC_MAX_CLEVELcompressionLevel等于LZ4HC_MAX_CLEVEL
370  如果compressionLevel小于1则compressionLevel等于LZ4HC_DEFAULT_CLEVEL
372  maxNbAttempts等于1左移compressionLevel减1位
373  xt block to continue on current prefix 加等于inputSize
375  ip自加
378 ip小于mflimit循环
379  ml等于LZ4HC_InsertAndFindBestMatch(ctx, ip, matchlimit, ( & ref), maxNbAttempts)
381  如果非ml
382  ip自加
383  继续下一循环
387  start0等于ip
388  ref0等于ref
389  ml0等于ml
391  _Search2 :
392  如果ipml小于mflimitml2等于LZ4HC_InsertAndGetWiderMatch(ctx, ip + ml - 2, ip + 0, matchlimit, ml, & ref2, & start2, maxNbAttempts)
397  否则ml2等于ml
400  如果ml2恒等于ml
402  如果LZ4HC_encodeSequence( & ip, & op, & anchor, ml, ref, limit, oend)则返回:0
405  继续下一循环
408  如果start0小于ip
409  如果start2小于ipml0
411  ip等于start0
412  ref等于ref0
413  ml等于ml0
418  如果start2ip小于3则
420  ml等于ml2
421  ip等于start2
422  ref等于ref2
423  转到:_Search2
426  _Search3 :
432  如果start2ip小于Local Constants and types
434  new_ml等于ml
441  correction等于new_mlstart2ip
443  如果correction大于0则
444  start2加等于correction
445  ref2加等于correction
446  ml2减等于correction
454  如果start2ml2小于mflimitml3等于LZ4HC_InsertAndGetWiderMatch(ctx, start2 + ml2 - 3, start2, matchlimit, ml2, & ref3, & start3, maxNbAttempts)
459  否则ml3等于ml2
462  如果ml3恒等于ml2
465  如果start2小于ipmlml等于start2ip
468  如果LZ4HC_encodeSequence( & ip, & op, & anchor, ml, ref, limit, oend)则返回:0
471  ip等于start2
472  如果LZ4HC_encodeSequence( & ip, & op, & anchor, ml2, ref2, limit, oend)则返回:0
475  继续下一循环
478  如果start3小于ipml加3则
480  如果start3大于等于ipml
485  如果start2小于ipml
486  correction等于ipmlstart2
488  start2加等于correction
489  ref2加等于correction
490  ml2减等于correction
492  start2等于start3
493  ref2等于ref3
494  ml2等于ml3
498  如果LZ4HC_encodeSequence( & ip, & op, & anchor, ml, ref, limit, oend)则返回:0
501  ip等于start3
502  ref等于ref3
503  ml等于ml3
505  start0等于start2
506  ref0等于ref2
507  ml0等于ml2
508  转到:_Search2
511  start2等于start3
512  ref2等于ref3
513  ml2等于ml3
514  转到:_Search3
522  如果start2小于ipml
523  如果start2ip小于ML_MASK
536  否则ml等于start2ip
539  如果LZ4HC_encodeSequence( & ip, & op, & anchor, ml, ref, limit, oend)则返回:0
543  ip等于start2
544  ref等于ref2
545  ml等于ml2
547  start2等于start3
548  ref2等于ref3
549  ml2等于ml3
551  转到:_Search3
556  lastRun等于iendanchor
558  如果limitopdestlastRun加1加lastRun加255减RUN_MASK的差除255大于maxOutputSize
563  返回:0
565  如果lastRun大于等于RUN_MASK
566  op自加等于RUN_MASK左移ML_BITS
567  lastRun减等于RUN_MASK
568 lastRun大于254循环op自加等于255
570  op自加等于lastRun
571  否则op自加等于lastRun左移ML_BITS
573  内存复制(op, anchor, iend - anchor)
574  op加等于iendanchor
578  返回:opdest
调用者
名称描述
LZ4_compress_HC_extStateHC
LZ4_compressHC_continue_generic