函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:ZSTD_decompressStream

函数原型:size_t ZSTD_decompressStream(ZSTD_DStream *zds, ZSTD_outBuffer *output, ZSTD_inBuffer *input)

返回类型:size_t

参数:

类型参数名称
ZSTD_DStream *zds
ZSTD_outBuffer *output
ZSTD_inBuffer *input
2300  istart等于srcpos
2301  iend等于srcsize
2302  ip等于istart
2303  ostart等于dstpos
2304  oend等于dstsize
2305  op等于ostart
2306  someMoreWork等于1
2308 someMoreWork循环
2310  :stage恒等于zdss_init
2314  :stage恒等于zdss_loadHeader
2318  如果hSize不等于0则
2319  toLoad等于hSizelhSize
2320  如果toLoad大于iendip
2322  lhSize加等于iendip
2323  pos等于size
2328  lhSize等于hSize
2329  ip加等于toLoad
2330  退出
2334  如果frameContentSizewindowSizeoendop大于等于frameContentSize
2361  windowSize等于MAX(windowSize, 1U << ZSTD_WINDOWLOG_ABSOLUTEMIN)
2362  如果windowSize大于maxWindowSize则返回:-***************************************** Error codes handling(frameParameter_windowTooLarge)
2367  blockSize等于-************************************** shared macros(maxWindowSize, Define for static allocation )
2368  neededOutSize等于maxWindowSizeblockSize! ZSTD_wildcopy() :* custom version of memcpy(), can copy up to 7 bytes too many (8 bytes if length==0) 乘2
2369  如果inBuffSize小于blockSize
2372  如果outBuffSize小于neededOutSize
2375  blockSize等于blockSize
2377  stage等于zdss_read
2381  :stage恒等于zdss_read
2382  neededInSize等于-*************************************** Advanced Streaming Decompression API* Bufferless and synchronous
2383  如果neededInSize恒等于0则
2384  stage等于zdss_init
2385  someMoreWork等于0
2386  退出
2388  如果iendip大于等于neededInSize
2394  ip加等于neededInSize
2395  如果非decodedSize且非isSkipFrame退出
2397  outEnd等于outStartdecodedSize
2398  stage等于zdss_flush
2399  退出
2401  如果ip恒等于iend
2402  someMoreWork等于0
2403  退出
2405  stage等于zdss_load
2410  :stage恒等于zdss_load
2411  neededInSize等于-*************************************** Advanced Streaming Decompression API* Bufferless and synchronous
2412  toLoad等于neededInSizeinPos
2414  如果toLoad大于inBuffSizeinPos则返回:-***************************************** Error codes handling(corruption_detected)
2416  loadedSize等于Decompression *****
2417  ip加等于loadedSize
2418  inPos加等于loadedSize
2419  如果loadedSize小于toLoad
2420  someMoreWork等于0
2421  退出
2431  inPos等于0
2432  如果非decodedSize且非isSkipFrame
2433  stage等于zdss_read
2434  退出
2436  outEnd等于outStartdecodedSize
2437  stage等于zdss_flush
2443  :stage恒等于zdss_flush
2444  toFlushSize等于outEndoutStart
2445  flushedSize等于Decompression *****
2446  op加等于flushedSize
2447  outStart加等于flushedSize
2448  如果flushedSize恒等于toFlushSize
2449  stage等于zdss_read
2450  如果outStartblockSize大于outBuffSizeoutStart等于outEnd等于0
2452  退出
2455  someMoreWork等于0
2456  退出
2458  默认
2459  返回:-***************************************** Error codes handling(GENERIC)
2464  pos加等于ipistart
2465  pos加等于opostart
2467  nextSrcSizeHint等于-*************************************** Advanced Streaming Decompression API* Bufferless and synchronous
2468  如果非nextSrcSizeHint
2469  如果outEnd恒等于outStart
2470  如果hostageByte
2471  如果pos大于等于size
2472  stage等于zdss_read
2473  返回:1
2475  pos自加
2477  返回:0
2479  如果非hostageByte
2480  pos自减
2481  hostageByte等于1
2483  返回:1
2485  nextSrcSizeHint加等于ZSTD_blockHeaderSizeZSTD_nextInputType(dctx)恒等于ZSTDnit_block的值
2486  如果inPos大于nextSrcSizeHint则返回:-***************************************** Error codes handling(GENERIC)
2488  nextSrcSizeHint减等于inPos
2489  返回:nextSrcSizeHint