函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:pio_data find_cpio_data - Search for files in an uncompressed cpio*@path: The directory to search for, including a slash at the end*@data: Pointer to the the cpio archive or a header inside*@len: Remaining length of the cpio based on data

函数原型:struct cpio_data find_cpio_data(const char *path, void *data, size_t len, long *nextoff)

返回类型:struct cpio_data

参数:

类型参数名称
const char *path
void *data
size_tlen
long *nextoff
62  cpio_header_len等于8乘C_NFIELDS减2
63  struct cpio_data cd = {NULL, 0, ""}
67  mypathsize等于strlen(path)
70  p等于data
72 len大于cpio_header_len循环
73  如果非p
75  p加等于4
76  len减等于4
77  继续下一循环
80  j等于6
81  chp等于ch
82 i循环
83  v等于0
84 j自减循环
85  v左移等于4位
86  c等于p自加
88  x等于c减'0'
89  如果x小于10则
90  v加等于x
91  继续下一循环
94  x等于c按位或0x20的值减'a'
95  如果x小于6则
96  v加等于x加10
97  继续下一循环
100  转到:quit
102  chp自加等于v
103  j等于8
106  如果ch[C_MAGIC]减0x070701大于1则转到:quit
109  len减等于cpio_header_len
111  dptr等于PTR_ALIGN(p + ch[C_NAMESIZE], 4)
112  nptr等于PTR_ALIGN(dptr + ch[C_FILESIZE], 4)
114  如果nptr大于plendptr小于pnptr小于dptr则转到:quit
117  如果ch[C_MODE]按位与0170000的值恒等于0100000且ch[C_NAMESIZE]大于等于mypathsize且非memcmp(p, path, mypathsize)则
121  如果nextoffnextoff等于nptrdata
124  如果ch[C_NAMESIZE]减mypathsize大于等于MAX_CPIO_FILE_NAME
125  打印警告信息("File %s exceeding MAX_CPIO_FILE_NAME [%d]\n", p, MAX_CPIO_FILE_NAME)
131  data等于dptr
132  size等于ch[C_FILESIZE]
133  返回:cd
135  len减等于nptrp
136  p等于nptr
139  quit :
140  返回:cd