函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:add_template

函数原型:static int add_template(struct sw842_param *p, u8 c)

返回类型:int

参数:

类型参数名称
struct sw842_param *p
u8c
224  b等于0
225  t等于comp_ops[c]
226  bool inv = false
228  如果c大于等于he max of the regular templates - not including the special templates 则返回:负EINVAL
231  pr_debug("template %x\n", t[4])
233  ret等于add_bits(p, t[4], additional bits of each op param )
234  如果ret则返回:ret
237 i小于4循环
238  pr_debug("op %x\n", t[i])
241  : & == OP_AMOUNT_8
242  如果binv = true
244  否则如果t[i]按位与OP_ACTION_INDEXret等于add_bits(p, index8[0], I8_BITS)
246  否则如果t[i]按位与OP_ACTION_DATAret等于add_bits(p, data8[0], 64)
248  否则inv = true
250  退出
251  : & == OP_AMOUNT_4
252  如果b恒等于2且t[i]按位与OP_ACTION_DATAret等于add_bits(p, get_input_data(p, 2, 32), 32)
254  否则如果b不等于0且b不等于4则inv = true
256  否则如果t[i]按位与OP_ACTION_INDEXret等于add_bits(p, index4[b >> 2], I4_BITS)
258  否则如果t[i]按位与OP_ACTION_DATAret等于add_bits(p, data4[b >> 2], 32)
260  否则inv = true
262  退出
263  : & == OP_AMOUNT_2
264  如果b不等于0且b不等于2且b不等于4且b不等于6则inv = true
266  如果t[i]按位与OP_ACTION_INDEXret等于add_bits(p, index2[b >> 1], I2_BITS)
268  否则如果t[i]按位与OP_ACTION_DATAret等于add_bits(p, data2[b >> 1], 16)
270  否则inv = true
272  退出
273  : & == OP_AMOUNT_0
274  inv等于b不等于8或非t[i]按位与OP_ACTION_NOOP的值
275  退出
276  默认
277  inv = true
278  退出
281  如果ret则返回:ret
284  如果inv
285  打印错误信息("Invalid templ %x op %d : %x %x %x %x\n", c, i, t[0], t[1], t[2], t[3])
287  返回:负EINVAL
290  b加等于t[i]按位与OP_AMOUNT
293  如果b不等于8则
294  打印错误信息("Invalid template %x len %x : %x %x %x %x\n", c, b, t[0], t[1], t[2], t[3])
296  返回:负EINVAL
299  如果sw842_template_countsatomic_inc( & template_count[t[4]])
302  返回:0
调用者
名称描述
process_nextd the next template to use, and add it* the p->dataN fields must already be set for the current 8 byte block