函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:sw842_decompress* Decompress the 842-compressed buffer of length @ilen at @in* to the output buffer @out, using no more than @olen bytes.* The compressed buffer must be only a single 842-compressed buffer,

函数原型:int sw842_decompress(const u8 *in, unsigned int ilen, u8 *out, unsigned int *olen)

返回类型:int

参数:

类型参数名称
const u8 *in
unsigned intilen
u8 *out
unsigned int *olen
285  in等于in
286  bit等于0
287  ilen等于ilen
288  out等于out
289  ostart等于out
290  olen等于olen
292  total等于olen
294  olen等于0
296  循环
297  ret等于next_bits( & p, & op, additional bits of each op param )
298  如果ret则返回:ret
301  pr_debug("template is %lx\n", (unsignedlong)op)
304  :op恒等于special templates
305  ret等于next_bits( & p, & rep, REPEAT_BITS)
306  如果ret则返回:ret
309  如果out恒等于out则返回:负EINVAL
313  rep自加
315  如果rep乘8大于olen则返回:负ENOSPC
318 rep自减大于0循环
319  内存复制(out, out - 8, 8)
320  out加等于8
321  olen减等于8
327  退出
328  :op恒等于OP_ZEROS
329  如果8大于olen则返回:负ENOSPC
332  memset(out, 0, 8)
333  out加等于8
334  olen减等于8
339  退出
341  ret等于next_bits( & p, & bytes, SHORT_DATA_BITS)
342  如果ret则返回:ret
345  如果非bytesbytes大于SHORT_DATA_BITS_MAX则返回:负EINVAL
348 bytes自减大于0循环
349  ret等于next_bits( & p, & tmp, 8)
350  如果ret则返回:ret
352  out等于tmp
353  out自加
354  olen自减
360  退出
361  :op恒等于OP_END
365  退出
366  默认
367  ret等于do_op( & p, op)
368  如果ret则返回:ret
370  退出
372 op不等于OP_END循环
378  ret等于next_bits( & p, & crc, CRC_BITS)
379  如果ret则返回:ret
385  如果crc不等于crc32_be(0, out, total - olen)则
386  pr_debug("CRC mismatch for decompression\n")
387  返回:负EINVAL
390  如果此条件成立可能性小(为编译器优化)((total - olen) > UINT_MAX)则返回:负ENOSPC
393  olen等于totalolen
395  返回:0