函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:lzo1x_decompress_safe

函数原型:int lzo1x_decompress_safe(const unsigned char *in, size_t in_len, unsigned char *out, size_t *out_len)

返回类型:int

参数:

类型参数名称
const unsigned char *in
size_tin_len
unsigned char *out
size_t *out_len
45  state等于0
47  ip_end等于inin_len
48  op_end等于outout_len
52  op等于out
53  ip等于in
55  如果此条件成立可能性小(为编译器优化)(in_len < 3)则转到:input_overrun
58  如果此条件成立可能性大(为编译器优化)(in_len >= 5)且此条件成立可能性大(为编译器优化)( * ip == 17)则
59  bitstream_version等于ip[1]
60  ip加等于2
61  否则
62  bitstream_version等于0
65  如果ip大于17则
66  t = * ip++ - 17
67  如果t小于4则
68  next等于t
69  转到:match_next
71  转到:copy_literal_run
74  循环
75  t等于ip自加
76  如果t小于16则
120  否则如果state不等于4则
121  next等于t按位与3
122  m_pos等于op减1
123  m_pos减等于t右移2位
124  m_pos减等于ip自加左移2位
125  TEST_LB(m_pos)
126  NEED_OP(2)
127  op[0]等于m_pos[0]
128  op[1]等于m_pos[1]
129  op加等于2
130  转到:match_next
131  否则
132  next等于t按位与3
133  m_pos等于op减1加M2_MAX_OFFSET
134  m_pos减等于t右移2位
135  m_pos减等于ip自加左移2位
136  t等于3
138  否则如果t大于等于64则
139  next等于t按位与3
140  m_pos等于op减1
141  m_pos减等于t右移2位按位与7
142  m_pos减等于ip自加左移3位
143  t等于t右移5位的值减1加3减1
144  否则如果t大于等于32则
145  t等于t按位与31的值加3减1
162  m_pos等于op减1
163  next等于get_unaligned_le16(ip)
164  ip加等于2
165  m_pos减等于next右移2位
166  next与等于3
167  否则
168  NEED_IP(2)
169  next等于get_unaligned_le16(ip)
170  如果next按位与0xfffc的值恒等于0xfffc且t按位与0xf8的值恒等于0x18且此条件成立可能性大(为编译器优化)(bitstream_version)则
173  NEED_IP(3)
174  t与等于7
175  t或等于ip[2]左移3位
176  t加等于MIN_ZERO_RUN_LENGTH
177  NEED_OP(t)
178  memset(op, 0, t)
179  op加等于t
180  next与等于3
181  ip加等于3
182  转到:match_next
183  否则
184  m_pos等于op
185  m_pos减等于t按位与8的值左移11位
186  t等于t按位与7的值加3减1
204  ip加等于2
205  m_pos减等于next右移2位
206  next与等于3
207  如果m_pos恒等于op则转到:eof_found
209  m_pos减等于0x4000
212  TEST_LB(m_pos)
242  oe等于opt
243  NEED_OP(t)
244  op[0]等于m_pos[0]
245  op[1]等于m_pos[1]
246  op加等于2
247  m_pos加等于2
248  循环
249  op自加等于m_pos自加
250 op小于oe循环
252  match_next :
253  state等于next
254  t等于next
263  NEED_IP(t + 3)
264  NEED_OP(t)
265 t大于0循环
266  op自加等于ip自加
267  t自减
272  eof_found :
273  out_len等于opout
274  返回:如果如果如果t不等于3则LZO_E_ERROR否则ip恒等于ip_endReturn values (< 0 = Error)否则ip小于ip_endLZO_E_INPUT_NOT_CONSUMED否则LZO_E_INPUT_OVERRUN
278  input_overrun :
279  out_len等于opout
280  返回:LZO_E_INPUT_OVERRUN
282  output_overrun :
283  out_len等于opout
284  返回:LZO_E_OUTPUT_OVERRUN
286  lookbehind_overrun :
287  out_len等于opout
288  返回:LZO_E_LOOKBEHIND_OVERRUN
调用者
名称描述
unlzo
lzo_decompress_threadfnDeompression function that runs in its own thread.